在笔者操作系统Redhat 8.8 中,pacemaker默认的token时间为3000毫秒,也可以理解成心跳检测时间
这样根据默认的规则,consensus有时间如果没有特别指定的话,将是token*1.2,即3600毫秒
[root@azdb01 qq-5201351]# corosync-cmapctl | grep 'totem.token\|consensus' runtime.config.totem.consensus (u32) = 3600 runtime.config.totem.token (u32) = 3000 runtime.config.totem.token_retransmit (u32) = 714 runtime.config.totem.token_retransmits_before_loss_const (u32) = 4 runtime.config.totem.token_warning (u32) = 75
最近由于Azure云平台-频繁网络抖动,导致pacemaker去fence了其他节点,于是决定暂时调整token的时间为60秒
其他说明:即使设置了维护模式,但是Stonith设备还是会生效,出现了心跳异常时,还是会去fence其他节点
先看一下db01的corosync的配置文件,如下,我们只需要在totem段中添加一行 token:60000 即可
[root@azdb01 ~]# cat /etc/corosync/corosync.conf totem { version: 2 cluster_name: DBProdCluster transport: knet token:60000 crypto_cipher: aes256 crypto_hash: sha256 } nodelist { node { ring0_addr: azdb01 name: azdb01 nodeid: 1 } node { ring0_addr: azdb02 name: azdb02 nodeid: 2 } } quorum { provider: corosync_votequorum two_node: 1 } logging { to_logfile: yes logfile: /var/log/cluster/corosync.log to_syslog: yes timestamp: on } [root@azdb01 ~]#
接下来还得让配置同步,生效,可以在db01上执行如下两条命令,执行后,db02机器的配置文件也会自动被更新
pcs cluster sync
pcs cluster reload corosync
最后,我们通过如下命令,可以在两台主机上进行验证,会发现token和consensus都已经更新了
corosync-cmapctl | grep 'totem.token\|consensus'
说明:以上的操作、笔者测试过、在维护模式,或者正常的模式下,都是可以正常在线执行的,不会影响业务资源
尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/18047220
作者:一名卑微的IT民工
出处:https://www.cnblogs.com/5201351
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
由于博主的水平不高,文章没有高度、深度和广度,只是凑字数,不足和错误之处在所难免,希望大家能够批评指出。
博主是利用读书、参考、引用、复制和粘贴等多种方式打造成自己的文章,请原谅博主成为一个卑微的IT民工!