У меня есть настройка первичного аварийного переключения для HAProxy на двух серверах с использованием Heartbeat. Некоторое время все идет гладко. Сегодня наша служба была отключена на несколько минут, когда вторичный сервер решил, что не работает первичный. Он попытался захватить общий IP-адрес, но не смог, так как основной сервер все еще удерживал его. Однако, согласно журналам, первичный, похоже, общался с вторичным по поводу поглощения, так что это не имеет смысла.
После решения проблемы путем перезапуска Heartbeat на первичном сервере я заметил, что время на первичном сервере снизилось примерно на 5 минут по сравнению с вторичным. Использует ли Heartbeat время, чтобы определить, не работает ли ресурс?
Системный журнал ServerNode1:
Jun 8 14:25:51 serverNode heartbeat: [15461]: ERROR: Both machines own our resources!
Jun 8 14:25:52 serverNode heartbeat: [15461]: ERROR: Both machines own our resources!
Jun 8 14:25:56 serverNode heartbeat: [15461]: info: Received shutdown notice from 'serverNode2'.
Jun 8 14:25:56 serverNode heartbeat: [15461]: info: Resources being acquired from serverNode2.
Jun 8 14:25:56 serverNode heartbeat: [15461]: debug: StartNextRemoteRscReq(): child count 1
Jun 8 14:25:56 serverNode heartbeat: [18058]: info: acquire local HA resources (standby).
Jun 8 14:25:56 serverNode ResourceManager[18087]: info: Acquiring resource group: serverNode xxx.xxx.xxx.88
Jun 8 14:25:56 serverNode IPaddr[18124]: INFO: Running OK
Jun 8 14:25:56 serverNode IPaddr[18138]: INFO: Running OK
Jun 8 14:25:56 serverNode heartbeat: [18059]: info: Local Resource acquisition completed.
Jun 8 14:25:56 serverNode heartbeat: [18058]: info: local HA resource acquisition completed (standby).
Jun 8 14:25:56 serverNode heartbeat: [15461]: info: Standby resource acquisition done [foreign].
Jun 8 14:25:56 serverNode heartbeat: [15461]: debug: StartNextRemoteRscReq(): child count 1
Jun 8 14:25:56 serverNode heartbeat: [18184]: debug: notify_world: setting SIGCHLD Handler to SIG_DFL
Jun 8 14:25:56 serverNode harc[18184]: info: Running /etc/ha.d//rc.d/status status
Jun 8 14:25:56 serverNode mach_down[18199]: info: /usr/share/heartbeat/mach_down: nice_failback: foreign resources acquired
Jun 8 14:25:56 serverNode mach_down[18199]: info: mach_down takeover complete for node serverNode2.
Jun 8 14:25:56 serverNode heartbeat: [15461]: info: mach_down takeover complete.
Системный журнал ServerNode2:
Jun 8 14:31:33 serverNode2 heartbeat: [1407]: WARN: node serverNode: is dead
Jun 8 14:31:33 serverNode2 heartbeat: [1407]: WARN: No STONITH device configured.
Jun 8 14:31:33 serverNode2 heartbeat: [1407]: WARN: Shared disks are not protected.
Jun 8 14:31:33 serverNode2 heartbeat: [1407]: info: Resources being acquired from serverNode.
Jun 8 14:31:33 serverNode2 heartbeat: [1407]: info: Link serverNode:eth0 dead.
Jun 8 14:31:33 serverNode2 heartbeat: [30881]: debug: notify_world: setting SIGCHLD Handler to SIG_DFL
Jun 8 14:31:33 serverNode2 harc[30881]: info: Running /etc/ha.d//rc.d/status status
Jun 8 14:31:33 serverNode2 heartbeat: [30882]: info: No local resources [/usr/share/heartbeat/ResourceManager listkeys serverNode2] to acquire.
Jun 8 14:31:33 serverNode2 heartbeat: [1407]: debug: StartNextRemoteRscReq(): child count 1
Jun 8 14:31:33 serverNode2 mach_down[30909]: info: Taking over resource group xxx.xxx.xxx.88
Jun 8 14:31:33 serverNode2 ResourceManager[30934]: info: Acquiring resource group: serverNode xxx.xxx.xxx.88
Jun 8 14:31:33 serverNode2 IPaddr[30961]: INFO: Resource is stopped
Jun 8 14:31:33 serverNode2 ResourceManager[30934]: info: Running /etc/ha.d/resource.d/IPaddr xxx.xxx.xxx.88 start
Jun 8 14:31:33 serverNode2 IPaddr[31019]: INFO: Using calculated nic for xxx.xxx.xxx.88: eth0
Jun 8 14:31:33 serverNode2 IPaddr[31019]: INFO: Using calculated netmask for xxx.xxx.xxx.88: 255.255.255.0
Jun 8 14:31:33 serverNode2 IPaddr[31019]: INFO: eval ifconfig eth0:0 xxx.xxx.xxx.88 netmask 255.255.255.0 broadcast xxx.xxx.xxx.255
Jun 8 14:31:33 serverNode2 IPaddr[31007]: INFO: Success
Jun 8 14:31:33 serverNode2 mach_down[30909]: info: /usr/share/heartbeat/mach_down: nice_failback: foreign resources acquired
Jun 8 14:31:33 serverNode2 heartbeat: [1407]: info: mach_down takeover complete.
Jun 8 14:31:33 serverNode2 mach_down[30909]: info: mach_down takeover complete for node serverNode.
Нужно больше информации.
Я подозреваю, что что-то фильтрует трафик между вашими узлами. Iptables - одна из возможностей. В зависимости от вашей физической топологии, другие устройства также могут быть подозрительными.
Нет, отключение часов не нарушит отношений. Однако если бы часы резко изменились, это привело бы к ошибкам в журнале, они бы выглядели так:
heartbeat: 2004/11/10_21:08:49 info: Clock jumped backwards. Compensating.
Но это не убило бы первичный.
Похоже, что связь между серверами прервалась. В частности, похоже, что либо server1 больше не может отправлять данные, либо server2 не получает должным образом. Это могло быть связано с какой-то проблемой с буфером. Вы отслеживаете буферное пространство сети? (через snmp или netstat) Или может быть проблема с сетью где-то, ошибки switchport?
Когда вы говорите, что сайт не работает, есть ли у вас мониторинг, тестирующий службу на каждом serverX на IP, специфичный для этого сервера? Указывает ли это, что какой-либо из серверов не работал в течение этого периода в дополнение к неработающему VIP? Показывают ли графики трафика или счетчики ошибок / падений что-нибудь интересное за этот период времени?