0 總體介紹
MongoDB Ops Manager(MMS)是一個官方提供的自動化監控和備份MongoDB基礎設施服務。其中監控服務是免費的,備份服務是收費的。
- 監控:Monitoring Agent提供關鍵數據庫和硬件指標的實時報告,可視化和警報
- 備份:Backup Agent提供MongoDB副本集和分片集羣的計劃快照和恢復時間點
1 準備工作
1.1 系統鏡像準備
系統鏡像準備,選擇centos6.10
版本的系統鏡像,centos7.x
的系統鏡像使用systemctl
命令有問題,問題解決參見https://hub.docker.com/r/centos/systemd。
docker pull centos:6.10
docker tag docker.io/centos:6.10 192.168.137.129/public/centos:6.10
1.2 MongoDB Ops Manager安裝包準備
MongoDB Ops Manager安裝包準備,https://www.mongodb.com/download-center/ops-manager,Versions選擇4.0.11(stable)
,Platforms選擇Red Hat + CentOS 6,7
,Packages選擇RPM
。並將安裝包放到192.168.137.129:/var/ftp/pub/mms4.0.12/
。
在192.168.137.129
啓動容器docker run -it --rm 192.168.137.129/public/centos:6.10 bash
,將MongoDB Ops Manager安裝包mongodb-mms-4.0.11.50485.20190502T1847Z-1.x86_64.rpm
拷貝至容器內,執行sudo rpm -ivh mongodb-mms-4.0.11.50485.20190502T1847Z-1.x86_64.rpm
,將容器內的/opt/mongodb/mms/agent
目錄拷貝出來,放置到192.168.137.129
主機的/var/ftp/pub/mms4.0.12/
目錄,並在該目錄執行createrepo ./
。
1.3 repo文件準備
編輯repo文件,centos6.10.repo
和mms4.0.12.repo
。在192.168.137.129
主機執行命令。
cat << EOF > /data/images/mongodb-monitor/manager/centos6.10.repo
[centos6.10]
name=centos6.10
baseurl=ftp://192.168.137.129/pub/centos6.10/
enabled=1
gpgcheck=0
EOF
cat << EOF > /data/images/mongodb-monitor/manager/mms4.0.12.repo
[mms4.0.12]
name=mms4.0.12
baseurl=ftp://192.168.137.129/pub/mms4.0.12/
enabled=1
gpgcheck=0
EOF
1.4 gen.key文件準備
gen.key是一個24字節的二進制文件,用於加密和解密Ops Manager的後備數據庫和用戶憑據。在192.168.137.129
主機執行命令。
openssl rand 24 > /data/images/mongodb-monitor/manager/gen.key
chmod 600 /data/images/mongodb-monitor/manager/gen.key
1.5 conf-mms.properties配置文件準備
從1.2步容器/opt/mongodb/mms/conf/
目錄中拷貝conf-mms.properties
到192.168.137.129
主機的/data/images/mongodb-monitor/manager/
目錄。編輯配置文件
mms.ignoreInitialUiSetup=true
mongo.mongoUri=mongodb://root:MMS_MONGO_PASSWD@MMS_MONGO_URI
mms.centralUrl=http://SERVER_IP:BASE_PORT
[email protected]
[email protected]
[email protected]
mms.mail.transport=smtp
mms.mail.hostname=stmp.mail.com
mms.mail.port=25
## default: 90s
#mms.monitoring.agent.session.timeoutMillis=90000
## 1: 55s 2: 27s 3: 18s 4: 14s default: 4
#mms.monitoring.agent.standbyCollectionFactor=4
#mms.https.ClientCertificateMode=none
#mms.emailDaoClass=com.xgen.svc.core.dao.email.JavaEmailDao
automation.versions.source=local
automation.versions.directory=/opt/mongodb/mms/mongodb-releases/
mongo.ssl=false
2 MongoDB Ops Manager鏡像製作
2.1 編寫docker-entrypoint.sh
在192.168.137.129
主機/data/images/mongodb-monitor/manager/
目錄下編寫docker-entrypoint.sh。
#!/bin/bash
serverip=$(ip addr|grep inet|grep 192.168.|grep -v inet6|awk '{print $2}'|cut -d/ -f1)
if [ "${serverip}" == "" ]; then
echo "network error !!!"
exit 1
else
SERVER_IP=${serverip}
fi
if [ "${MMS_BASE_PORT}" == "" -o "${MMS_MONGO_PASSWD}" == "" -o "${MMS_MONGO_URI}" == "" ]; then
echo "MMS_BASE_PORT && MMS_MONGO_PASSWD && MMS_MONGO_URI must be set !!!"
exit 1
fi
sed -i "/^BASE_PORT/cBASE_PORT=${MMS_BASE_PORT}" /opt/mongodb/mms/conf/mms.conf
sed -i "s/MMS_MONGO_PASSWD/${MMS_MONGO_PASSWD}/g" /opt/mongodb/mms/conf/conf-mms.properties
sed -i "s/MMS_MONGO_URI/${MMS_MONGO_URI}/g" /opt/mongodb/mms/conf/conf-mms.properties
sed -i "s/BASE_PORT/${MMS_BASE_PORT}/g" /opt/mongodb/mms/conf/conf-mms.properties
sed -i "s/SERVER_IP/${SERVER_IP}/g" /opt/mongodb/mms/conf/conf-mms.properties
service mongodb-mms start
tail -f /var/log/lastlog
2.2 編寫Dockerfile
在192.168.137.129
主機/data/images/mongodb-monitor/manager/
目錄下編寫Dockerfile。
FROM 192.168.137.129/public/centos:6.10
MAINTAINER JiangJamesL "[email protected]"
LABEL version="4.0.11" description="mongodb-mms-manager-4.0.11"
RUN rm -f /etc/yum.repos.d/CentOS-*.repo
COPY mms4.0.12.repo centos6.10.repo /etc/yum.repos.d/
RUN echo root:1w8*Caesy6^9gg5y | chpasswd && \
yum install -y initscripts mongodb-mms
COPY gen.key conf-mms.properties /opt/mongodb/mms/conf/
RUN cp -p /opt/mongodb/mms/conf/gen.key /etc/mongodb-mms/ && \
chown mongodb-mms:mongodb-mms /etc/mongodb-mms/gen.key
COPY docker-entrypoint.sh /
CMD ["/docker-entrypoint.sh"]
2.3 MongoDB Ops Manager鏡像製作
在192.168.137.129
主機/data/images/mongodb-monitor/manager/
目錄下執行命令。
docker build -t 192.168.137.129/common/mongodb-mms-manager:4.0.11-1.0.0 .
docker push 192.168.137.129/common/mongodb-mms-manager:4.0.11-1.0.0
2.4 鏡像測試
在192.168.137.129
主機執行命令,等待容器啓動後,使用瀏覽器訪問http://192.168.137.129:12345
查看MongoDB Ops Manager管理界面。
docker run -d --net=host -e MMS_BASE_PORT=12345 -e MMS_MONGO_PASSWD=4yKEYS4wdVya -e MMS_MONGO_URI=192.168.137.129:27007,192.168.137.130:27007,192.168.137.131:27007 192.168.137.129/common/mongodb-mms-manager:4.0.11-1.0.0
注:
- MMS_BASE_PORT:設置MongoDB Ops Manager管理界面訪問端口。
- MMS_MONGO_PASSWD:MongoDB Ops Manager需要使用的Mongodb集羣root密碼,如果需要使用加密串,可自行在
docker-entrypoint.sh
編寫加密解密腳本。- MMS_MONGO_URI:MongoDB Ops Manager需要使用的Mongodb集羣連接串。
3 MongoDB Ops Agent鏡像製作
3.1 編寫docker-entrypoint.sh
在192.168.137.129
主機/data/images/mongodb-monitor/agent/
目錄下編寫docker-entrypoint.sh。
#!/bin/bash
sed -i "/^mmsGroupId/cmmsGroupId=${MMS_GROUP_ID}" /etc/mongodb-mms/automation-agent.config
sed -i "/^mmsApiKey/cmmsApiKey=${MMS_API_KEY}" /etc/mongodb-mms/automation-agent.config
sed -i "/^mmsBaseUrl/cmmsBaseUrl=${MMS_BASE_URL}" /etc/mongodb-mms/automation-agent.config
service mongodb-mms-automation-agent start
tail -f /var/log/lastlog
3.2 編寫Dockerfile
在192.168.137.129
主機/data/images/mongodb-monitor/agent/
目錄下編寫Dockerfile。
FROM 192.168.137.129/public/centos:6.10
MAINTAINER JiangJamesL "[email protected]"
LABEL version="5.4.18" description="mongodb-mms-automation-agent-manager-5.4.18"
RUN rm -f /etc/yum.repos.d/CentOS-*.repo
COPY mms4.0.12.repo.repo centos6.10.repo /etc/yum.repos.d/
RUN echo root:1w8*Caesy6^9gg5y | chpasswd && \
yum install -y initscripts mongodb-mms-automation-agent-manager
COPY docker-entrypoint.sh /
CMD ["/docker-entrypoint.sh"]
3.3 MongoDB Ops Agent鏡像製作
在192.168.137.129
主機/data/images/mongodb-monitor/manager/
目錄下執行命令。
docker build -t 192.168.137.129/common/mongodb-mms-agent:5.4.18-1.0.0 .
docker push 192.168.137.129/common/mongodb-mms-agent:5.4.18-1.0.0
3.4 鏡像測試
在192.168.137.129
主機執行命令,等待容器啓動後,在MongoDB Ops Manager管理界面填寫被監控的Mongodb集羣信息。
docker run -d --net=host -e MMS_API_KEY=5cdd5bcead965c0091a2b3178409e0ef704c1a49741441f333a087d5 -e MMS_BASE_URL=http://192.168.137.129:12345 -e MMS_GROUP_ID=5cdd5b84ad965c0091a2b2a3 192.168.137.129/common/mongodb-mms-agent:5.4.18-1.0.0
注:
- MMS_API_KEY:MongoDB Ops Manager管理界面添加agent時,界面上使用
+Generate Key
計算。- MMS_BASE_URL:MongoDB Ops Manager URL。
- MMS_GROUP_ID:MongoDB Ops Manager管理界面添加agent時,界面上自動生成。