搭建MongoDB分片叢集

右介發表於2017-08-04

在部門伺服器搭建MongoDB分片叢集,記錄整個操作過程,朋友們也可以參考。

 

計劃如下:

用5臺機器搭建,IP分別為:192.168.58.5、192.168.58.6、192.168.58.8、192.168.58.9、192.168.58.10。分為兩個分片,每個分片下有一個primary,一個secondary,一個仲裁。在其中三臺啟動config server和mongos。

shard1:58.5、58.6、58.10(仲裁)

shard2:58.8、58.9、58.10(仲裁)

config server:58.5、58.8、58.10

mongos:58.5、58.8、58.10

 

 

實施如下:

1、所有機器建立mongodb資料夾

mkdir -p /opt/mongodb

cd  /opt/mongodb

 

2、所有機器下載mongodb的安裝程式包

wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.8.tgz

tar xvzf mongodb-linux-x86_64-2.4.8.tgz

 

3、分別在相應機器建立mongos 、config 、 shard1 、shard2目錄

#58.5、58.8、58.10建立mongos目錄
mkdir -p /opt/mongodb/mongos/log
#58.5、58.8、58.10建立config server 資料檔案存放目錄
mkdir -p /opt/mongodb/config/data
#58.5、58.8、58.10建立config server 日誌檔案存放目錄
mkdir -p /opt/mongodb/config/log
#58.5、58.6、58.10建立shard1 資料檔案存放目錄
mkdir -p /opt/mongodb/shard1/data
#58.5、58.6、58.10建立shard1 日誌檔案存放目錄
mkdir -p /opt/mongodb/shard1/log
#58.8、58.9、58.10建立shard2 資料檔案存放目錄
mkdir -p /opt/mongodb/shard2/data
#58.8、58.9、58.10建立shard2 日誌檔案存放目錄
mkdir -p /opt/mongodb/shard2/log
 
4、規劃元件對應的埠號,這個埠可以自由定義,在本文 mongos為 27017, config server 為 21000, shard1為 22001 , shard2為22002
 
5、58.5、58.8、58.10分別啟動配置伺服器
/opt/mongodb/mongodb-linux-x86_64-2.4.8/bin/mongod --configsvr --dbpath /opt/mongodb/config/data --port 21000 --logpath /opt/mongodb/config/log/config.log --fork
 
6、58.5、58.8、58.10分別啟動mongos伺服器
/opt/mongodb/mongodb-linux-x86_64-2.4.8/bin/mongos  --configdb 192.168.58.5:21000,192.168.58.8:21000,192.168.58.10:21000  --port 27017   --logpath  /opt/mongodb/mongos/log/mongos.log --fork
 
7、配置各個分片的副本集
#58.5、58.6、58.10分別設定分片1伺服器及副本集shard1
/opt/mongodb/mongodb-linux-x86_64-2.4.8/bin/mongod --shardsvr --replSet shard1 --port 22001 --dbpath /opt/mongodb/shard1/data  --logpath /opt/mongodb/shard1/log/shard1.log --fork
#58.8、58.9、58.10分別設定分片2伺服器及副本集shard2
/opt/mongodb/mongodb-linux-x86_64-2.4.8/bin/mongod --shardsvr --replSet shard2 --port 22002 --dbpath /opt/mongodb/shard2/data  --logpath /opt/mongodb/shard2/log/shard2.log --fork
 
8、分別對每個分片配置副本集

1)登陸192.168.58.5

#設定第一個分片副本集
/opt/mongodb/mongodb-linux-x86_64-2.4.8/bin/mongo  127.0.0.1:22001
#使用admin資料庫
use admin
#定義副本集配置
config = { _id:"shard1", members:[
                     {_id:0,host:"192.168.58.5:22001"},
                     {_id:1,host:"192.168.58.6:22001"},
                     {_id:2,host:"192.168.58.10:22001",arbiterOnly:true}
                ]
         }
#初始化副本集配置
rs.initiate(config);
2)登陸192.168.58.8
#設定第二個分片副本集
/opt/mongodb/mongodb-linux-x86_64-2.4.8/bin/mongo  127.0.0.1:22002
#使用admin資料庫
use admin
#定義副本集配置
config = { _id:"shard2", members:[
                     {_id:0,host:"192.168.58.8:22002"},
                     {_id:1,host:"192.168.58.9:22002"},
                     {_id:2,host:"192.168.58.10:22002",arbiterOnly:true}
                ]
         }
#初始化副本集配置
rs.initiate(config);
 
9、目前搭建了mongodb配置伺服器、路由伺服器,各個分片伺服器,不過應用程式連線到 mongos 路由伺服器並不能使用分片機制,還需要設定分片配置,讓分片生效
登陸192.168.58.10
#連線到mongos
/opt/mongodb/mongodb-linux-x86_64-2.4.8/bin/mongo  127.0.0.1:27017
#使用admin資料庫
use admin
#串聯路由伺服器與分配副本集1
db.runCommand( { addshard : "shard1/192.168.58.5:22001,192.168.58.6:22001,192.168.58.10:22001"});
#串聯路由伺服器與分配副本集2
db.runCommand( { addshard : "shard2/192.168.58.8:22002,192.168.58.9:22002,192.168.58.10:22002"});
#檢視分片伺服器的配置
db.runCommand( { listshards : 1 } );
 
10、完成

 

相關文章