安裝簡介
本文主要介紹了在Docker環境下如何安裝Mongo集群的過程,Mongo集群采用單分片三副本模式進行部署。
服務器:bigdata1、bigdata2、bigdata3
部署服務:config-server、shard-server、mongos
Docker鏡像:mongo:4.4.14
創建目錄
創建mongo配置文件目錄及數據存儲目錄。
mkdir /data/mongo-cluster cd /data/mongo-cluster/ | mkdir config-server shard-server mongos cd /data/mongo-cluster/config-server | mkdir data conf cd /data/mongo-cluster/shard-server | mkdir data conf cd /data/mongo-cluster/mongos | mkdir data conf
導入配置
(1)生成并配置認證文件:mongo.key
# 生成文件 openssl rand -base64 756 > /data/mongo-cluster/mongo.key chmod 400 /data/mongo-cluster/mongo.key # 復制文件到所有文件 cp /data/mongo-cluster/mongo.key /data/mongo-cluster/config-server/conf/ cp /data/mongo-cluster/mongo.key /data/mongo-cluster/mongos/conf/ cp /data/mongo-cluster/mongo.key /data/mongo-cluster/shard-server/conf/ rm -r /data/mongo-cluster/mongo.key
(2)在目錄 /data/mongo-cluster/config-server/conf 下創建文件 mongo.conf
vim /data/mongo-cluster/config-server/conf/mongo.conf # 日志文件 #systemLog: # destination: file # logAppend: true # path: /var/log/mongodb/data0802.log # 網絡設置 net: port: 27019 #端口號 # bindIp: 127.0.0.1 #綁定ip replication: replSetName: configsvr sharding: clusterRole: configsvr security: authorization: enabled #是否開啟認證 keyFile: /data/configdb/mongo.key #keyFile路徑
(3)在目錄 /data/mongo-cluster/mongos/conf 下創建文件 mongo.conf
vim /data/mongo-cluster/mongos/conf/mongo.conf net: port: 27017 #端口號 sharding: configDB: configsvr/bigdata1:27019,bigdata2:27019,bigdata3:27019 security: keyFile: /data/configdb/mongo.key #keyFile路徑
(4)在目錄 /data/mongo-cluster/config-server/conf 下創建文件 mongo.conf
vim /data/mongo-cluster/shard-server/conf/mongo.conf # 日志文件 #systemLog: # destination: file # logAppend: true # path: /var/log/mongodb/data0802.log # 網絡設置 net: port: 27018 #端口號 # bindIp: 127.0.0.1 #綁定ip replication: replSetName: shard1 sharding: clusterRole: shardsvr security: authorization: enabled #是否開啟認證 keyFile: /data/configdb/mongo.key #keyFile路徑
(5)將文件分發到各個節點
scp -r /data/mongo-cluster root@bigdata2:/data/ scp -r /data/mongo-cluster root@bigdata3:/data/
容器部署
在所有節點都執行以下操作。
(1)config-server
sudo docker run -d \ --name config-server \ --net=host \ --privileged=true \ --restart=always \ -v /data/mongo-cluster/config-server/conf:/data/configdb \ -v /data/mongo-cluster/config-server/data:/data/db \ -v /etc/hosts:/etc/hosts \ -e TZ=Asia/Shanghai \ mongo:4.4.14 -f /data/configdb/mongo.conf --bind_ip_all
(2)mongos
sudo docker run -d \ --name mongos \ --net=host \ --privileged=true \ --restart=always \ --entrypoint "mongos" \ -v /msun/data/mongo-cluster/mongos/conf:/data/configdb \ -v /msun/data/mongo-cluster/mongos/data:/data/db \ -v /etc/hosts:/etc/hosts \ mongo:4.4.14 -f /data/configdb/mongo.conf --bind_ip_all
(3)shard-server
sudo docker run -d \ --name shard-server \ --net=host \ --privileged=true \ --restart=always \ -v /data/mongo-cluster/shard-server/conf:/data/configdb \ -v /data/mongo-cluster/shard-server/data:/data/db \ -v /etc/hosts:/etc/hosts \ -e TZ=Asia/Shanghai \ mongo:4.4.14 -f /data/configdb/mongo.conf --bind_ip_all
初始化Mongo
在bigdata1節點上執行以下操作。
(1)初始化config-server
sudo docker exec -it config-server bash mongo -port 27019 # 進行副本集配置 rs.initiate( { _id: "configsvr", members: [ { _id : 1, host : "bigdata1:27019" }, { _id : 2, host : "bigdata2:27019" }, { _id : 3, host : "bigdata3:27019" } ] } ); # 創建用戶密碼 use admin db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]})
(2)初始化shard-serve
sudo docker exec -it shard-server bash mongo -port 27018 # 進行副本集配置 rs.initiate( { _id : "shard1", members: [ { _id : 0, host : "bigdata1:27018" }, { _id : 1, host : "bigdata2:27018" }, { _id : 2, host : "bigdata3:27018" } ] } ); use admin db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]})
(3)為分片添加副本并測試
sudo docker exec -it mongos bash mongo -port 27017 # 先登錄(使用前面設置的root用戶密碼) use admin; db.auth("root","root"); sh.addShard("shard1/bigdata1:27018,bigdata2:27018,bigdata3:27018") # 創建數據庫 use dw; # 為數據庫啟用分片 sh.enableSharding("dw"); # 為集合設置分片規則 sh.shardCollection("dw.test", { "_id": "hashed" }) # 數據驗證 for (i = 1; i <= 1000; i++) { db.getCollection("test").insert({'price': 1}) } # 查詢總數 db.getCollection("test").count()
浙公網安備 33010602011771號