集群配置示例,免费试用MongoDB云数据库

图片 17

  众所周知,MongoDB包括社区版和企业版,但不止如此,MongoDB公司还有MongoDB
Atlas:Database as a Service.

  MongoDB Atlas delivers the world’s leading database for modern
applications as a fully automated cloud service with the operational
and security best practices built in. Easily deploy, operate, and
scale your databases across the leading cloud platforms.

Sharding cluster介绍

这是一种可以水平扩展的模式,在数据量很大时特给力,实际大规模应用一般会采用这种架构去构建monodb系统。

 要构建一个 MongoDB Sharding Cluster,需要三种角色:

Shard Server: mongod 实例,用于存储实际的数据块,实际生产环境中一个shard
server角色可由几台机器组个一个relica set承担,防止主机单点故障

Config Server: mongod 实例,存储了整个 Cluster Metadata,其中包括 chunk
信息。

Route Server: mongos
实例,前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用。

Sharding架构图:

图片 1

  MongoDB
Atlas提供的是云端的数据库服务,大家都知道,使用数据库很简单,但数据库的运维很麻烦:部署、容灾、备份、监控。云数据库使得开发者只需关注业务本身的开发,国内似乎也有阿里云数据库,但事实上有多少用户就不得而知了。不过。话说回来,数据这么敏感的东西也不能随便放,而且放在别处也怕丢失,比如前些天腾讯云“数据丢失”事件。

本例实际环境架构

本例架构示例图:

图片 2

  1. 分别在3台机器运行一个mongod实例(称为mongod shard11,mongod
    shard12,mongod shard13)组织replica set1,作为cluster的shard1
  2. 分别在3台机器运行一个mongod实例(称为mongod shard21,mongod
    shard22,mongod shard23)组织replica set2,作为cluster的shard2
  3. 每台机器运行一个mongod实例,作为3个config server
  4. 每台机器运行一个mongs进程,用于客户端连接
主机  IP 端口信息
Server1 10.1.1.1 mongod shard11:27017
mongod shard12:27018
mongod config1:20000
mongs1:30000
Server2 10.1.1.2 mongod shard12:27017
mongod shard22:27018
mongod config2:20000
mongs2:30000
Server3 10.1.1.3 mongod shard13:27017
mongod shard23:27018
mongod config3:20000
mongs3:30000

  但出于学习、尝试的目的,免费的云数据库还是很有吸引力的,对于MongoDB等分布式数据库,要搭建一个集群(sharded
cluster)是相对耗时耗力的,也许尝试一个新的feature只需5分钟,但环境搭建就得两小时。我之前也写过文章如何搭建sharded
cluster,不过是基于MongoDB3.0,存储引擎是MmapV1,感兴趣的朋友可以参考。在MongoDB3.6即以上,一些feature依赖sharding环境,且3.6的shard必须是replica
set,不能再是standalone mongod
instance,所以更加麻烦。本文记录了如何使用MongoDB Atlas云数据库。

软件准备

软件准备
1. 创建用户
groupadd -g 20001 mongodb
useradd -u 20001 -g mongodb mongodb
passwd mongodb

2. 安装monodb软件
su – mongodb
tar zxvf mongodb-linux-x86_64-1.6.2.tar
安装好后,目录结构如下:
$ tree mongodb-linux-x86_64-1.6.2
mongodb-linux-x86_64-1.6.2
|– GNU-AGPL-3.0
|– README
|– THIRD-PARTY-NOTICES
`– bin
    |– bsondump
    |– mongo
    |– mongod
    |– mongodump
    |– mongoexport
    |– mongofiles
    |– mongoimport
    |– mongorestore
    |– mongos
    |– mongosniff
    `– mongostat
1 directory, 14 files

3. 创建数据目录
根据本例sharding架构图所示,在各台sever上创建shard数据文件目录
Server1:
su – monodb
cd /home/monodb
mkdir -p data/shard11
mkdir -p data/shard21
Server2:
su – monodb
cd /home/monodb
mkdir -p data/shard11
mkdir -p data/shard22
Server3:
su – monodb
cd /home/monodb
mkdir -p data/shard13
mkdir -p data/shard23

  本文地址:

