• MongoDB高可用集群+MMS集群监控搭建


    备注:

    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.201192.168.141.202192.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

  • 相关阅读:
    Spring Cloud中关于Feign的常见问题总结
    Qt 格式转换问题 记录(好多方法)
    Qt事件机制(是动作发生后,一种通知对象的消息,是被动与主动的总和。先处理自己队列中的消息,然后再处理系统消息队列中的消息)
    Delphi 禁用x64位系统文件重定向功能
    QList介绍(QList比QVector更快,这是由它们在内存中的存储方式决定的。QStringList是在QList的基础上针对字符串提供额外的函数。at()操作比操作符[]更快,因为它不需要深度复制)非常实用
    Qt 的几个核心机制总结之 布局(QWidget可以设置setSizePolicy,而QSizePolicy有Fixed,minimum,maximum,preferred,expanding,ignore等7个属性,还可以横竖分开)
    Dapper
    Yii2.0
    软件清单
    NET CORE 基础
  • 原文地址:https://www.cnblogs.com/wyt007/p/8919323.html
Copyright © 2020-2023  润新知