MongoDB集羣部署搭建(三)

MongoDB集羣部署搭建(二)

config server 集羣配置

根據之前的服務器規劃,需要在三臺機器上部署config server 副本集,首先在該三臺服務器上分別添加一下配置文件:

  vi /application/component/mongodb/conf/config.conf

加入以下內容:

# log日誌路徑
systemLog:
  destination: file
  logAppend: true
  path: /application/component/mongodb/config/logs/config.log

 # data目錄
storage:
  dbPath: /application/component/mongodb/config/data/
  journal:
    enabled: true

 # 運行pid文件
processManagement:
  fork: true
  pidFilePath: /application/component/mongodb/config/logs/configsrv.pid

 # network配置
net:
  port: 21000
  bindIp: 0.0.0.0

 # 集羣名稱
replication:
  replSetName: configs

 # 聲明集羣的配置數據服務
sharding:
  clusterRole: configsvr

保存並退出並啓動三臺服務器的config server:

mongod -f /application/component/mongodb/conf/config.conf

登錄任意一臺配置服務器(注意是配置端口),初始化配置副本集,輸入命令

mongo --port 21000

控制檯輸入並執行

#定義副本集配置(鍵“_id”對應的值必須與配置文件中的replicaction.replSetName一致)  
config = {
        _id : "configs",
        members : [
            {_id : 0, host : "192.168.0.120:21000" },
            {_id : 1, host : "192.168.0.121:21000" },
            {_id : 2, host : "192.168.0.122:21000" }
        ]
}

#初始化副本集
 rs.initiate(config)
#查看分區狀態
 rs.status();

輸出結果如下:

注:rs.initiate(config)初始化,若不成功的話,路由服務器與配置服務器連接不上。其中”_id”:”configs” 應與配置文件中配置的replicaction:replSetName一致,”members”中的”host”爲三個節點的ip和配置port。

shard server 分片服務器集羣配置

配置第一個分片副本集

根據服務器規劃:

192.168.0.120:27001 – 主節點

192.168.0.121:27001 – 副節點

192.168.0.122:27001 – 仲裁節點

 

192.168.0.120:27001 – 副節點

192.168.0.121:27001 – 仲裁節點

192.168.0.122:27001 – 主節點

 

192.168.0.120:27001 – 仲裁節點

192.168.0.121:27001 – 主節點

192.168.0.122:27001 – 副節點

三臺服務器上分別添加以下配置文件:

 進入配置文件:

vi /application/component/mongodb/conf/shard1.conf #分片配置文件

加入如下文件內容:

# where to write logging data.
systemLog:
    destination: file
    logAppend: true
    path: /application/component/mongodb/shard1/logs/shard1.log
# Where and how to store data.
storage:
    dbPath: /application/component/mongodb/shard1/data
    journal:
        enabled: true
# how the process runs
processManagement:
    fork: true
    pidFilePath: /application/component/mongodb/shard1/logs/shard1.pid
# network interfaces
    net:
    port: 27001
    bindIp: 0.0.0.0
# 副本集名稱
replication:
    replSetName: shard1
# 聲明這是一個集羣的分片服務;
sharding:
    clusterRole: shardsvr

啓動三臺服務器的shard1 server:

mongod -f /application/component/mongodb/conf/shard1.conf

登錄任意一臺服務器(注意是分片端口),初始化副本集。

mongo --port 27001

執行:

#定義副本集配置
config = {
       _id : "shard1",
        members : [
            {_id : 0, host : "192.168.0.120:27001", priority : 2 },
            {_id : 1, host : "192.168.0.121:27001", arbiterOnly :true },
            {_id : 2, host : "192.168.0.122:27001", priority : 1 }
        ]
}
#初始化副本集:
 rs.initiate(config)

如下結果:

#查看分區狀態:
 rs.status();

 

其他副本集都按照以上方式進行配置

第二個副本集在第二臺機器上執行,第三個副本集在第三個機器上執行

第二臺機器執行內容如下:

#定義副本集配置
config = {
       _id : "shard2",
        members : [
            {_id : 0, host : "192.168.0.120:27002", priority : 1 },
            {_id : 1, host : "192.168.0.121:27002", priority : 2 },
            {_id : 2, host : "192.168.0.122:27002", arbiterOnly :true }
        ]
}
#初始化副本集
rs.initiate(config)
#查看分區狀態
rs.status()

第三臺機器執行內容如下:

#定義副本集配置
config = {
       _id : "shard3",
        members : [
            {_id : 0, host : "192.168.0.120:27003", arbiterOnly :true },
            {_id : 1, host : "192.168.0.121:27003", priority : 1 },
            {_id : 2, host : "192.168.0.122:27003", priority : 2 }
        ]
}
#初始化副本集
rs.initiate(config)
#查看分區狀態
rs.status()

mongos server 路由服務器集羣配置

注意啓動mongodb時,需要先啓動配置服務器,再啓動分片服務器,最後啓動路由服務器。

根據服務器規劃,在每臺服務器都配置了mongos:

192.168.0.120: 20000 - mongos

192.168.0.121: 20000 - mongos

192.168.0.122: 20000 – mongos

三臺服務器上分別添加一下配置文件:

進入配置文件:

vi /application/component/mongodb/conf/mongos.conf

加入如下配置文件內容:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /application/component/mongodb/mongos/logs/mongos.log
# how the process runs
processManagement:
  fork: true
 # pidFilePath: /var/log/nginx/mongos.pid
 # network interfaces
net:
  port: 20000
  bindIp: 0.0.0.0
 #監聽的配置服務器,只能有1個或者3個,configs爲配置服務器的副本集名字,ip:configs配置服務器的端口
sharding:
  configDB: configs/192.168.0.120:21000,192.168.0.121:21000,192.168.0.122:21000

啓動三臺服務器的mongo server

mongos -f /application/component/mongodb/conf/mongos.conf

目前已經搭建好配置服務器、數據分片服務器、路由服務器,下面進行分片啓用,是的應用程序連接到路由服務器時可以使用分片機制。

串聯路由服務器與分配副本集

登錄任意一臺mongos

mongo --port 20000

使用admin 數據庫

 use admin

串聯路由服務器與分片副本集

#串聯路由服務器與分片副本集

sh.addShard("shard1/192.168.0.120:27001,192.168.0.121:27001,192.168.0.122:27001")

 #sh.addShard("shard2/192.168.0.120:27002,192.168.0.121:27002,192.168.0.122:27002")

 #sh.addShard("shard3/192.168.0.120:27003,192.168.0.121:27003,192.168.0.122:27003")

執行結果如下:

查看集羣狀態:

sh.status()

注:執行sh.status()命令可能報如下錯誤

解決方案:

給admin用戶賦予集羣管理的權限:

db.grantRolesToUser(“admin”,[“clusterAdmin”])

下一節:分片的使用 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章