Mongodb3.4.7搭建高可用集群(二)
部署Mongodb高可用集群
準備
按照官方說明,至少需要3個config server,2個mongos,2個shard,每個shard至少2個副本,就是4個shard,共需要9個Mongodb實例。這裏只虛擬出2個機器節點,將不同的Mongodb實例部署在不同的端口上模擬實現。
config server | leo.zhi.1:10010,leo.zhi.2:10010 |
mongos server | leo.zhi.1:10020,leo.zhi.2:10020 |
shard server | leo.zhi.1:10001,leo.zhi.2:10002 |
leo.zhi.1和leo.zhi.2上分別創建文件夾
[[email protected] mongodb]# mkdir -p config/data [[email protected] mongodb]# mkdir -p config/log [[email protected] mongodb]# mkdir -p mongos/log [[email protected] mongodb]# mkdir -p shard1/data [[email protected] mongodb]# mkdir -p shard1/log [[email protected] mongodb]# mkdir -p shard2/data [[email protected] mongodb]# mkdir -p shard2/log
其中data目錄存放數據,log目錄存放日誌
mongos服務不存放數據,所以不需要數據目錄,只需要log目錄
部署config server
Mongodb配置文件(采用YAML格式書寫)
systemLog:
destination: file
path: "/usr/local/mongodb/config/log/mongod.log"
logAppend: true
storage:
dbPath: "/usr/local/mongodb/config/data"
journal:
enabled: true
directoryPerDB: true
net:
port: 10010
processManagement:
fork: true
pidFilePath: "/usr/local/mongodb/config/mongod.pid"
sharding:
clusterRole: configsvr
replication:
replSetName: configReplSet
1. 在每臺服務器上分別啟Mongodb實例
[[email protected] mongodb]# mongod --config config/mongod.conf about to fork child process, waiting until server is ready for connections. forked process: 3293 child process started successfully, parent exiting
2. 隨便選個一個節點,登錄mongo,初始化config server 的 replica set
[[email protected] mongodb]# mongo --port 10010 > rs.initiate( { _id: "configReplSet", configsvr: true, members:[ {_id:0,host:"leo.zhi.1:10010"}, {_id:1,host:"leo.zhi.2:10010"}] } )
... configReplSet:OTHER> exit [[email protected] mongodb]# mongo --port 10010 configReplSet:PRIMARY>
部署shard1
Mongodb配置文件(采用YAML格式書寫)
systemLog:
destination: file
path: "/usr/local/mongodb/shard1/log/mongod.log"
logAppend: true
storage:
dbPath: "/usr/local/mongodb/shard1/data"
journal:
enabled: true
directoryPerDB: true
net:
port: 10001
processManagement:
fork: true
pidFilePath: "/usr/local/mongodb/shard1/mongod.pid"
sharding:
clusterRole: shardsvr
replication:
replSetName: shard1ReplSet
1. 在每個節點啟動shard1
[[email protected] mongodb]# mongod --config shard1/mongod.conf
2. 隨便選個一個節點,登錄mongo,初始化shard1 的 replica set
[[email protected] mongodb]# mongo --port 10001 > rs.initiate( { _id: "shard1ReplSet", members:[ {_id:0,host:"leo.zhi.1:10001"}, {_id:1,host:"leo.zhi.2:10002"}] } ) ... shard1ReplSet:OTHER> exit [[email protected] mongodb]# mongo --port 10001 shard1ReplSet:PRIMARY>
部署shard2
Mongodb配置文件(采用YAML格式書寫)
systemLog:
destination: file
path: "/usr/local/mongodb/shard2/log/mongod.log"
logAppend: true
storage:
dbPath: "/usr/local/mongodb/shard2/data"
journal:
enabled: true
directoryPerDB: true
net:
port: 10002
processManagement:
fork: true
pidFilePath: "/usr/local/mongodb/shard2/mongod.pid"
sharding:
clusterRole: shardsvr
replication:
replSetName: shard2ReplSet
其余操作步驟同部署shard1
部署mongos
Mongodb3.4.7搭建高可用集群(二)