Я пытаюсь создать динамический кластер машин, которые должны взаимодействовать с главным узлом (для отчетов, обновлений и различных других задач, которые должны выполняться главным узлом).
Для удобства я задумал использовать проект heartbeat http://linux-ha.org/wiki/Heartbeat. Hearbeat предоставляет хороший механизм аварийного переключения и восстановления, который я хочу использовать. Я не планирую использовать ldirectord или какой-либо виртуальный IP. Я действительно хочу использовать сердцебиение для обозначения главного узла.
В настоящее время я просто запускаю простую настройку двух узлов, node1 и node2, чьи IP-адреса я не контролирую (приписанные через DHCP).
Поскольку узлы могут быть добавлены в кластер динамически, я настроил ha.cf следующим образом
keepalive 2
warntime 6
deadtime 12
logfacility local0
bcast eth0 # Linux
mcast eth0 225.0.0.1 694 1 0
auto_failback on
node virtual
node node1
node node2
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
И такие ресурсы
virtual \
nginx
Итак, я настроил кластер так, чтобы virtual
узел - предпочтительный ресурс для кластера. Этот узел не существует. Поэтому я ожидаю, что все резервные узлы пройдут процесс выборов, чтобы решить, кто возьмет на себя управление, когда он не работает (= всегда). Я действую так, потому что я хочу динамически добавлять и удалять узлы в конфигурацию, но мне все равно нужен предпочтительный узел
Он отлично работает, когда я запускаю один узел, поскольку он просто забирает ресурс. Однако, когда я запускаю второй узел с точно такой же конфигурацией (конфигурация scp'd, поэтому нет риска разницы), оба узла освобождают свои ресурсы (я могу проверить это, поскольку ни один из узлов не запускает свой nginx и предыдущий мастер , скажем, node1, отключает его).
При необходимости я могу публиковать полные журналы, но, по сути, происходит то, что узлы просто пытаются получить ресурсы друг от друга и в конечном итоге оба освобождают свои ресурсы с большим количеством
ERROR: Both machines own our resources!
и
WARN: 1 lost packet(s) for [node2] [22:24]
заканчивая
Jul 23 15:17:21 node1 heartbeat: [16390]: info: node2 wants to go standby [foreign]
Jul 23 15:17:21 node1 heartbeat: [16390]: info: remote resource transition completed.
Jul 23 15:17:21 node1 heartbeat: [16390]: ERROR: Both machines own our resources!
Jul 23 15:17:21 node1 heartbeat: [16390]: ERROR: Both machines own our resources!
Jul 23 15:17:22 node1 heartbeat: [16390]: info: remote resource transition completed.
Jul 23 15:17:22 node1 heartbeat: [16390]: info: standby: acquire [foreign] resources from node2
Jul 23 15:17:22 node1 heartbeat: [16678]: info: acquire local HA resources (standby).
Jul 23 15:17:22 node1 heartbeat: [16678]: info: local HA resource acquisition completed (standby).
Jul 23 15:17:22 node1 heartbeat: [16390]: info: Standby resource acquisition done [foreign].
Если у кого-то есть предложения, как с этим разобраться (исправление или альтернативный метод), я все уши.
Ура.