我已经建立了一个心跳 HA 两节点集群。并且两个服务器都具有相同的 ha.cf 配置
#cat /etc/ha.cf
logfile /var/log/ha-log
autojoin none
bcast eth1
warntime 20ms
deadtime 40ms
initdead 30
keepalive 5ms
node server1.com
node server2.com
Run Code Online (Sandbox Code Playgroud)
我以毫秒为单位设置了 keepalive 和 deadtime,希望故障转移将在不到秒或 deadtime 值内发生。但是没有达到预期的行为。
使用此配置,如果我在一台服务器中停止心跳,另一台服务器将在大约 20 秒后(通过秒表粗略估计)。
我想知道是心跳只能做什么还是我错过了什么?
我有一台 40 v 核心机器,其中运行了一个 java 进程。我可以看到这个进程一直在cpu6中运行。
$watch ps -o pid,psr,comm -p 4076
Every 2.0s: ps -o pid,psr,comm -p 4076 Mon Apr 11 02:24:12 2016
PID PSR COMMAND
4076 6 java
$ sudo taskset -c -p 4076
pid 4076's current affinity list: 0-39
$ sudo taskset -p 4076
pid 4076's current affinity mask: ffffffffff
Run Code Online (Sandbox Code Playgroud)
这是用于 CPU 利用率的 top 命令的外观
$ top -c
top - 02:27:37 up 47 days, 10:49, 9 users, load average: 2.83, 2.89, 3.01
Tasks: 470 total, 1 running, …
Run Code Online (Sandbox Code Playgroud) 我注意到一个日志文件的大小比 inode 中提到的要小。
$ ls -lhtr /var/log/test/fk-3p-kafka/kafkaServer-gc.log
-rw-r--r-- 1 fk-3p-kafka fk-3p 11G Apr 10 18:27 /var/log/test/fk-3p-kafka/kafkaServer-gc.log
$ du -sh /var/log/test/fk-3p-kafka/kafkaServer-gc.log
2.4G /var/log/test/fk-3p-kafka/kafkaServer-gc.log
$# stat /var/log/test/fk-3p-kafka/kafkaServer-gc.log
File: `/var/log/test/fk-3p-kafka/kafkaServer-gc.log'
Size: 11038186491 Blocks: 4823840 IO Block: 4096 regular file
Device: fe01h/65025d Inode: 132380 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 7100/fk-3p-kafka) Gid: ( 7100/ fk-3p)
Access: 2016-03-09 22:47:06.822168512 +0530
Modify: 2016-04-10 18:28:11.022285512 +0530
Change: 2016-04-10 18:28:11.022285512 +0530
Birth: -
Run Code Online (Sandbox Code Playgroud)
接下来我做的是检查任何已删除的文件处理程序。
$ lsof | grep kafkaServer-gc.log
java 22252 fk-3p-kafka 3w REG 254,1 11038227512 132380 /var/log/test/fk-3p-kafka/kafkaServer-gc.log …
Run Code Online (Sandbox Code Playgroud) linux ×2
cluster ×1
cpu ×1
ext4 ×1
filesystems ×1
heartbeat ×1
inode ×1
pacemaker ×1
scheduling ×1