文档章节

Ambari 增加mongodb cluster

litterMo
 litterMo
发布于 2016/06/17 13:52
字数 1459
阅读 745
收藏 1

我们先看一下mongodb cluster 生产上集群架构,如下图

Mongos:mongos的实例,客户端直接连接mongos,由mongos把读写请求路由到指定的Shard上去。一个Sharding集群,可以有一个mongos,也可以有多mongos以减轻客户端请求的压力。

config server:保存集群的元数据(metadata),包含各个Shard的路由规则。

Shard:数据节点,可以是单个实例,或者Replica set

Replica Set:副本集,在生产环境下Shard是一个Replica Set,以防止该数据片的单点故障。

自动部署的难点:

  1. 如何自动进行副本配置
  2. 如何进行扩容

自动副本配置

基本思路如下:

前提: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. 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

© 著作权归作者所有

上一篇: Hive 常见问题
litterMo
粉丝 8
博文 47
码字总数 21427
作品 0
东城
程序员
私信 提问
Apache Ambari 2.4 发布,Hadoop 管理监控

Apache Ambari 2.4 发布了,Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的供应、管理和监控。Ambari目前已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Z...

开源中国股侠
2016/09/08
2.6K
0
Apache Ambari 1.7.0 Early Access 发布

Apache Ambari 1.7.0 Early Access 发布,Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的供应、管理和监控。Ambari目前已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、P...

oschina
2014/09/09
1K
0
Ambari在离线环境中安装Hadoop集群

(WJW)Ambari在离线环境中安装Hadoop集群 如果手工安装Hadoop集群,在管理和后继部署中,越来越多的问题不断出现,主要如下:+ 各集群节点的配置同步+ 新应用的部署:比如为集群添加hbase应用,...

白石
2015/10/26
1K
0
centos7.4配置ambari2.4.0.1+HDP-2.5.0.0

前言   由于项目需求,最近需要使用ambari配置hdp,因此在公司找了台搭建一套测试环境,测试环境运行在kvm虚拟机上,ambari版本和hdp版本没有采用最新版进行配置,为了快速进行配置,使用了...

sdhzdtwhm
2018/07/09
0
0
Spring Cloud Data Flow for Apache YARN 1.0.2 发布

Spring Cloud Data Flow for Apache YARN 1.0.2 发布了。 改进内容: Builds upon Spring Cloud Data Flow’s 1.0.1.RELEASE Support for Apache Ambari 2.4 Adds Apache Ambari installation......

达尔文
2016/09/23
734
0

没有更多内容

加载失败,请刷新页面

加载更多

从AnnotationTransactionAspect开始rushSpring事务

0. Spring 事务 with LTW 0.1. Spring 事务 With LTW的原因: Pure Proxy-base mode有缺陷,其失效原因分析及使用方法及运行机制(LoadTimeWeaverBeanDefinitionParser和 AspectJWeavingEnable......

Aruforce
11分钟前
2
0
mac 安装protobuf 2.5.0

下载安装包 目前protobuf的最新版本是3.9.1,但是hadoop等好多框架依然依赖的是2.5.0,因此,最好不要安装最新的。 https://github.com/protocolbuffers/protobuf/releases/tag/v2.5.0 编译安...

hexiaoming123
15分钟前
3
0
Qt编写自定义控件52-颜色下拉框

一、前言 这个控件写了很久了,元老级别的控件之一,开发之初主要是自己的好几个项目要用到,比如提供一个颜色下拉框设置对应的曲线或者时间颜色,视频监控项目中经常用到的OSD标签设置,这个...

飞扬青云
23分钟前
2
0
Shell脚本应用 – for、while循环语句

通过Shell脚本应用(二)学习到了if条件条件语句的使用方法等。Shell作为一种脚本编程语言,同样了包含了循环,分支等其他程序控制结构,从而能够轻松完成更加复杂、强大的功能。我们今天就来...

Linux就该这么学
28分钟前
3
0
Sqoop之导入到Hive时特殊字符导致数据变乱

问题是这样的: Sqoop从关系型数据库导入数据到Hive时,发现数据量增多了,查找之后发现是由于源数据中含义\r\t\n特殊字符的数据,这样Hive遇到之后就将其视为换行,所以导入到Hive后数据条数...

克虏伯
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部