如何搭建简单的MongoDB复制集群

2019-12-19  本文已影响0人  越大大雨天

生成共用keyfile文件

生成 keyfile文件到/var/mongodb/pki目录

# 生成目录
sudo mkdir -p /var/mongodb/pki
# 更该目录所有者为个人账户
sudo chown usename:username-R /var/mongodb
# 生成秘钥文件
openssl rand -base64 741 > /var/mongodb/pki/m103-keyfile
chmod 600 /var/mongodb/pki/m103-keyfile

创建集群配置文件

以三个服务的复制集群配置文件为例, 同时创建node1.conf、node2.conf、node3.conf,3个配置文件。三个配置文件只需要更改部分配置内容即可。
其中需要修改的配置有storage.dbpathnet.portsystemLog.path; 而replication.replSetName复制集名是需要一样的。

storage:
  dbPath: /var/mongodb/db/node1
net:
  bindIp: 192.168.103.100,localhost
  port: 27011
security:
  authorization: enabled
  keyFile: /var/mongodb/pki/m103-keyfile
systemLog:
  destination: file
  path: /var/mongodb/db/mongod1.log
  logAppend: true
processManagement:
  fork: true
replication:
  replSetName: m103-example
storage:
  dbPath: /var/mongodb/db/node2
net:
  bindIp: 192.168.103.100,localhost
  port: 27012
security:
  authorization: enabled
  keyFile: /var/mongodb/pki/m103-keyfile
systemLog:
  destination: file
  path: /var/mongodb/db/mongod2.log
  logAppend: true
processManagement:
  fork: true
replication:
  replSetName: m103-example
storage:
  dbPath: /var/mongodb/db/node3
net:
  bindIp: 192.168.103.100,localhost
  port: 27013
security:
  authorization: enabled
  keyFile: /var/mongodb/pki/m103-keyfile
systemLog:
  destination: file
  path: /var/mongodb/db/mongod3.log
  logAppend: true
processManagement:
  fork: true
replication:
  replSetName: m103-example

在启动mongod实例之前,要先创建配置文件中指定的dbpath目录:

mkdir /var/mongodb/db/{node1,node2,node3}

启动第一个实例添加必要配置

mongod -f node1.conf

由于配置文件中是以后台方式运行的,因此启动mongod服务后可在当前终端启动客户端:

mongo --port 27011
rs.initiate()

执行下面命令查看副本集状态,初始化完成后,你会看到shell中的提示符显示为了PRIMARY,即主节点:

rs.status()
# 切换到admin
use admin
# 创建root账户
db.createUser({
  user: "m103-admin",
  pwd: "m103-pass",
  roles: [
    {role: "root", db: "admin"}
  ]
})

使用认证客户端添加复制集成员

mongo --port 27011 -u m103-admin -p m103-pass --authenticationDatabase admin

再使用另外两个配置文件登陆其他两个节点,其他节点不再需要额外创建账号的操作:

mongo --port 27012
mongo --port 27013
rs.add("192.168.103.100:27012")
rs.add("192.168.103.100:27013")

由于使用的是vagrant虚拟环境,因此此处我的IP地址为192.168.103.100,填写自己实际的地址即可。
添加完成后使用rs.status()查看复制集状态,可以看到已经成功有了一个PRIMARY和两个SECONDARY了。
到此,一个简单的本地MONGODB高可用复制集就创建成功了

其他操作

rs.isMaster()
rs.stepDown()

降级后复制集将自动选举一个新的主节点并切换到该主节点位置上,可以再次使用rs.isMaster()查看当前复制集结构,可发现主节点已经变化,之前的PRIMARY变成了SECONDARY

以上。

上一篇 下一篇

猜你喜欢

热点阅读