Ambari 增長mongodb cluster

咱們先看一下mongodb cluster 生產上集羣架構,以下圖前端

Mongos:mongos的實例,客戶端直接鏈接mongos,由mongos把讀寫請求路由到指定的Shard上去。一個Sharding集羣,能夠有一個mongos,也能夠有多mongos以減輕客戶端請求的壓力。node

config server:保存集羣的元數據(metadata),包含各個Shard的路由規則。git

Shard:數據節點,能夠是單個實例,或者Replica setgithub

Replica Set:副本集,在生產環境下Shard是一個Replica Set,以防止該數據片的單點故障。mongodb

自動部署的難點:架構

  1. 如何自動進行副本配置
  2. 如何進行擴容

自動副本配置ssh

基本思路以下:component

前提:Replica Set 只包含三個節點,一主兩備server

將節點連成一個環,每一個節點啓動3個mongodb數據服務,分片M 包含的服務爲沿節點M開始尋找三個節點,端口號順序加1,這三個服務就是分片M包含的服務。xml

如上圖所示,3個節點,副本集以下:

Shard0:node0:port1,node1:port2,node2:port3

Shard1:node1:port1,node2:port2,node0:port3

Shard2:node2:port1,node0:port2,node1:port3

N個節點(N>=3,M爲某個分片,M<N),副本集以下:

ShardM:nodeM:port1,node(M+1)%N:port2, node(M+2)%N:port3

如何擴容

3個節點,分片以下

Shard0:node0:port1,node1:port2,node2:port3

Shard1:node1:port1,node2:port2,node0:port3

Shard2:node2:port1,node0:port2,node1:port3

 

新增節點node3,分片以下

Shard0:node0:port1,node1:port2,node2:port3

Shard1:node1:port1,node2:port2,node0:port3

Shard2:node2:port1,node3:port2,node0:port3

shard3:node3:port1,node0:port2,node2:port3

經過對比,咱們能夠發現

在原有分片上只有node0:port3,node3:port2,node0:port3發生變化,無論你新增多少節點,變化的只有這三個

如今擴容的方式,當前M個節點,保證shardM下,nodeM:port1數據可靠,對分片進行rs.reconfig

代碼結構

metainfo.xml
|_ configuration
|_mongodb.xml
|_ package
|_scripts
  Mongo_base.py
  Mongo_db.py
  Mongo_config.py
  Mongos.py
  Mongo_client.py
  params.py
|_templates
  Mongod_db.conf.j2
  Mongod_config.conf.j2

Metainfo.xml 定義stack 安裝的是mongodb,須要安裝的component是什麼

Mongo_base.py mongodb安裝,配置文件生成

Mongo_db.py mongdb數據服務管理,並完成分片命名,副本選擇,進行rs.initialte

Mongo_config.py config服務管理

Mongos.py mongos 服務管理,啓動服務進行sh.addShard

Mongo_client.py mongodb client

Configuration/mongodb.xml  mongodb前端配置參數,配置mongodb 數據文件存儲路徑,node_group  參數 節點分組狀況

Templates/*.conf.j2 mongodb配置文件模板

安裝嚮導

1. db cluster

Mongodb cluster架構

咱們先看一下mongodb cluster 生產上集羣架構,以下圖

mongodb-cluster

Mongos:mongos的實例,客戶端直接鏈接mongos,由mongos把讀寫請求路由到指定的Shard上去。一個Sharding集羣,能夠有一個mongos,也能夠有多mongos以減輕客戶端請求的壓力。

config server:保存集羣的元數據(metadata),包含各個Shard的路由規則。

Shard:數據節點,能夠是單個實例,或者Replica set

Replica Set:副本集,在生產環境下Shard是一個Replica Set,以防止該數據片的單點故障。

自動部署的難點:

  1. 如何自動進行副本配置
  2. 如何進行擴容

自動副本配置

auto-replica-set

基本思路以下:

前提:Replica Set 只包含三個節點,一主兩備

將節點連成一個環,每一個節點啓動3個mongodb數據服務,分片M 包含的服務爲沿節點M開始尋找三個節點,端口號順序加1,這三個服務就是分片M包含的服務。

如上圖所示,3個節點,副本集以下:

Shard0:node0:port1,node1:port2,node2:port3

Shard1:node1:port1,node2:port2,node0:port3

Shard2:node2:port1,node0:port2,node1:port3

N個節點(N>=3,M爲某個分片,M<N),副本集以下:

ShardM:nodeM:port1,node(M+1)%N:port2, node(M+2)%N:port3

如何擴容

3個節點,分片以下

Shard0:node0:port1,node1:port2,node2:port3

Shard1:node1:port1,node2:port2,node0:port3

Shard2:node2:port1,node0:port2,node1:port3

 

新增節點node3,分片以下

Shard0:node0:port1,node1:port2,node2:port3

Shard1:node1:port1,node2:port2,node0:port3

Shard2:node2:port1,node3:port2,node0:port3

shard3:node3:port1,node0:port2,node2:port3

經過對比,咱們能夠發現

在原有分片上只有node0:port3,node3:port2,node0:port3發生變化,無論你新增多少節點,變化的只有這三個

如今擴容的方式,當前M個節點,保證shardM下,nodeM:port1數據可靠,對分片進行rs.reconfig

代碼結構

metainfo.xml
|_ configuration
|_mongodb.xml
|_ package
|_scripts
  Mongo_base.py
  Mongo_db.py
  Mongo_config.py
  Mongos.py
  Mongo_client.py
  params.py
|_templates
  Mongod_db.conf.j2
  Mongod_config.conf.j2

Metainfo.xml 定義stack 安裝的是mongodb,須要安裝的component是什麼

Mongo_base.py mongodb安裝,配置文件生成

Mongo_db.py mongdb數據服務管理,並完成分片命名,副本選擇,進行rs.initialte

Mongo_config.py config服務管理

Mongos.py mongos 服務管理,啓動服務進行sh.addShard

Mongo_client.py mongodb client

Configuration/mongodb.xml  mongodb前端配置參數,配置mongodb 數據文件存儲路徑,node_group  參數 節點分組狀況

Templates/*.conf.j2 mongodb配置文件模板

安裝嚮導

 1. 進入dashboard

2. 點擊add service

 

ambari-add-service

3.進入Add Service Wizard界面,選擇mongodb

4. 自動跳過assign master 界面,切記不用點下一步

5. 配置 slaves and clients

6. 自定義配置文件,更改mongodb文件地址,若是不更改,按照默認/var/lib/mongodb

7. 回顧

8. 安裝成功

擴容

1.修改配置文件,增長node_group分組參數

      

 

2.增長節點

3.增長主機名,ssh private key

4.確認host,安裝ambari agent

5.配置slaves和clients,這裏先只增長數據節點

6.回顧

7.安裝過程

8.由於修改mongodb配置文件,須要重啓mongodb服務

9.安裝結果

單節點增長

修改config文件node_group字段,新增節點跟原來節點進行區分,以;分割

在新加節點上選擇Add

選擇mongodb

A3_host_add_service_select_mongodb

安裝mongodb 數據服務

重啓全部服務,將配置進行更新

重啓後結果

咱們博客地址:

http://www.bigdatalab.top/archives/180

代碼地址:

https://github.com/cas-bigdatalab/ambari-mongodb-cluster

相關文章
相關標籤/搜索