Openstack云平台脚本部署之MongoDB集群配置(四)

目录

一、概述

1、MongoDB简介

2、Replication集群

3、关于Ceilometer

二、安装脚本

三、参考文档

四、源码

五、系列文章


一、概述

1、MongoDB简介

MongoDB是一个开源的文档数据库,具备高性能、高可用和可扩展的能力。它在设计之初就是为了专门适应分布式系统集群的,传统的关系型数据库像MySQL就不能非常好地支持分布式存储。它可以从单服务器部署扩展到大型、复杂的多数据中心架构。利用内存计算的优势,MongoDB能够提供高性能的数据读写操作。MongoDB的本地复制和自动故障转移功能使应用程序具有企业级的可靠性和操作灵活性。

MongoDB中的记录是一个文档,其数据结构由键值对组成,类似于JSON数据对象,键的值可能包含其他文档、数组或其他文档的数组。例如,

利用文档的优势在于

  • 文档或对象在许多编程语言中与本地的数据类型相对应;
  • 文档或文档数组的嵌套能够减少开销巨大的Join操作;
  • 动态的数据模式平滑支持数据的多样性

MongoDB的特点

  • 高性能:通过支持数据模型嵌套减少数据库中的I/O,索引支持快速查询,可以从嵌套的文档和数组中提取Key;
  • 丰富的查询接口:支持数据聚合、文本搜索和地理空间的查询;
  • 高可用:MongoDB副本集replica set可以自动故障转移和数据冗余存储;
  • 水平扩展:集群中数据分片Sharding分布,基于shard key可以创建数据分区zones,在负载均衡中,MongoDB可以从zone中直接读和直接写。

2、Replication集群

MongoDB的replica set为一组mongod守护进程用来管理相同数据集,Replica sets可以在生产环境中提供冗余存储和高可用。在多个的数据库服务器上的多副本在一定程度上避免了单点故障。此外,副本也可以提高读数据的能力,这主要通过读写分离来实现。不同数据中心上的数据副本也可以为分布式应用提升数据的本地性和可用性。

Replica set包含多个数据接受节点和可选的仲裁节点(arbiter ),在数据接受节点中有且只有一个主节点(primary node),同时具备多个次节点( secondary nodes)。

主节点接受所有的写操作,并通过自己的数据操作日志记录数据集的所有变化,客户端可以通过读次节点的数据集提高数据读性能。次节点同步拷贝主节点的操作日志,并将数据操作应用到自身的数据集中。如果主节点变的不可用,将从剩余的次节点中选举出新的主节点,

所有节点之间都具备心跳检测机制,从而能够及时检测主节点的宕机

可以选择一个节点作为仲裁节点,该节点不管理数据集,主要用来通过心跳检测和选举请求来管理副本集的quorum,如果数据节点数据较多时,增加一个仲裁节点arbiter 非常有必要,淡然这个节点不需要专门的高配硬件。

说明:我们这里的MongoDB的高可用集群副本集采用“一主两副”的配置,没有配置仲裁节点。

3、关于Ceilometer

Ceilmeter,维基百科解释为云层高度仪,通过激光或其他光源来测量云层高度,现在选为Openstack云的计量服务组件的名称,真的非常形象!

Ceilmeter通过收集CPU、网络、磁盘等计量数据,为openstack的计费提供支撑。因为需要大量的写操作,MongoDB成为数据库的首选。尽管具备其他后端数据库的驱动,但MongoDB仍被认为是功能完备的数据库。一个具备两个副本集的部署架构如下,

二、安装脚本

我们在三个控制节点上安装MongoDB,然后配置“一主两副”的replica sets,安装脚本如下

(1)安装MongoDB脚本:install-configure-mongodb.sh

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

#!/bin/sh

. ../0-set-config.sh

./style/print-split.sh "MongoDB Installation"

mongo_replica_cfg=../conf/mongo_replica_setup.js

### 所有控制节点安装mongodb

./pssh-exe C "yum install -y mongodb-server mongodb"

./pssh-exe C "sed -i -e 's#.*bind_ip.*#bind_ip = 0.0.0.0#g' -e 's/.*replSet.*/replSet = ceilometer/g' -e 's/.*smallfiles.*/smallfiles = true/g' /etc/mongod.conf"

./pssh-exe C "systemctl start mongod && systemctl stop mongod"

### [controller01] 添加资源

