Когда VMware HA обнаруживает отказавший сервер, то предпринимается несколько попыток перезапустить ВМ с проблемного сервера.
Зачем попыток несколько?
На случай если первая попытка была неудачной из за заблокированных файлов ВМ.
Обычно, как я понимаю, это происходит не при падении сервера, а при изоляции сервера - когда сервер жив но из за проблем в сети остальные думают что он мертв.
Но не суть.
Итак, попыток несколько. Если как Т обозначить момент фиксации сбоя, то попытки рестарта происходят по следующему расписанию:
T – Рестарт
T+2 – Повтор 1 (через 2 минуты после предыдущего)
T+6 – Повтор 2 (через 4 минуты после предыдущего)
T+14 – Повтор 3 (через 8 минут после предыдущего)
T+22 – Повтор 4 (через 8 минут после предыдущего)
T+30 – Повтор 5 (через 8 минут после предыдущего)
т.е. через 2, 6, 14, 22 и 30 минут после момента отказа.
С одной стороны, вероятность того, что уже 2-3 попытка окажется безуспешной, а смысл продолжать пытаться будет - мне видится не очень большой.
С другой стороны, если изолированный сервер выключил свои ВМ, минуте на 15 после сбоя, то ждать 8 минут до следующей попытки рестарта может быть многовато.
С третьей стороны, сделать все равно ничего нельзя.
Однако есть информация о неподдерживаемом способе - VMware High Availability Isolation Event – Hack The Eight Minutes Delay:
- Go to your ESXi host console (SSH)
- And navigate to /opt/vmware/aam/ha
- vi vmwaremanager.pl
- Scroll down to line 37: “my $VM_RESTART_DELAY_MAX = 480; #8 min“
- Change the value to whatever you want, i.e. 120
- Save and quit
- Restart the management agents: service mgmt-vmware restart and service vmware-vpxa restart
- Tests :)
Ещё можно уменьшить фактор замедления с двух на полтора:
ОтветитьУдалить--- vmwaremanager.pl.old 2011-06-16 14:09:01.043830510 +0400
+++ vmwaremanager.pl 2011-06-16 14:09:59.476307152 +0400
@@ -5248,7 +5248,7 @@
my $cnt = &GetVMRestartCount($VMName);
while(--$cnt > 0) {
- $delay = $delay*2;
+ $delay = $delay*3/2;
}
if ($delay > $VM_RESTART_DELAY_MAX*$pendingCount) {
$delay = $VM_RESTART_DELAY_MAX*$pendingCount;
Вдогонку: а при реактивации HA, например, после апдейта базового ПО хоста, эти изменения не потеряются ли? Откуда вообще берётся исходник -- из недр vServer или всё-таки более доступного места? ;-)
ОтветитьУдалитьспасибо.
ОтветитьУдалитьпо поводу вопроса - точной инфы нет, но по идее эти настройки должны расползаться по хостам. так что апдейт ESXi их затронуть не должен.