1嘉抒,服務(wù)器環(huán)境準(zhǔn)備
進(jìn)程 | IP地址 | 端口 |
---|---|---|
config server 配置服務(wù)器1(primary) | 139.196.240.226 | 28001 |
config server 配置服務(wù)器2(secondary) | 8.133.184.34 | 28001 |
config server 配置服務(wù)器3(secondary) | 139.224.244.2 | 28001 |
shard server1 主節(jié)點(diǎn) | 139.196.240.226 | 28011 |
shard server1 仲裁 | 8.133.184.34 | 28011 |
shard server1 副節(jié)點(diǎn) | 139.224.244.2 | 28011 |
shard server2 主節(jié)點(diǎn) | 139.196.240.226 | 28012 |
shard server2 仲裁 | 8.133.184.34 | 28012 |
shard server2 副節(jié)點(diǎn) | 139.224.244.2 | 28012 |
shard server3 主節(jié)點(diǎn) | 139.196.240.226 | 28013 |
shard server3 仲裁 | 8.133.184.34 | 28013 |
shard server3 副節(jié)點(diǎn) | 139.224.244.2 | 28013 |
路由服務(wù)器 | 139.196.240.226 | 28000 |
2碱茁,配置config server服務(wù)器
- 集群之間通信的安全認(rèn)證證書生成
- 在每臺(tái)機(jī)器的 /usr/local/mongodb 目錄下創(chuàng)建證書存放目錄:cert,如下:
cd /var/lib/mongo
mkdir cert
- 生成集群通信證書key文件mongokey寞蚌,并且將mongokey文件復(fù)制到每臺(tái)機(jī)器的 /usr/local/mongodb/cert 目錄下
隨便進(jìn)入一臺(tái)機(jī)器谷遂,通過openssl命令生成通信key慧瘤,key文件名字為:mongokey,如下:
cd /
openssl rand -base64 745 > /var/lib/mongo/cert/mongokey
cd /var/lib/mongo/cert/
ls
# 必須將mongokey文件賦權(quán)限
chmod -R 600 mongokey
- 維護(hù)好配置文件config.conf本橙,如下:
systemLog:
destination: file
path: /usr/local/monogodb/config/log/logs
logAppend: true
storage:
dbPath: /usr/local/mongodb/config/data
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /usr/local/mongodb/config/log/mongod.pid
timeZoneInfo: /usr/share/zoneinfo
net:
bindIp: 0.0.0.0
port: 28001
security:
#鏈接認(rèn)證扳躬,也就是賬號(hào)密碼
authorization: enabled
#集群內(nèi)部通信安全證書文件,每臺(tái)的證書必須一致
keyFile: /usr/local/mongodb/cert/mongokey
sharding:
clusterRole: configsvr
replication:
replSetName: configs
- 啟動(dòng)mongo服務(wù)
cd /usr/local/mongodb/config/mongdb-4.4.2/bin
./mongod -f /usr/local/mongodb/config/conf/config.conf --fork
- 連接登錄其中一個(gè)節(jié)點(diǎn)的mongo
cd /usr/local/mongodb/config/mongdb-4.4.2/bin
./mongo --port 28001
- 初始化副本集
> use admin
> config={_id:'configs',
configsvr:true,
members : [
{_id : 0, host : '139.224.244.2:28001' },
{_id : 1, host : '8.133.184.34:28001'},
{_id : 2, host : '139.196.240.226:28001' }
]}
> rs.initiate(config)
image.png
3,配置分片副本集
- 集群之間通信的安全認(rèn)證證書生成
操作如上贷币。
- 維護(hù)好配置文件config.conf击胜,如下:
systemLog:
destination: file
path: /usr/local/monogodb/shard1/log/logs
logAppend: true
storage:
dbPath: /usr/local/mongodb/shard1/data
journal:
enabled: true
processManagement:
fork: true
pidFilePath: /usr/local/mongodb/shard1/log/mongod.pid
timeZoneInfo: /usr/share/zoneinfo
net:
bindIp: 0.0.0.0
port: 28011
security:
#鏈接認(rèn)證,也就是賬號(hào)密碼
authorization: enabled
#集群內(nèi)部通信安全證書文件役纹,每臺(tái)的證書必須一致
keyFile: /usr/local/mongodb/cert/mongokey
sharding:
clusterRole: shardsvr
replication:
replSetName: shard1
- 啟動(dòng)mongo服務(wù)
cd /usr/local/mongodb/shard1/mongdb-4.4.2/bin
./mongod -f /usr/local/mongodb/shard1/conf/config.conf --fork
- 連接登錄其中一個(gè)節(jié)點(diǎn)的mongo
cd /usr/local/mongodb/shard1/mongdb-4.4.2/bin
./mongo --port 28011
- 初始化副本集
> use admin
> config={_id:'shard1',
members : [
{_id : 0, host : '139.224.244.2:28011' },
{_id : 1, host : '8.133.184.34:28011'},
{_id : 2, host : '139.196.240.226:28011' }
]}
> rs.initiate(config)
- 同樣的方法構(gòu)建副本集shard2和shard3
4偶摔,配置路由服務(wù)器mongos
- 在三臺(tái)服務(wù)器上安裝mongoDB
cd /usr/local
mkdir mongodb
cd mongodb
mkdir mongos
安裝mongoDB到config目錄下,安裝步驟參考MongoDB安裝手冊(cè)
- 集群之間通信的安全認(rèn)證證書生成
操作如上促脉。
- 維護(hù)好配置文件config.conf辰斋,如下:
systemLog:
destination: file
path: /usr/local/mongodb/mongos/log/logs
logAppend: true
processManagement:
fork: true
pidFilePath: /usr/local/mongodb/mongos/log/mongod.pid
timeZoneInfo: /usr/share/zoneinfo
net:
bindIp: 0.0.0.0
port: 28000
security:
#集群內(nèi)部通信安全證書文件,每臺(tái)的證書必須一致
keyFile: /usr/local/mongodb/cert/mongokey
sharding:
configDB: configs/139.224.244.2:28001,8.133.184.34:28001,139.19s6.240.22:28001
- 在其他節(jié)點(diǎn)創(chuàng)建賬戶認(rèn)證
> use admin
> db.createUser(
{
user:"username",
pwd:"password",
roles:[{role:"root",db:"admin"}]
}
)
- 啟動(dòng)mongo服務(wù)
cd /usr/local/mongodb/mongos/mongdb-4.4.2/bin
./mongos -f /usr/local/mongodb/mongos/conf/config.conf --fork
- 啟用分片
登錄mongos路由服務(wù)器
mongo --port 28000
#使用admin數(shù)據(jù)庫
use admin
#串聯(lián)路由服務(wù)器與分配副本集
sh.addShard("shard1/139.224.244.2:28011,8.133.184.34:28011,139.196.240.226:28011")
sh.addShard("shard2/139.224.244.2:28012,8.133.184.34:28012,139.196.240.226:28012")
sh.addShard("shard3/139.224.244.2:28013,8.133.184.34:28013,139.196.240.226:28013")
image.png
5瘸味,測(cè)試分片
- 激活數(shù)據(jù)庫分片功能
語法:( { enablesharding : "數(shù)據(jù)庫名稱" } )
mongos> db.runCommand( { enablesharding : "test" } )
- 指定分片建對(duì)集合分片宫仗,范圍片鍵--創(chuàng)建索引
mongos> use admin
# 根據(jù)指定索引分片
mongos> db.runCommand( { shardcollection : "test.vast",key : {id: 1} } )
or
# 根據(jù)hash分片
mongos> db.runCommand( { shardcollection : "test.vast",key : {id: "hashed“} } )
- 集合分片驗(yàn)證
mongos> use test
mongos> for(i=0;i<20000;i++){ db.vast.insert({"id":i,"name":"clsn","age":70,"date":new Date()}); }
mongos> db.vast.stats()
排除掉不重要的信息的測(cè)試結(jié)果
image.png