由于主库和实时备库的守护进程配置为自动切换模式,因此这里必须配置确认监视器。和普通监视器相比,确认监视器除了相同的命令支持外,在主库发生故障时,能够自动通知实时备库接管为新的主库,具有自动故障处理的功能。
配置确认监视器时可以选择配置单实例监视器或配置多实例监视器,下面将分别介绍配置单实例监视器以及多实例监视器时 dmmonitor.ini 配置文件中的配置信息。
1.单实例监视器和多实例的组名和守护集群的组名必须一致,这里命名为[GRP1]
2.单实例监视器和多实例的OGUID即MON_INST_OGUID和守护集群的OGUID必须一致,这里OGUID为453331
3.多实例监视器个数需要为ODD(奇数个),即MON_INST_NUM=3
4.多实例监视器的MON_PORT,每个实例的端口不相同,且不和其他服务共用一个端口
5.多实例监视器的全局配置对应不同的MON_ID, 且与下面组配置的MON_INST_ID相同,详情见案例
修改 dmmonitor.ini 配置确认监视器,其中 MON_DW_IP 中的 IP 和 PORT 和 dmmal.ini 中的 MAL_HOST 和 MAL_DW_PORT 配置项保持一致。
$ cat ./dmmonitor_manual.ini
MON_DW_CONFIRM = 0 #普通监视器模式
MON_LOG_PATH = /dm8/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
MON_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
[GRP1]
MON_INST_OGUID = 453331 #组 GRP1 的唯一 OGUID 值
MON_DW_IP = 192.168.80.11:65101
MON_DW_IP = 192.168.80.12:65121
为每个实例配置一个 dmmonitor.ini。众多 dmmonitor.ini 中,除 MON_ID 参数不同以外,其他参数应完全一致。
以下以2节点主备加1个监视器节点的 dmmonitor.ini 为例进行介绍。各实例的 MON_ID 与 MON_INST_ID 应相同。dmmonitor.ini 配置文件中的内容如下:
vi /dm8/data/DM01/dmmonitor.ini
#node01
MON_LOG_PATH=/dm8/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 #组GDW1的唯一OGUID值
MON_DW_IP=192.168.80.11:65101
MON_DW_IP=192.168.80.12:65201
[MON1]
MON_HOST=192.168.80.11 #系统监听TCP连接的IP地址
MON_PORT=8339 #系统监听TCP连接的端口号
MON_INST_ID=1 #监视器实例在监视器系统中的ID
[MON2]
MON_HOST=192.168.80.12 #系统监听TCP连接的IP地址
MON_PORT=8340 #系统监听TCP连接的端口号
MON_INST_ID=2 #监视器实例在监视器系统中的ID
[MON3]
MON_HOST=192.168.80.13 #系统监听TCP连接的IP地址
MON_PORT=8341 #系统监听TCP连接的端口号
MON_INST_ID=3 #监视器实例在监视器系统中的ID
vi /dm8/data/DM01/dmmonitor.ini
Go
#node02
MON_LOG_PATH=/dm8/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 #组GDW1的唯一OGUID值
MON_DW_IP=192.168.80.11:65101
MON_DW_IP=192.168.80.12:65201
[MON1]
MON_HOST=192.168.80.11 #系统监听TCP连接的IP地址
MON_PORT=8339 #系统监听TCP连接的端口号
MON_INST_ID=1 #监视器实例在监视器系统中的ID
[MON2]
MON_HOST=192.168.80.12 #系统监听TCP连接的IP地址
MON_PORT=8340 #系统监听TCP连接的端口号
MON_INST_ID=2 #监视器实例在监视器系统中的ID
[MON3]
MON_HOST=192.168.80.13 #系统监听TCP连接的IP地址
MON_PORT=8341 #系统监听TCP连接的端口号
MON_INST_ID=3 #监视器实例在监视器系统中的ID
vi /dm8/bin/dmmonitor.ini
#node03
MON_LOG_PATH=/dm8/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 #组GDW1的唯一OGUID值
MON_DW_IP=192.168.80.11:65101
MON_DW_IP=192.168.80.12:65201
[MON1]
MON_HOST=192.168.80.11 #系统监听TCP连接的IP地址
MON_PORT=8339 #系统监听TCP连接的端口号
MON_INST_ID=1 #监视器实例在监视器系统中的ID
[MON2]
MON_HOST=192.168.80.12 #系统监听TCP连接的IP地址
MON_PORT=8340 #系统监听TCP连接的端口号
MON_INST_ID=2 #监视器实例在监视器系统中的ID
[MON3]
MON_HOST=192.168.80.13 #系统监听TCP连接的IP地址
MON_PORT=8341 #系统监听TCP连接的端口号
MON_INST_ID=3 #监视器实例在监视器系统中的ID
show state查看监视器状态,因为是单实例监视,MON_ROLE状态为LEADER
show state查看监视器状态,因为是多实例监视,MON_ROLE状态分为LEADER,FOLLOWER,NOT LEADER
各个监控实例运行state列表默认中会把本机放在第一位
把LEADER 192.168.80.13 监控实例kill掉后
192.168.80.13 监控实例重新加入变成FOLLOWER,并不会变成LERADER
同一时间,各个节点的角色不一致?
节点1:
节点2:
节点3:
kill 节点1,节点1非lEADER 会日志报错
节点1状态正常
节点1重新加入
节点1重新加入,报错停止
节点2 leader,kill掉,节点1不成为leader,日志只有两条
节点2 leader,kill掉,节点3成为leader,日志有三条
节点2,节点3都kill掉后,只剩下节点1,角色变成候选人
失去切换功能
达梦社区技术https://eco.dameng.com
文章
阅读量
获赞