注册
多实例确认监视器
专栏/技术分享/ 文章详情 /

多实例确认监视器

吉吉 2023/09/28 1755 3 1
摘要

单节点的确认监视器在发生故障时,如果不及时处理,当数据库主备数据库出现问题时会影响到主备数据库的自动切换;为了保证确认监视器的高可用,可以搭建多实例确认监视器。
多实例确认监视器使用raft协议,确保有一个leader节点提供服务,并且当leader节点故障时,能自动选举出新的leader节点。由于raft协议特点,需要有超过半数节点(N/2+1)在线,才能进行选举,所以搭建多实例确认监视器时,需要有奇数个节点。

三节点确认监视器配置

一节点配置

MON_LOG_PATH = /dm8/dmdbms/log/dmmonitor_log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
MON_DW_CONFIRM = 1
MON_INST_NUM = 3 ##实例总个数
MON_HB_INTERVAL = 60 ##通信心跳校验间隔
MON_BRO_INTERVAL = 100 ##raft协议中实例通信心跳间隔
MON_VOTE_INTERVAL = 100 ##raft协议中基础投票间隔
MON_ID = 1 ##当前监视器在监视器系统中的ID
MON_MID = 45614 ##当前监视器系统的唯一标识

[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.31.219:52141
MON_DW_IP = 192.168.31.220:52142

[MON1]
MON_HOST = 192.168.31.219 ##系统监听TCP连接的IP地址
MON_PORT = 8339 ##系统监听TCP连接的端口号
MON_INST_ID = 1 ##监视器实例在监视器系统中的ID

[MON2]
MON_HOST = 192.168.31.220 ##系统监听TCP连接的IP地址
MON_PORT = 8340 ##系统监听TCP连接的端口号
MON_INST_ID = 2 ##监视器实例在监视器系统中的ID

[MON3]
MON_HOST = 192.168.31.221 ##系统监听TCP连接的IP地址
MON_PORT = 8341 ##系统监听TCP连接的端口号
MON_INST_ID = 3 ##监视器实例在监视器系统中的ID

二节点配置

MON_LOG_PATH = /dm8/dmdbms/log/dmmonitor_log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
MON_DW_CONFIRM = 1
MON_INST_NUM = 3 ##实例总个数
MON_HB_INTERVAL = 60 ##通信心跳校验间隔
MON_BRO_INTERVAL = 100 ##raft协议中实例通信心跳间隔
MON_VOTE_INTERVAL = 100 ##raft协议中基础投票间隔
MON_ID = 2 ##当前监视器在监视器系统中的ID
MON_MID = 45614 ##当前监视器系统的唯一标识

[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.31.219:52141
MON_DW_IP = 192.168.31.220:52142

[MON1]
MON_HOST = 192.168.31.219 ##系统监听TCP连接的IP地址
MON_PORT = 8339 ##系统监听TCP连接的端口号
MON_INST_ID = 1 ##监视器实例在监视器系统中的ID

[MON2]
MON_HOST = 192.168.31.220 ##系统监听TCP连接的IP地址
MON_PORT = 8340 ##系统监听TCP连接的端口号
MON_INST_ID = 2 ##监视器实例在监视器系统中的ID

[MON3]
MON_HOST = 192.168.31.221 ##系统监听TCP连接的IP地址
MON_PORT = 8341 ##系统监听TCP连接的端口号
MON_INST_ID = 3 ##监视器实例在监视器系统中的ID

三节点配置

MON_LOG_PATH = /dm8/dmdbms/log/dmmonitor_log
MON_LOG_INTERVAL = 60
MON_LOG_FILE_SIZE = 32
MON_LOG_SPACE_LIMIT = 0
MON_DW_CONFIRM = 1
MON_INST_NUM = 3 ##实例总个数
MON_HB_INTERVAL = 60 ##通信心跳校验间隔
MON_BRO_INTERVAL = 100 ##raft协议中实例通信心跳间隔
MON_VOTE_INTERVAL = 100 ##raft协议中基础投票间隔
MON_ID = 3 ##当前监视器在监视器系统中的ID
MON_MID = 45614 ##当前监视器系统的唯一标识

[GRP1]
MON_INST_OGUID = 453331
MON_DW_IP = 192.168.31.219:52141
MON_DW_IP = 192.168.31.220:52142

[MON1]
MON_HOST = 192.168.31.219 ##系统监听TCP连接的IP地址
MON_PORT = 8339 ##系统监听TCP连接的端口号
MON_INST_ID = 1 ##监视器实例在监视器系统中的ID

[MON2]
MON_HOST = 192.168.31.220 ##系统监听TCP连接的IP地址
MON_PORT = 8340 ##系统监听TCP连接的端口号
MON_INST_ID = 2 ##监视器实例在监视器系统中的ID

[MON3]
MON_HOST = 192.168.31.221 ##系统监听TCP连接的IP地址
MON_PORT = 8341 ##系统监听TCP连接的端口号
MON_INST_ID = 3 ##监视器实例在监视器系统中的ID

模拟leader节点故障

通过前台启动方式观察多实例监视器状态,通过show state命令,查看监视器当前状态
当前MON2为leader节点

show state
#--------------------------------------------------------------------------------#
GET MONITOR STATE FROM MONITOR SYSTEM, THE FIRST LINE IS SELF INFO.
MON_BRO_INTERVAL: 99 ms, MON_VOTE_INTERVAL: 1937 ms

MON_NAME       MON_STATE      ID             MON_ROLE       MON_IP                   MON_PORT       
MON1           Active         1              FOLLOWER       192.168.31.219           8339           
MON2           Active         2              LEADER         192.168.31.220           8340           
MON3           Active         3              NOT LEADER     192.168.31.221           8341           
#--------------------------------------------------------------------------------#

停止MON2确认监视器后

xsite_destory[0x7fc2b8002098] start

xsite_destory[0x7fc2b8002098] complete

xsite_destory[0x7fc2b4002098] start

xsite_destory[0x7fc2b4002098] complete
show state
#--------------------------------------------------------------------------------#
GET MONITOR STATE FROM MONITOR SYSTEM, THE FIRST LINE IS SELF INFO.
MON_BRO_INTERVAL: 99 ms, MON_VOTE_INTERVAL: 3043 ms

MON_NAME       MON_STATE      ID             MON_ROLE       MON_IP                   MON_PORT       
MON1           Active         1              LEADER         192.168.31.219           8339           
MON2           Active         2              NOT LEADER     192.168.31.220           8340           
MON3           Active         3              NOT LEADER     192.168.31.221           8341           
#--------------------------------------------------------------------------------#

MON1通过选举成为leader节点,再停止MON1确认监视器后


xsite_destory[0x7f6a74002098] complete

xsite_destory[0x7f6a789827e8] start

xsite_destory[0x7f6a789827e8] complete

show state
#--------------------------------------------------------------------------------#
GET MONITOR STATE FROM MONITOR SYSTEM, THE FIRST LINE IS SELF INFO.
MON_BRO_INTERVAL: 99 ms, MON_VOTE_INTERVAL: 2696 ms

MON_NAME       MON_STATE      ID             MON_ROLE       MON_IP                   MON_PORT       
MON3           Active         3              CANDIDATE      192.168.31.221           8341           
MON1           Active         1              NOT LEADER     192.168.31.219           8339           
MON2           Active         2              NOT LEADER     192.168.31.220           8340           
#--------------------------------------------------------------------------------#

由于开头提到的raft协议需要有超过半数节点(N/2+1)在线,才能进行选举的特点,所以三节点下,当两次发生leader节点故障且未恢复后,剩余一个节点无法被选举成leader节点,只能是candidate节点,无法对外提供服务(如果是5节点,那么则需要有3个节点以上在线才能进行选举,更多节点以此类推)。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服