能添加网站的导航,自建网站的步骤,泊头网站建设公司,品牌网站建设流程对负载均衡的集群监控#xff0c;不仅仅集中在对集群所有的资源、服务等进行监控#xff0c;还要兼顾整体逻辑。以MongoDB高可用负载均衡集群为例#xff0c;对逻辑层面的监控#xff0c;就是模拟用户行为#xff0c;访问集群数据#xff0c;判断运行状态是否正常。 Mong… 对负载均衡的集群监控不仅仅集中在对集群所有的资源、服务等进行监控还要兼顾整体逻辑。以MongoDB高可用负载均衡集群为例对逻辑层面的监控就是模拟用户行为访问集群数据判断运行状态是否正常。 MongoDB集群内置一个名为“db.serverStatus()”的工具用它可以来监控整个集群是否处于正常状态。用客户端“mongosh”登录MongoDB集群路由“mongos”切换到管理员用户“admin”交互界面执行“db.serverStatus()”部分输出如图9-2所示。 图9- 2 这是一个正常运行且所有集群节点未发生故障的MongoDB集群健康状态“health state”为’OK’。有意将所有配置集群节点(Config Server)的“mongod”服务关闭再执行指令“db.serverStatus()”,指令超时并报错如图9-3所示。 图9- 3 启动配置服务Config Server集群的“mongod”服务同时将所有分片服务集群Shard的“mongod”服务全部关闭在“mongosh”交互界面输入指令“show dbs”,将得不到任何输出。根据这个逻辑将集群健康状态Health state与数据库获取两者集合如果同时满足健康状态正常“OK”且能检索到集群的数据库则认为MongoDB集群处于正常状态。 需求明确之后我们可以将其转换成Shell脚本。关键性的两条指令有两条MongoDB集群处于正常运行状态时系统命令行下分别执行下面两条指令 [rootMongoDB-200-144 ~]# echo show dbs|mongosh --host 10.122.200.144 --usernameadmin --passwordYg9NxXYN5iae --authenticationDatabaseadmin|grep admin Connecting to: mongodb://credentials10.122.200.144:27017/?directConnectiontrueauthSourceadminappNamemongosh1.10.0 [direct: mongos] test admin 288.00 KiB [rootMongoDB-200-144 ~]# echo db.serverStatus()|mongosh --host 10.122.200.144 --usernameadmin --passwordYg9NxXYN5iae --authenticationDatabaseadmin|grep state state: Ok, 逻辑上分析清楚以后再撰写监控脚本就不在是什么难事。用文本编辑器在系统行下创建Shell脚本“/usr/local/bin/mon_mongodb.sh”,其完整内容如下 #!/bin/bash db_admin$(echo show dbs|mongosh --host 10.122.200.144 --usernameadmin --password Yg9NxXYN5iae --authenticationDatabaseadmin|grep admin9|wc -l) db_status$(echo db.serverStatus()|mongosh --usernameadmin --password Yg9NxXYN5iae --authenticationDatabaseadmin|grep state|grep Ok |wc -l) if [ $db_admin -ge 1 ] [ $db_status -eq 1 ] then echo MongoDB Cluster is OK! exit 0 else echo MongoDB Cluster is BAD! exit 2 fi exit 0 此脚本适用于Nagios或者Centroen监控平台状态码“exit 0”代表正常OK“exit 2”代表异常Critical。在MongoDB集群处于正常状态时执行脚本“/usr/local/bin/mon_mongodb.sh”,其输出应该为“MongoDB Cluster is OK!”。作为对比将MongoDB的所有分片集群Shard的“mongod”服务关闭手动执行脚本“/usr/local/bin/mon_mongodb.sh”,其输出为“MongoDB Cluster is BAD”正是我们所期待的结果如图9-4所示。 图9- 4 将MongoDB分片集群所有节点的“mongod”服务启动而将所有配置服务Config Server的“mongod”关闭执行监控脚本将得到同样的结果MongoDB Cluster is BAD。同样当MongoDB的路由集群故障时运行监控脚本也会得到故障告警。 9.4 负载均衡集群升级