单节点的确认监视器在发生故障时,如果不及时处理,当数据库主备数据库出现问题时会影响到主备数据库的自动切换;为了保证确认监视器的高可用,可以搭建多实例确认监视器。
多实例确认监视器使用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
通过前台启动方式观察多实例监视器状态,通过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个节点以上在线才能进行选举,更多节点以此类推)。
文章
阅读量
获赞