1. 程式人生 > >Mongodb3.4.7搭建高可用集群(二)

Mongodb3.4.7搭建高可用集群(二)

cto logs ica sta ready 部署 ... ima exiting

部署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搭建高可用集群(二)