前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mongodb副本集搭建

mongodb副本集搭建

原创
作者头像
shirley
修改2019-07-09 10:31:57
3.4K0
修改2019-07-09 10:31:57
举报
mongodb集群的副本集和sharding模式目前是用的最广的方案,通常这2种方案的选择通过数据量和并发数来权衡。在GB级别的基本上副本集方案可满足,TB级别或以上采用sharding模式,解决单机容量和单机并发能力。这两种既有自己的优势也有自己的缺点,比如sharding模式分片越多,性能自然下降越多。

摘自:Mongodb 集群keyFile认证

  • 环境、安装包版本
  • 一、安装、配置
  • 二、更改服务器节点
  • 三、mongodb.conf文件配置
  • 四、参考资料
mongodb 副本集理论请移步mongoDB复制(译 v4.0)
环境、安装包版本
操作系统:CentOS 7.2
MongoDB版本:4.0.10

安装软件包

安装 mongodb 的服务器

服务器端口地址

默认角色

10.13.8.232:27017

primary

10.5.101.8:27017

secondary

10.16.4.200:27110

arbiter

一、安装、配置
1. 分别在3台机器上都创建文件夹
# mkdir -p /data/mongodb/data
# mkdir -p /data/mongodb/log
# mkdir -p /data/mongodb/keyfile
2. 分别在3台机器上安装mongodb,安装目录统一为/usr/local/
1.去官网上下载mongodb 版本:
https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.10.tgz
2.分别上传到3台机器上,并解压,修改目录名,删除安装包:
[/usr/local/]$ tar -xzvf mongodb-linux-x86_64-rhel70-4.0.10.tgz
[/usr/local/]$ mv mongodb-linux-x86_64-rhel70-4.0.10 mongodb-4.0.10
[/usr/local/]$ rm -rf mongodb-linux-x86_64-rhel70-4.0.10.tgz
3. 分别在3台机器上上传同一份 mongodb.conf 文件,放在/usr/local/mongodb-4.0.10目录下(具体配置文件见文末)
/usr/local/mongodb-4.0.10/]$ mkdir conf
[/usr/local/mongodb-4.0.10/]$ cd conf
[/usr/local/mongodb-4.0.10/conf/]$ rz
4. 分别在3台机器上都启动mongodb,在路径/usr/local/mongodb-4.0.10/bin下启动
[/usr/local/mongodb-4.0.10/bin/]$ ./mongod -f /usr/local/mongodb-4.0.10/conf/mongodb.conf

可通过 ps -aux|grep mongo 或者 lsof -i:27017来查看是否启动成功

5. 进入其中一个节点(主节点)的mongo控制台, 配置集群(务必保证节点防火墙关闭或开放mongo服务端口)
[/usr/local/mongodb-4.0.10/bin/]$ ./mongo
// 下面配置中的_id:"mongors"要与mongodb.conf文件中的replSetName一致。priority 参数的值决定了选举中该节点的优先级。值越高,优先级越高
> config = { _id: "mongors", members: [
{_id: 0, host: "10.13.8.232:27017", priority:2},
{_id: 2, host: "10.5.101.8:27017", priority:1},
{_id: 1, host: "10.16.4.200:27110",arbiterOnly:true}]
}
 // 初始化副本集,配置成功:"ok" : 1
> rs.initiate(config)
 // 查看副本集状态,确认主节点
> rs.status()
// 查看副本同步状态
> db.printSlaveReplicationInfo()
6. 创建相关用户及权限,只在其中一个节点上(主节点)操作即可
//在主节点上
> use admin
> db.createUser({user: 'root', pwd: 'pwd', roles: ['root']})
> db.auth('root','pwd')
> use ApiHub
> db.createUser({user: 'test', pwd: 'testpwd', roles: ['readWrite']})
> db.auth('test', 'testpwd')

//查看创建的用户
> use admin
> db.system.users.find().pretty()
7. 关闭所有节点(先关闭仲裁和从节点, 再关闭主节点, 避免主节点切换)
> use admin
> db.shutdownServer()       #关闭mongo后台进程
8. 开启用户认证

(1)创建 keyfile 文件。在其中1台机器上执行以下命令生成 keyfile 文件(修改权限的chmod命令使用方法):

//生成key
[/usr/local/]$ openssl rand -base64 745 > /data/mongodb/keyfile/keyfile
[/usr/local/]$ chmod 600 /data/mongodb/keyfile/keyfile

(2)将这份keyfile文件拷贝到另外2台机器上的相同路径下:/data/mongodb/keyfile/。

(3)分别在三个节点的 mongod.conf 文件中添加以下配置:

security:
		keyFile: "/data/mongodb/keyfile/keyfile"
		authorization: enabled

