Я так понимаю, что раз тег "Opennebula" до меня на Тостере не упоминался, то шансов немного, но всё же может хотя бы на второй вопрос ответ будет....
1. Итак, поставил на 3 сервера Opennebula по инструкции с официального сайта. Включил параметры, отвечающие за HA: FEDERATION, RAFT_LEADER_HOOK, RAFT_FOLLOWER_HOOK, HOST_HOOK. Первая часть заработала: общий ip перекидывается при отключении одного из хостов. А вот с HOST_HOOK вообще затык.
В конфиге это выглядит так:
HOST_HOOK = [
NAME = "error",
ON = "ERROR",
COMMAND = "ft/host_error.rb",
ARGUMENTS = "$ID -m -p 5",
REMOTE = "no" ]
При гашении одного из серверов, утилита onezone выдаёт вполне себе правильную информацию:
# onezone show 0
ZONE 0 INFORMATION
ID : 0
NAME : OpenNebula
ZONE SERVERS
ID NAME ENDPOINT
0 server-0 http://10.0.0.50:2633/RPC2
1 server-1 http://10.0.0.51:2633/RPC2
2 server-2 http://10.0.0.52:2633/RPC2
HA & FEDERATION SYNC STATUS
ID NAME STATE TERM INDEX COMMIT VOTE FED_INDEX
0 server-0 leader 64 1345 1340 0 -1
1 server-1 follower 64 1340 1340 -1 -1
2 server-2 error - - - - -
ZONE TEMPLATE
ENDPOINT="http://localhost:2633/RPC2"
А вот onehost почему-то считает что хост жив:
# onehost list
ID NAME CLUSTER TVM ALLOCATED_CPU ALLOCATED_MEM STAT
1 cl0 default 0 0 / 2400 (0%) 0K / 187.6G (0%) on
2 cl1 default 0 0 / 2400 (0%) 0K / 187.6G (0%) on
3 cl2 default 1 200 / 2400 (8%) 2G / 187.6G (1%) on
И onevm считает, что виртуалка на этом хосте работает:
# onevm list
ID USER GROUP NAME STAT UCPU UMEM HOST TIME
0 oneadmin oneadmin ubuntu 1 runn 0.0 2G cl2 0d 18h26
Лог oned.log заполнен информацией об ошибках репликации:
Thu Mar 14 13:02:55 2019 [Z0][ReM][D]: Req:1872 UID:0 one.zone.raftstatus invoked
Thu Mar 14 13:02:55 2019 [Z0][ReM][D]: Req:1872 UID:0 one.zone.raftstatus result SUCCESS, "<RAFT><SERVER_ID>0</..."
Thu Mar 14 13:02:55 2019 [Z0][ReM][D]: Req:4176 UID:0 one.vmpool.info invoked , -2, -1, -1, -1
Thu Mar 14 13:02:55 2019 [Z0][ReM][D]: Req:4176 UID:0 one.vmpool.info result SUCCESS, "<VM_POOL><VM><ID>0</..."
Thu Mar 14 13:02:55 2019 [Z0][ReM][D]: Req:7744 UID:0 one.vmpool.info invoked , -2, -1, -1, -1
Thu Mar 14 13:02:55 2019 [Z0][ReM][D]: Req:7744 UID:0 one.vmpool.info result SUCCESS, "<VM_POOL><VM><ID>0</..."
Thu Mar 14 13:02:56 2019 [Z0][RCM][D]: Faild to replicate log record at index: 566 on follower: 2, error: Error replicating log entry 566 on follower 2: RPC call timed out and aborted
Thu Mar 14 13:03:00 2019 [Z0][RCM][D]: Faild to replicate log record at index: 566 on follower: 2, error: Error replicating log entry 566 on follower 2: RPC call timed out and aborted
Thu Mar 14 13:03:04 2019 [Z0][RCM][D]: Faild to replicate log record at index: 566 on follower: 2, error: Error replicating log entry 566 on follower 2: RPC call timed out and aborted
Thu Mar 14 13:03:07 2019 [Z0][RCM][D]: Faild to replicate log record at index: 566 on follower: 2, error: Error replicating log entry 566 on follower 2: RPC call timed out and aborted
Thu Mar 14 13:03:11 2019 [Z0][RCM][D]: Faild to replicate log record at index: 566 on follower: 2, error: Error replicating log entry 566 on follower 2: RPC call timed out and aborted
Thu Mar 14 13:03:15 2019 [Z0][RCM][D]: Faild to replicate log record at index: 566 on follower: 2, error: Error replicating log entry 566 on follower 2: RPC call timed out and aborted
Thu Mar 14 13:03:18 2019 [Z0][RCM][D]: Faild to replicate log record at index: 566 on follower: 2, error: Error replicating log entry 566 on follower 2: RPC call timed out and aborted
Thu Mar 14 13:03:22 2019 [Z0][RCM][D]: Faild to replicate log record at index: 566 on follower: 2, error: Error replicating log entry 566 on follower 2: RPC call timed out and aborted
Но ни слова про вызов хука.
Соответственно opennebula считает, что виртуалка работает, и ничего никуда не мигрирует. Вот что это и как с этим бороться?
2. Я долго выбирал подходящее решение, но может неправильно - у OpenNebula очень маленькое сообщество. Может есть другое аналогичное решение? Нужен opensouce, не очень монструозный (как openstack) - у меня будет только 3 сервера, и главное - при падении одного узла ничего не должно ломаться (или быстро подниматься), даже если на этом узле была единственная ипостась какой-нибудь нужной виртуалки.