备注:

mongodb学习资料 http://www.runoob.com/mongodb/mongodb-tutorial.html

一、 集群的三个组件:

  1. mongos(query routers):查询路由,负责client的连接,并把任务分配给shards,然后收集结果。
  2. config server:配置服务器,保存了集群的元数据信息,查询路由通过配置服务器的配置信息决定把任务分配+到哪个shards上。
  3. shards server:分片,存储数据和执行计算。

二、 集群架构图:

三、 集群的IP及端口规划:

服务 192.168.141.201 192.168.141.202 192.168.141.203
Router Mongos(17017) Mongos(17017)  
Config Config server1(27017) Config server2(27017) Config server3(27017)
  Shard1-主(37017) Shard2-主(47017) Shard3-主(57017)
Shard Shard2-从(47017) Shard1-从(37017) Shard1-从(37017)
  Shard3-从(57017) Shard3-从(57017) Shard2-从(47017)

四、 集群在LINUX上的目录规划:

五、 开始搭建集群:

1.下载软件:https://www.mongodb.com/download-center#community

这里用的版本是:mongodb-linux-x86_64-rhel62-3.2.10.tgz

2.创建目录:

mkdir -p /home/mongo/{config,router,shard}
mkdir -p /home/mongo/config/{data,logs}
mkdir -p /home/mongo/router/logs
mkdir -p /home/mongo/shard/{data,logs}
mkdir -p /home/mongo/shard/data/{shard1,shard2,shard3}

3.解压和复制:

解压文件,并将文件夹下的内容,分别复制到config/router/shard三个目录下面。

4.配置config server

1) 新建config实例启动所需的配置文件,并启动实例。【每台服务器顺序执行以下操作】

[root@mini1 ~]# cd /home/mongo/config/
[root@mini1 config]# vi mongo.config
dbpath=/home/mongo/config/data
logpath=/ home /mongo/config/logs/mongo.log
port=27017
logappend=true
fork=true
quiet=true
journal=true
configsvr=true
replSet=configRS/192.168.141.201:27017,192.168.141.202:27017,192.168.141.203:27017
##启动实例(服务端)
[root@mini1 bin]# cd /home /mongo/config/bin/
[root@mini1 bin]# ./mongod /home/mongo/config/mongo.config

2) 初始化config server。任意进入一台服务器,配置config server的副本集

[root@mini1 bin]# ./mongo –port 27017
rs.initiate({_id:”configRS”,configsvr:true,members:[{_id:1,host:”192.168.141.201:27017”,priority:2},{_id:2,host:”192.168.141.202:27017”},{_id:3,host:”192.168.141.203:27017”}]})
{ “ok” : 1 }
注:可用rs.status()查看副本集的状态

5.启动mongos server(路由服务)

[root@mini1 /]# cd /home/mongo/router/bin/
[root@mini1 bin]# ./mongos –configdb configRS/192.168.141.201:27017,192.168.141.202:27017,192.168.141.203:27017 –port 17017 –fork –logpath=/home/mongo/router/logs/mongos.log

6.配置shard server(分片服务)

1) 新建config实例启动所需的配置文件,并启动实例。每台服务器顺序执行以下操作

[root@mini1 ~]# cd /home/mongo/shard/
[root@mini1 shard]# vi shard1.config
dbpath=/ home /mongo/shard/data/shard1
logpath=/ home /mongo/shard/logs/shard1.log
port=37017
logappend=true
fork=true
quiet=true
journal=true
shardsvr=true
replSet= shard1RS/192.168.141.201:37017,192.168.141.202:37017,192.168.141.203:37017

[root@mini1 shard]# vi shard2.config
dbpath=/home/mongo/ shard /data/ shard2
logpath=/ home /mongo/ shard /logs/ shard2.log
port=47017
logappend=true
fork=true
quiet=true
journal=true
shardsvr =true
replSet= shard2RS/192.168.141.201:47017,192.168.141.202:47017,192.168.141.203:47017

[root@mini1 shard]# vi shard3.config
dbpath=/home/mongo/ shard /data/ shard3
logpath=/ home /mongo/ shard /logs/ shard3.log
port=57017
logappend=true
fork=true
quiet=true
journal=true
shardsvr =true
replSet= shard3RS/192.168.141.201:57017,192.168.141.202:57017,192.168.141.203:57017

##启动实例(服务端)第一台服务器先启动shard1,然后去第二台服务器启动shard2,再去第三台服务器启动shard3。 启动完后,每个服务器再去启动剩下的2个实例。
[root@mini1 /]# cd /home/mongo/shard/bin/
[root@mini1 bin]# ./mongod -f /home/mongo/shard/shard1.config
[root@mini1 bin]# ./mongod -f /home/mongo/shard/shard2.config
[root@mini1 bin]# ./mongod -f /home/mongo/shard/shard3.config