配置relica sets

1. 配置shard1所用到的replica sets:
Server1:
cd /home/mongodb/mongodb-linux-x86_64-1.6.2/bin
./mongod –shardsvr –replSet shard1 –port 27017 –dbpath
/home/mongodb/data/shard11 –oplogSize 100 –logpath
/home/mongodb/data/shard11.log –logappend –fork

Server2:
cd /home/mongodb/mongodb-linux-x86_64-1.6.2/bin
./mongod –shardsvr –replSet shard1 –port 27017 –dbpath
/home/mongodb/data/shard12 –oplogSize 100 –logpath
/home/mongodb/data/shard12.log –logappend –fork

Server3:
cd /home/mongodb/mongodb-linux-x86_64-1.6.2/bin
./mongod –shardsvr –replSet shard1 –port 27017 –dbpath
/home/mongodb/data/shard13 –oplogSize 100 –logpath
/home/mongodb/data/shard13.log –logappend –fork

初始化replica set
用mongo连接其中一个mongod,执行:
> config = {_id: ‘shard1′, members: [
                          {_id: 0, host: ‘10.1.1.1:27017’},
                          {_id: 1, host: ‘10.1.1.2:27017’},
                          {_id: 2, host: ‘10.1.1.3:27017’}]
           }

> rs.initiate(config);

同样方法,配置shard2用到的replica sets:
server1:
cd /home/mongodb/mongodb-linux-x86_64-1.6.2/bin
./mongod –shardsvr –replSet shard2 –port 27018 –dbpath
/home/mongodb/data/shard21 –oplogSize 100 –logpath
/home/mongodb/data/shard21.log –logappend –fork

server2:
cd /home/mongodb/mongodb-linux-x86_64-1.6.2/bin
./mongod –shardsvr –replSet shard2 –port 27018 –dbpath
/home/mongodb/data/shard22 –oplogSize 100 –logpath
/home/mongodb/data/shard22.log –logappend –fork

server3:
cd /home/mongodb/mongodb-linux-x86_64-1.6.2/bin
./mongod –shardsvr –replSet shard2 –port 27018 –dbpath
/home/mongodb/data/shard23 –oplogSize 100 –logpath
/home/mongodb/data/shard23.log –logappend –fork

初始化replica set
用mongo连接其中一个mongod,执行:
> config = {_id: ‘shard2′, members: [
                          {_id: 0, host: ‘10.1.1.1:27018’},
                          {_id: 1, host: ‘10.1.1.2:27018’},
                          {_id: 2, host: ‘10.1.1.3:27018’}]
           }

> rs.initiate(config);

到此就配置好了二个replica sets,也就是准备好了二个shards

图片 3

第一步:注册或登陆

  在MongoDB atlas首页,如果有账号,那就点击登陆。否则点击Get Started here
来注册,注册页面都是必填项:

  图片 4

第二步:创建新的Cluster

  登陆之后,如果尚未创建任何Cluster,那么会提示创建一个新的Cluster,如下所示:

  图片 5

  注意
只有M0是免费的,这个里面很多选项都是针对M0以上的,不过M0对于学习也足够了。下面是M0可以设置的选项:

  Cloud Provider & Region:集群部署的位置

  图片 6  

  选一个亚洲节点好了。

  Cluster Tier:服务套餐

  

    图片 7

  当然是M0啦,共享内存
CPU,512M存储也够了,M0包含一个3个节点组成的replica set。

  Additional settings 设置,不过M0没有啥可以设置的

    图片 8

  可以看到,默认是WT引擎,这也表明,MongoDB官方在慢慢放弃Mmapv1存储引擎,大多数新的feature都支持WT引擎。

 Cluster Name: 集群的名字

    图片 9

  点击Create Cluster 开始创建(可能还需要人机校验)

第三步: 创建用户,设置白名单 

  创建新的Cluster需要几分钟时间,在这个等待时间内,可以按提示创建user和设置白名单:

  图片 10

   为了方便访问,白名单IP就设置为0.0.0.0好了

  图片 11

  回到overview界面,集群创建好了,有一些基本的监控:Operation、