(4)重新启动3个节点

./mongod -f /usr/local/mongodb-4.0.10/conf/mongodb.conf

(4)进行认证(因为已启用身份认证功能):

> use admin
> db.auth('root','pwd')
10. 副本集更改权重模拟主宕机,验证配置是否成功。

若验证主从节点切换成功,则配置 OK。

二、更改服务器节点

根据实际情况,需要将10.5.101.8:27017变成10.5.101.9:27017。

策略:先添加从节点再删除不再使用的从节点,避免出错。
1. 按“一、安装、配置”的方法在10.5.101.9上安装同一版本的 mongodb、创建相关文件夹、同步上面生成的 keyfile 和 mongodb.conf 文件,并用 mongod 命令启动数据库。
2. 在主节点(10.13.8.232)上进入数据库
[/usr/local/mongodb-4.0.10/bin]$ ./mongo
mongors:PRIMARY> use admin
mongors:PRIMARY> db.auth('root','pwd')
mongors:PRIMARY> rs.add("10.5.101.9:27017")
// 使用 rs.printReplicationInfo() 来确认复制集的oplog状态。
mongors:PRIMARY> rs.printReplicationInfo()
// 删除不再使用的从节点
mongors:PRIMARY> rs.remove("10.5.101.8:27017")
//使用rs.status()或者 rs.conf()来确认配置
3. 使用第二步中的第10点来验证节点变更是否成功。
三、mongodb.conf文件配置

mongodb配置字段说明

为了安全,bindIp需要配置具体的 ip,只允许特定 ip 接入,避免暴露在公网上。
systemLog:
   destination: file
   path: "/data/mongodb/log/mongodb.log"
   logAppend: true
storage:
   dbPath: "/data/mongodb/data/"
   journal:
      enabled: true
   wiredTiger:
      engineConfig:
         cacheSizeGB: 6
replication:
    oplogSizeMB: 10000
    replSetName: "mongors"
processManagement:
   fork: true
   pidFilePath: "/data/mongodb/mongodb.pid"
net:
   bindIp: 127.0.0.1,10.13.8.232,10.5.101.8,10.16.4.200
   port: 27017
setParameter:
   enableLocalhostAuthBypass: false
四、参考资料
  1. MongoDB 副本集部署-3.6版本
  2. Mongodb 集群keyFile认证
  3. CentOS7.4搭建基于用户认证的MongoDB4.0三节点副本集集群详细文档

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • mongodb集群的副本集和sharding模式目前是用的最广的方案,通常这2种方案的选择通过数据量和并发数来权衡。在GB级别的基本上副本集方案可满足,TB级别或以上采用sharding模式,解决单机容量和单机并发能力。这两种既有自己的优势也有自己的缺点,比如sharding模式分片越多,性能自然下降越多。
  • mongodb 副本集理论请移步mongoDB复制(译 v4.0)。
  • 环境、安装包版本
    • 操作系统:CentOS 7.2
      • MongoDB版本:4.0.10
        • 安装 mongodb 的服务器
        • 一、安装、配置
          • 1. 分别在3台机器上都创建文件夹
            • 2. 分别在3台机器上安装mongodb,安装目录统一为/usr/local/
              • 3. 分别在3台机器上上传同一份 mongodb.conf 文件,放在/usr/local/mongodb-4.0.10目录下(具体配置文件见文末)
                • 4. 分别在3台机器上都启动mongodb,在路径/usr/local/mongodb-4.0.10/bin下启动
                  • 5. 进入其中一个节点(主节点)的mongo控制台, 配置集群(务必保证节点防火墙关闭或开放mongo服务端口)
                    • 6. 创建相关用户及权限,只在其中一个节点上(主节点)操作即可
                      • 7. 关闭所有节点(先关闭仲裁和从节点, 再关闭主节点, 避免主节点切换)
                        • 8. 开启用户认证
                          • 10. 副本集更改权重模拟主宕机,验证配置是否成功。
                          • 二、更改服务器节点
                            • 策略:先添加从节点再删除不再使用的从节点,避免出错。
                              • 1. 按“一、安装、配置”的方法在10.5.101.9上安装同一版本的 mongodb、创建相关文件夹、同步上面生成的 keyfile 和 mongodb.conf 文件,并用 mongod 命令启动数据库。
                                • 2. 在主节点(10.13.8.232)上进入数据库
                                  • 3. 使用第二步中的第10点来验证节点变更是否成功。
                                  • 三、mongodb.conf文件配置
                                    • 为了安全,bindIp需要配置具体的 ip,只允许特定 ip 接入,避免暴露在公网上。
                                    • 四、参考资料
                                    相关产品与服务
                                    云数据库 MongoDB
                                    腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
                                    领券
                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档