2) 初始化shard server。任意进入一台服务器,配置每个shard的副本集

[root@mini1 bin]# ./mongo 192.168.141.201:37017
>rs.initiate({_id:"shard1RS",members:[{_id:1,host:"192.168.141.201:37017",priority:2},{_id:2,host:"192.168.141.202:37017"},{_id:3,host:"192.168.141.203:37017"}]})
{ "ok" : 1 } [root@mini1 bin]# ./mongo 192.168.141.201:47017
>rs.initiate({_id:"shard2RS",members:[{_id:1,host:"192.168.141.202:47017",priority:2},{_id:2,host:"192.168.141.201:47017"},{_id:3,host:"192.168.141.203:47017"}]})
{ "ok" : 1 } [root@mini1 bin]# ./mongo 192.168.141.201:57017
>rs.initiate({_id:"shard3RS",members:[{_id:1,host:"192.168.141.203:57017",priority:2},{_id:2,host:"192.168.141.201:57017"},{_id:3,host:"192.168.141.202:57017"}]})
{ "ok" : 1 }

7.配置分片

[root@mini1 /]# cd /home/mongo/router/bin/
[root@mini1 bin]# ./mongo --port 17017
>use admin
>db.runCommand({"addShard":"shard1RS/192.168.141.201:37017" ,"maxsize":1024})
>db.runCommand({"addShard":"shard2RS/192.168.141.202:47017" ,"maxsize":1024})
>db.runCommand({"addShard":"shard3RS/192.168.141.203:57017" ,"maxsize":1024})
注:可用命令db.runCommand({listshards:1}) 查看分片的状态信息

8.使用

在使用的时候,需要对数据库开启分片功能,并对数据库下的表的字段指定分片算法。
>use admin
--对库hdctest开启分片
>db.runCommand({"enablesharding":"hdctest"})
--对库hdctest下的表person按字段ID配置hash分库算法
>db.runCommand({"shardcollection":"hdctest.person","key":{_id:'hashed'}})

9.其他注意

在登陆从库查看数据信息的时候,会报一个错误,如下图:

解决办法:执行命令db.getMongo().setSlaveOk()后,即可。

六、集群监控(mongodb-mms)

MongoDB的管理服务(MMS)是用于监控和备份MongoDB的基础设施服务,提供实时的报告,可视化,警报,硬件指标,并以直观的Web仪表盘展现数据。只需要安装上一个轻量级的监控代理,来收集mongodb运行信息并传回给MMS。MMS用户界面允许用户查看可视化的数据和设置警报。其中监控的服务是免费的,备份的服务是需要收费的。

1.分配一台符合MMS硬件要求的服务器.

MMS支持以下64位Linux发行版本:CentOS 5 or later,Red Hat Enterprise Linux 5, or later,SUSE 11 or Later,Amazon Linux AMI (latest version only,)Ubuntu 12.04 or later.

2.安装一个单独的mongodb复本集作为MMS应用数据库。(此步骤略)

后端mongodb数据库是单独的:MongoDB2.4.9或更高版本;后端mongodb数据库是复本集和分片集群必须运行MongoDB2.4.3或更高版本,官方建议是使用复制集。

3.安装SMTP邮件服务器

MMS依赖SMTP服务,是以电子邮件作为用户的,需要根据MMS服务器回复的邮件来进行用户注册和密码设置的,报警信息也是通过邮件来发送的。可以不用配置SMTP服务器,用第三方的即可。

4. 安装MMS应用程序包

https://www.mongodb.com/download-center#ops-manager

5. 配置MMS服务的URL、电子邮件、mongo URI连接串

修改/mms/conf/conf-mms.properties文件,以下参数必须设置:
## MMS的监控服务,完整的URL
mms.centralUrl=http://mini1:8080
## MMS备份服务的用户名和端口
mms.backupCentralUrl=http://mini1:8081
##发送一般的电子邮件
mms.fromEmailAddr=
## 发送回复到一般的电子邮件
mms.replyToEmailAddr=
## 从MMS管理员发送消息
mms.adminFromEmailAddr=
## 发送信息或回复到MMS管理员
mms.adminEmailAddr=
## 发送退回邮件
mms.bounceEmailAddr=
## MMS连接mongodb服务器的连接串,即MMS应用程序数据库
mongo.mongoUri
## 如果mongo.mongoUri使用的是复制集,需要指定复制集的名称
mongo.replicaSet

6.启动MMS服务

启动mongodb-mms服务:mongodb-mms start

至此,mms 的监控功能就安装好了。

7.访问http://mini1:8080来进行管理。

8.把已有的集群部署到MMS上。

9.部署完成后,即可看到整个集群的运行状况。

转自:https://blog.csdn.net/silentwolfyh/article/details/54136867

