總結:整理不易,如果對你有幫助,可否點贊關注一下?
一、部署背景
由於業務系統的特殊性,我們需要面向不同客户環境部署定製化的系統實例。作為基礎組件之一,MongoDB在各類客户現場需頻繁 部署高可用分片集羣。尤其在支持多種 CPU 架構 (如 x86_64 和 ARM64)的場景下,手動部署不僅效率低下,還容易引發配置不一致等問題。
當前我們已採用 MongoDB 7.0.22 容器化版本,具備良好的可移植性與環境隔離能力。為進一步提升運維效率、降低人為錯誤風險,有必要開發一套 自動化部署工具,專門用於快速、可靠地構建跨架構(x86_64 + ARM64)的 MongoDB 分片集羣,實現部署流程的標準化、批量化和可重複化。
|
CPU架構 |
docker版本 |
docker-compose版本 |
|
X86_64 |
26.1.3 |
v2.29.0 |
|
ARM64 |
26.1.3 |
v2.29.0 |
二、工具介紹
一鍵部署工具實現功能如下:
1、支持 ARM64與x86_64架構 CPU,確保在異構硬件環境下均可部署運行。
2、支持TLS/SSL全鏈路通信加密, SSL證書有效期為100年,降低證書維護頻率與部署複雜度。
3、支持單節點MongoDB實例部署,適用於開發、測試或輕量級應用場景。
4、支持在同一主機上部署完整的偽分佈式分片集羣,包含:1個Config Server副本集,2個Shard副本集,3個mongos路由節點,實現本地模擬生產環境架構。
5、支持跨主機的生產級分佈式部署,架構包括:1個高可用Config Server副本集,2個獨立Shard副本集,3個mongos路由節點(負載均衡),滿足高併發、高可用業務需求。
6、支持數據目錄、日誌目錄路徑、服務端口、最大併發連接數、管理賬號與密碼、副本集名稱等靈活配置。
7、支持數據目錄、日誌目錄及核心配置文件的持久化存儲。
8、支持集羣的創建、啓動、停止、卸載等完整生命週期操作,便於自動化運維與環境清理。
9、提供一鍵連接、一鍵備份、一鍵還原等便捷功能,提升運維效率,降低操作門檻。
如下圖所示:
説明:工具使用非常簡單,只需要修改變量文件,就可以快速幫你快速部署mongodb 7.0.22分片集羣。
三、工具下載
基於X86_64+ARM64架構CPU使用docker-compose一鍵離線部署mongodb 7.0.22容器版分片集羣工具
主控腳本部分內容如下:
四、部署步驟
説明:單機偽集羣是指在單主機部署mongodb分片集羣,分佈式集羣是指在多個不同主機上部署mongodb分片集羣,這裏部署的是多機分佈式分片集羣。
4.1、部署規劃
1、查看幫助命令
説明:這裏由於資源限制,使用4台服務器部署分片集羣。如果你的資源充足,建議每個實例使用單獨1台服務器部署。
|
宿主機IP |
操作系統 |
內核版本 |
節點説明 |
|
192.168.1.111 |
Ubuntu 22.04.4 LTS |
5.15.0-113-generic |
配置服務副本集(1primary+2secondary,共3個實例) |
|
192.168.1.112 |
Ubuntu 22.04.4 LTS |
5.15.0-113-generic |
分片1副本集(1primary+1secondary+1arbiter,共3個實例) |
|
192.168.1.113 |
Ubuntu 22.04.4 LTS |
5.15.0-113-generic |
分片2副本集(1primary+1secondary+1arbiter,共3個實例) |
|
192.168.1.114 |
Ubuntu 22.04.4 LTS |
5.15.0-113-generic |
路由節點(3個mongos實例) |
説明:部署順序必須為
1、配置節點 > 分片節點1 > 分片節點2 > 路由節點
2、配置節點順序為secondary2>secondary1>primary,分片節點順序為arbiter>secondary>primary,路由節點順序為route1>route2>route3
4.2、部署配置服務副本集
1、準備一鍵部署工具包
説明:將一鍵部署工具包分上傳到config-secondary2節點。
2、編輯變量文件
説明:分片集羣所有節點變量文件相同。
root@config:/data/pkgs/mongodb-shard-cluster# cp cluster.conf.tpl cluster.conf
root@config:/data/pkgs/mongodb-shard-cluster# vim cluster.conf
如下圖所示:
3、配置服務副本集部署(192.168.1.111)
root@config:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m config-secondary2
root@config:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m config-secondary1
root@config:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m config-primary
如下圖所示:
4.3、分發部署包
説明:部署完config-secondary2實例後,將部署包分別發送到其它實例節點主機。
root@config:/data/pkgs# scp -r mongodb-shard-cluster root@192.168.1.112:/data/pkgs
root@config:/data/pkgs# scp -r mongodb-shard-cluster root@192.168.1.113:/data/pkgs
root@config:/data/pkgs# scp -r mongodb-shard-cluster root@192.168.1.114:/data/pkgs
4.4、部署分片1副本集
1、分片1副本集部署(192.168.1.112)
root@shard2:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m shard1-arbiter
root@shard2:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m shard1-secondary
root@shard2:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m shard1-primary
如下圖所示:
4.5、部署分片2副本集
1、分片2副本集部署(192.168.1.113)
root@shard2:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m shard2-arbiter
root@shard2:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m shard2-secondary
root@shard2:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m shard2-primary
如下圖所示:
4.6、部署路由節點集羣
1、路由節點部署(192.168.1.114)
root@mongos:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m route1
root@mongos:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m route2
root@mongos:/data/pkgs/mongodb-shard-cluster# ./op.sh -a build -m route3
如下圖所示:
五、其它操作
5.1、啓動
説明:分別在對應主機節點上執行。
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m config-secondary2
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m config-secondary1
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m config-primary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m shard1-arbiter
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m shard1-secondary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m shard1-primary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m shard2-arbiter
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m shard2-secondary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m shard2-primary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m route1
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m route2
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a start -m route3
5.2、停止
説明:分別在對應主機節點上執行。
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m config-secondary2
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m config-secondary1
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m config-primary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m shard1-arbiter
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m shard1-secondary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m shard1-primary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m shard2-arbiter
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m shard2-secondary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m shard2-primary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m route1
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m route2
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a stop -m route3
5.3、檢查
説明:分別在對應主機節點上執行。
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m config-secondary2
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m config-secondary1
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m config-primary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m shard1-arbiter
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m shard1-secondary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m shard1-primary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m shard2-arbiter
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m shard2-secondary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m shard2-primary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m route1
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m route2
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a check -m route3
5.4、卸載
説明:分別在對應主機節點上執行。
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m config-secondary2
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m config-secondary1
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m config-primary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m shard1-arbiter
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m shard1-secondary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m shard1-primary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m shard2-arbiter
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m shard2-secondary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m shard2-primary
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m route1
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m route2
root@localhost:/data/pkgs/mongodb-shard-cluster# ./op.sh -a clear -m route3
5.5、連接
説明:分別在對應主機節點上執行。
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect config-secondary2
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect config-secondary1
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect config-primary
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect shard1-arbiter
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect shard1-secondary
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect shard1-primary
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect shard2-arbiter
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect shard2-secondary
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect shard2-primary
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect route1
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect route2
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_connect.sh connect route3
5.6、備份(支持單機和分片集羣模式)
説明:在route3節點上執行。
root@localhost:/data/pkgs/mongodb-shard-cluster# cd tools
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_backup.sh backup route3
注意:如果你想手動備份還原,建議參考《Linux運維總結:使用 MongoDB工具備份和恢復mongodb 7.0.14分片集羣(方案一)》。
5.7、還原(僅支持單機模式)
root@localhost:/data/pkgs/mongodb-shard-cluster# cd tools
root@localhost:/data/pkgs/mongodb-shard-cluster/tools# ./auto_backup.sh backup single
注意:由於分片集羣還原操作,比較複雜,建議參考《Linux運維總結:使用 MongoDB工具備份和恢復mongodb 7.0.14分片集羣(方案一)》。
總結:整理不易,如果對你有幫助,可否點贊關注一下?
更多詳細內容請參考:《Linux運維篇:Linux系統運維指南》