pcs resource create mongod systemd:mongod op start timeout=300s --clone

### [controller01] 设置副本集,等待pcs启动所有节点上的mongod服务

. restart-pcs-cluster.sh

mongo $mongo_replica_cfg

### [controller01] 确认副本集状态

#mongo rs.status()

#mongo rs.conf()

(2)mongo集群副本集JS配置脚本:conf/mongo_replica_setup.js

1

2

3

config = { _id:"ceilometer", members: [{ _id: 0, host: "controller01:27017" }, { _id: 1, host: "controller02:27017" } , { _id: 2, host:

"controller03:27017" }]}

rs.initiate(config)

安装完成后,可以查看replica sets的状态:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

# mongo

ceilometer:SECONDARY> rs.status()

{

        "set" : "ceilometer",

        "date" : ISODate("2017-06-16T12:20:43Z"),

        "myState" : 2,

        "syncingTo" : "controller02:27017",

        "members" : [

                {

                        "_id" : 0,

                        "name" : "controller01:27017",

                        "health" : 1,

                        "state" : 2,

                        "stateStr" : "SECONDARY",

                        "uptime" : 38998,

                        "optime" : Timestamp(1497615396, 2),

                        "optimeDate" : ISODate("2017-06-16T12:16:36Z"),

                        "self" : true

                },

                {

                        "_id" : 1,

                        "name" : "controller02:27017",

                        "health" : 1,

                        "state" : 1,

                        "stateStr" : "PRIMARY",

                        "uptime" : 38998,

                        "optime" : Timestamp(1497615396, 2),

                        "optimeDate" : ISODate("2017-06-16T12:16:36Z"),

                        "lastHeartbeat" : ISODate("2017-06-16T12:20:42Z"),

                        "lastHeartbeatRecv" : ISODate("2017-06-16T12:20:41Z"),

                        "pingMs" : 0,

                        "electionTime" : Timestamp(1497576647, 1),

                        "electionDate" : ISODate("2017-06-16T01:30:47Z")

                },

                {

                        "_id" : 2,

                        "name" : "controller03:27017",

                        "health" : 1,

                        "state" : 2,

                        "stateStr" : "SECONDARY",

                        "uptime" : 38998,

                        "optime" : Timestamp(1497615396, 2),

                        "optimeDate" : ISODate("2017-06-16T12:16:36Z"),

                        "lastHeartbeat" : ISODate("2017-06-16T12:20:42Z"),

                        "lastHeartbeatRecv" : ISODate("2017-06-16T12:20:42Z"),

                        "pingMs" : 0,

                        "syncingTo" : "controller02:27017"

                }

        ],

        "ok" : 1

}

三、参考文档

What is MongoDB? — MongoDB Manual

Why we are using mongodb for ceilometer instead of mariadb ? | UnixGeek

四、源码

脚本源码:GitHub - zjmeixinyanzhi/Openstack-HA-Install-Shells: Shell scripts for installing openstack high availability cluster

五、系列文章

Openstack云平台脚本部署”系列文章目录如下:

Openstack云平台脚本部署之概述(零)

Openstack云平台脚本部署之基础环境配置(一)

Openstack云平台脚本部署之Galera高可用集群配置(二)

Openstack云平台脚本部署之RabbitMQ高可用集群部署(三)

Openstack云平台脚本部署之MongoDB配置(四)

Openstack云平台脚本部署之Memcached配置(五)

Openstack云平台脚本部署之Keystone认证服务配置(六)

Openstack云平台脚本部署之Glance镜像服务配置(七)

Openstack云平台脚本部署之Nova计算服务配置(八)

Openstack云平台脚本部署之Neutron网络服务配置(九)

Openstack云平台脚本部署之Dashboard配置(十)

Openstack云平台脚本部署之Cinder块存储服务配置(十一)

Openstack云平台脚本部署之Ceilometer数据收集服务配置(十二)

Openstack云平台脚本部署之Aodh告警服务配置(十三)

Openstack云平台脚本部署之Ceph存储集群配置(十四)

Openstack云平台脚本部署之计算节点服务配置(十五)

Openstack云平台脚本部署之增加计算节点配置(十六)

Openstack云平台脚本部署之测试验证(十七)

Openstack云平台脚本部署之Ganglia监控(十八)

Openstack云平台脚本部署之Nagios监控(十九)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值