MongoDB高可用集群+MMS集群监控搭建的更多相关文章

  1. MongoDB 高可用集群副本集+分片搭建

    MongoDB 高可用集群搭建 一.架构概况 192.168.150.129192.168.150.130192.168.150.131 参考文档:https://www.cnblogs.com/va ...

  2. MongoDB高可用集群搭建(主从、分片、路由、安全验证)

    目录 一.环境准备 1.部署图 2.模块介绍 3.服务器准备 二.环境变量 1.准备三台集群 2.安装解压 3.配置环境变量 三.集群搭建 1.新建配置目录 2.修改配置文件 3.分发其他节点 4.批 ...

  3. MongoDB 高可用集群架构简介

    在大数据的时代,传统的关系型数据库要能更高的服务必须要解决高并发读写.海量数据高效存储.高可扩展性和高可用性这些难题.不过就是因为这些问题Nosql诞生了. 转载自严澜的博文——<如何搭建高效的 ...

  4. Corosync+Pacemaker+DRBD+MySQL 实现高可用(HA)的MySQL集群

    大纲一.前言二.环境准备三.Corosync 安装与配置四.Pacemaker 安装与配置五.DRBD 安装与配置六.MySQL 安装与配置七.crmsh 资源管理 推荐阅读: Linux 高可用(H ...

  5. Linux 高可用(HA)集群之keepalived详解

    http://freeloda.blog.51cto.com/2033581/1280962 大纲 一.前言 二.Keepalived 详解 三.环境准备 四.LVS+Keepalived 实现高可用 ...

  6. 高可用,完全分布式Hadoop集群HDFS和MapReduce安装配置指南

    原文:http://my.oschina.net/wstone/blog/365010#OSC_h3_13 (WJW)高可用,完全分布式Hadoop集群HDFS和MapReduce安装配置指南 [X] ...

  7. MogoDB(6)--mongoDB高可用和4.0特性

    5.1.MongoDB 用户管理 1.用户管理1.1.添加用户为 testdb 添加 tom 用户 use testdb db.createUser({user:"tom",pwd ...

  8. MongoDB高可用集群配置的方案

    >>高可用集群的解决方案 高可用性即HA(High Availability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性. ...

  9. MongoDB高可用复制集分片集群搭建

    1     逻辑架构 1.1     逻辑架构图 1.2     组件说明 一.mongos(query routers):查询路由,负责client的连接,并把任务分给shards,然后收集结果.一 ...

随机推荐

  1. 第九周助教工作总结——NWNU李泓毅

    1.助教博客链接: https://www.cnblogs.com/NWNU-LHY/ 2.作业要求博客链接: https://www.cnblogs.com/nwnu-daizh/p/1072688 ...

  2. h3c acl配置一列

    acl number 3004 rule 0 permit ip source 10.2.1.4 0 rule 1 deny ip source 192.168.1.91 0 rule 2 deny ...

  3. mysql的like子句

    直接上例子 查询字段以 php 开头的信息. SELECT * FROM position WHERE name LIKE 'php%'; 查询字段包含 php 的信息. SELECT * FROM ...

  4. 探寻TP-Link路由器的登录验证

    提示:该案例仅供学习使用,切勿滥用!!! 查找路由器连接地址 查找ip $ ifconfig enp2s0: flags=<UP,BROADCAST,RUNNING,MULTICAST> ...

  5. Office Web addin 踩坑计:替换后台网站为MVC框架时遇到的问题

    Office Web Addin 模板程序的后台本质上是一个网站,你在调试的时候可以发现它的进程是一个32位的IE进程 所以可以把它替换成Asp.net的网站. 替换方法: 1.点击WordRevie ...

  6. repo跟svn的区别

    Git与SVN区别 Git和SVN正好相反,git提倡开发时拉分支,各干各的,相互独立,发版本时打标签:而svn呢,平时大家都在主干上干活,发版本时拉个分支,所以呢,svn经常会提交冲突,经常要合并代 ...

  7. bootstrap概述

    前面的话 Bootstrap是简单.灵活的用于搭建WEB页面的HTML.CSS.Javascript的工具集.Bootstrap基于HTML5和CSS3,具有漂亮的设计.友好的学习曲线.卓越的兼容性, ...

  8. c#图像处理入门(-bitmap类和图像像素值获取方法)

    c#图像处理入门 -bitmap类和图像像素值获取方法 一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义 ...

  9. 删除坏掉的 Active Directory Domain

    最近公司的某个 Domain Controller 报告可能由于长时间没在线,同步失败,然后用 Repldiag 工具清理 lingering objects 的过程中,该工具报告存在 serious ...

  10. python爬虫学习之Scrapy框架的工作原理

    一.Scrapy简介 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为了 页面抓取 (更确切来说, 网 ...