MongoDB OPS Manager的搭建及使用
MongoDB OPS Manager 是用于管理MongoDB集群和部署的工具。 通过MMS可以大大简化MongDB的管理部署。
1. 机器
三台机器 (注意修改hosts)
- master
- node1
- node2
2. 安装前准备[ALL]
NUMA Settings
1 | sysctl -w vm.zone_reclaim_mode=0 |
NTP Settings
1 | sudo apt install -y ntp |
ulimt settings
1 | > ulimit -a |
追加
1 | mongod soft nproc 65535 |
Disable Transparent Huge Pages
1 | vim /etc/init.d/disable-transparent-hugepages |
添加如下脚本
1 |
|
验证(重启生效)
1 | cat /sys/kernel/mm/transparent_hugepage/enabled |
有以下输出表示正确
1 | always madvise [never] |
3. 安装MongoDB(每台机器上)
配置ReplicatSet副本
ReplicatSet结构如下
Primary Node将自己的数据同步到Secondary Node
一旦primary Node挂了,或者10s内无法取得Heartbeat,Secondary Node会选举新的Primary Node
[ALL]修改配置文件(最好自建)
1 | # 默认mongodb.conf在 /etc/mongodb.conf |
1 | # for documentation of all options, see: |
[ALL
]启动MongoDB
1 | mongod -f /home/cisdi/DBTEST/mongodb/mongod.conf |
配置方式
在任意一台机器上登录mongo
1 | # 我们选master |
1 | #Initiate the replica set |
Mongo打印如下的JSON表示副本集配置成功 (注意所有的节点都要health:1)
1 | { |
4. 安装OPS Manager[ONE]
Notice
最好是root安装,否则各种权限问题
- 建议用tgz包, 更容易管理
- 下载OPS Manager
修改OPS Manager 配置文件
1 | vi /root/mongodb-mms-3.4.5.424-1.x86_64/conf/conf-mms.properties |
修改 mongo.mongoUri
1 | mongo.mongoUri=mongodb://master:27018,node1:27018,node2:27018 |
启动 MMS
1 | ./root/mongodb-mms-3.4.5.424-1.x86_64/bin/mongodb-mms start |
MMS 网页: http://yourip:8080
需要先注册一个Admin用户
配置MongoDB集群
Cluster架构设计
下载相关版本的 MongoDB
为了加快集群的部署, 可以预先下载好所需的MongoDB安装包,并将其放置到目录/var/lib/mongodb-mms-automation/mongodb-linux-x86_64-x.x.x
例如:
1 | # 解压 |
新建Cluster
安装Ops Manager Agent (每一个子节点都要安装)
选择一个适当的版本下载, 然后根据教程修改相关的参数
配置Cluster
注意
:
- 选择的Version版本是自己放到 /var/lib/mongodb-mms-automation 的版本
配置完后点击apply,等待所有部署完成
5. 通过Mongos连接到集群
检查Mongos部署的位置和端口
连接命令
1 | mongo --host node1 --port 27017 |
1 | MongoDB shell version: 3.2.14 |
6. 可能遇到的Bug
Q1. MMS无法启动或者在MMS执行操作时,总是提示Another Session has published the deploy
可能原因:
- 管理MMS数据的 MongoDB ReplicatSet Primary Node挂了,而两个Secondary Node在选举的时候出现“间歇性切换”(由于Primary的数据没有Sync到所有的Secondary Node导致的从节点的数据不一致)。从而使导致MMS的Log和启动数据无法加载。
解决方法:
由于启动挂掉的Mongod节点需要做长时间的Rollback, 如果没有办法成功Rollback,直接舍弃掉挂掉的Node的数据(全部删除), 然后将其设置为Arbiter Node(仲裁节点,不参与数据存储,仅仅做选举投票使用)。
调整后的MongoDB ReplicateSet结构如下
1 | > rs.status() |
7. 参考文献
参考文档
https://docs.opsmanager.mongodb.com/current/core/installation-checklist/
https://docs.opsmanager.mongodb.com/current/core/requirements/#onprem-system-requirements
https://docs.mongodb.com/manual/administration/production-notes/
参考博客