Connections、Logical Size

  图片 12

 第四步: 连接试用Cluster

  集群是有了,那怎么连接使用呢,最左边有很多按钮,可以每个点点看看。doc
是 atlas文档的链接,
support里面有文档介绍如何链接cluster。

  图片 13

   可以用mongoshell,也可以用mongo driver连接。这里用Mongo
shell试试

step4.1:获取连接URL

  在clusters这个view点击 CONNECT按钮,出现如下

  图片 14

    点击第一个,然后会提示,没有mongodb3.6的话就得装一个

  图片 15

     我本地有mongod3.6 那么点击第二项,这样会给出一个链接的url

    图片 16

step4.2: 用Mongoshell 连接

  使用mongo shell连接。mongo
“mongodb+srv://free-yc5um.mongodb.net/test” –username try

  如下所示:

 1 mongo "mongodb+srv://free-yc5um.mongodb.net/test" --username try
 2 MongoDB shell version v3.6.6
 3 Enter password:
 4 connecting to: mongodb+srv://free-yc5um.mongodb.net/test
 5 2018-08-10T13:51:29.072+0800 I NETWORK  [thread1] Starting new replica set monitor for free-shard-0/free-shard-00-00-yc5um.mongodb.net.:27017,free-shard-00-01-yc5um.mongodb.net.:27017,free-shard-00-02-yc5um.mongodb.net.:27017
 6 2018-08-10T13:51:30.389+0800 I NETWORK  [ReplicaSetMonitor-TaskExecutor-0] Successfully connected to free-shard-00-02-yc5um.mongodb.net.:27017 (1 connections now open to free-shard-00-02-yc5um.mongodb.net.:27017 with a 5 second timeout)
 7 2018-08-10T13:51:30.594+0800 I NETWORK  [thread1] Successfully connected to free-shard-00-00-yc5um.mongodb.net.:27017 (1 connections now open to free-shard-00-00-yc5um.mongodb.net.:27017 with a 5 second timeout)
 8 2018-08-10T13:51:30.811+0800 I NETWORK  [ReplicaSetMonitor-TaskExecutor-0] Successfully connected to free-shard-00-01-yc5um.mongodb.net:27017 (1 connections now open to free-shard-00-01-yc5um.mongodb.net:27017 with a 5 second timeout)
 9 2018-08-10T13:51:30.890+0800 I NETWORK  [ReplicaSetMonitor-TaskExecutor-0] changing hosts to free-shard-0/free-shard-00-00-yc5um.mongodb.net:27017,free-shard-00-01-yc5um.mongodb.net:27017,free-shard-00-02-yc5um.mongodb.net:27017 from free-shard-0/free-shard-00-00-yc5um.mongodb.net.:27017,free-shard-00-01-yc5um.mongodb.net.:27017,free-shard-00-02-yc5um.mongodb.net.:27017
10 2018-08-10T13:51:30.995+0800 I NETWORK  [thread1] Successfully connected to free-shard-00-01-yc5um.mongodb.net.:27017 (1 connections now open to free-shard-00-01-yc5um.mongodb.net.:27017 with a 5 second timeout)
11 2018-08-10T13:51:31.191+0800 I NETWORK  [ReplicaSetMonitor-TaskExecutor-0] Successfully connected to free-shard-00-02-yc5um.mongodb.net:27017 (1 connections now open to free-shard-00-02-yc5um.mongodb.net:27017 with a 5 second timeout)
12 2018-08-10T13:51:31.395+0800 I NETWORK  [thread1] Successfully connected to free-shard-00-00-yc5um.mongodb.net:27017 (1 connections now open to free-shard-00-00-yc5um.mongodb.net:27017 with a 5 second timeout)
13 MongoDB server version: 3.6.6
14 MongoDB Enterprise free-shard-0:PRIMARY> show dbs
15 admin  0.000GB
16 local  7.142GB

   回到MongoDB Atlas管理界面,可以看到,已经有连接了

  图片 17

  至此,就可以免费试用MongoDB3.6了。

references

 

Leave a Comment.