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

相关文章
相关标签/搜索