美文网首页
如何搭建简单的MongoDB复制集群

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

作者: 越大大雨天 | 来源:发表于2019-12-19 21:13 被阅读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复制集名是需要一样的。

  • node1.conf
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
  • node2.conf
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
  • node3.conf
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
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"}
  ]
})

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

  • 重新使用身份认证登陆
    使用exit命令退出当前客户端,使用新建的管理员账号登陆mongo:
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

以上。

相关文章

网友评论

      本文标题:如何搭建简单的MongoDB复制集群

      本文链接:https://www.haomeiwen.com/subject/cdevnctx.html