Mongodb Ops Manager 及 Agents Docker鏡像製作


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.repomms4.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.properties192.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時,界面上自動生成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章