вторник, 4 мая 2010 г.

HA Deepdive: Isolation

  1. Slots
  2. Primary nodes
  3. Isolation
  4. Host selection
Говоря об HA и переключениях, инициированных HA, необходимо помнить о такой настройке как "isolation response" (ответ на изоляцию). Ответ на изоляцию - это действие, которые предпринимает HA при обнаружении изоляции, недоступности heartbeat сети. На сегодня существует три возможных варианта: "power off" (жесткое выключение ВМ), "leave powered on" (оставить включенными) и "shut down" (мягкое выключение).

До версии ESX 3.5 U2 / vCenter 2.5U2 ответ на изоляцию по умолчанию при создании нового кластера был "power off". В ESX 3.5 U3 / vCenter 2.5 U3 ответ был изменен на “leave powered on”, а в ESX 4.0 / vCenter 4.0 стал "shut down". Обязательно помните об этом при настройке новой среды, возможно, будет необходимо изменить ответ по умолчанию на какой-то конкретный для нужд заказчика.

Power off – при обнаружении изоляции все ВМ выключаются. В данном случае это жесткое выключение (выдернули вилку из 220В).
Shut down – при обнаружении изоляции все ВМ выключаются через VMware Tools (shutdown guest). По истечению 5-минутного таймаута оставшиеся включенными ВМ выключаются жестко.
Leave powered on – при обнаружении изоляции состояние ВМ не меняется.
Остается вопрос: а какой вариант использовать? Это зависит от многих факторов, и простого ответа здесь нет. Я лично предпочитаю "shut down" потому что не хочу использовать "осиротевший" хост и предпочитаю, чтобы ВМ выключились по возможности корректно и мягко. Многие предпочитают "Leave powered on" во избежание проблем при ложных изоляциях. Ложная изоляция в данном случае - это недоступность heartbeat сети в то время как VM Network, а также iSCSI / NFS остаются работоспособными.

Думаю, большинство из вас хотят узнать как HA определяет - хост изолирован или совсем не доступен для варианта "leave powered on".
На самом деле HA понятия не имеет, и пытается перезапустить затронутые ВМ в любом случае. Если хост умер, то рестарт произойдет успешно, в противном случае в силу блокировки vmdk файлов (хост изолирован) рестарт не пройдет. Ни один другой хост не сможет запустить ВМ с изолированного хоста.

Количество попыток перезапуска можно сконфигурировать начиная с vCenter 2.5 U4 при помощи advanced параметра "das.maxvmrestartcount". Значение по умолчанию 5. При версии vCenter до 2.5 U4 HA будет пытаться перезапустить ВМ бесконечно, что может привести к серьезным проблемам.

Ответ на изоляцию - настройка, к которой необходимо относиться серьезно при дизайне среды. К примеру, при использовании iSCSI или NFS хранилищ выбор "leave powered on" может привести к ситуации split brain, если дисковая блокировка истечет по таймауту при недоступности iSCSI сети. В этом случае ВМ будут перезапущены на другом хосте, не будучи при этом выключенными на изначальном. В обычной ситуации это не должно привести к проблемам, поскольку хост, на котором ВМ перезапустились, теперь владеет дисковыми блокировками. Но по самым неожиданным причинам вы окажетесь не в "обычной", а в "исключительной" ситуации. Хотите рискнуть? Конечно, как указал мой коллега Andrew Mitchell, есть шанс, что недоступной станет только Service Console. В этом случае во избежание ложных изоляций можно сконфигурировать вторую Service Console на том же vSwitch и в той же сети, что и iSCSI VMkernel. При таком варианте ESX сможет определить есть ли неполадки с сетью хранения данных.
Для iSCSI я рекомендую установить ответ на изоляцию "Power off" во избежание split brain. Я также рекомендую иметь вторую Service Console на том же vSwitch, что и iSCSI для обнаружения проблем с ISCSI и соотв. ложных изоляций.
Я думал, что это знание из разряда базового, как 2*2=4, но недавний пост Mike Laverick указал, что я неправ. Думаю, что если Mike Laverick этого не знает, то это точно не общеизвестно.

По умолчанию таймаут для обнаружения изоляции/отказа 15 секунд. Иными словами, изолированный или отказавший хост будет объявлен умершим остальными хостами в HA кластере на 15 секунде и рестарт ВМ будет инициирован одним из primary хостов.
Предположим, что ответ на изоляцию "power off". Действие "power off" будет инициировано изолированным хостом за две секунды до истечения das.failuredetectiontime. Действие "power off" будет инициировано на 13й секунде, а рестарт на 15й.

Значит ли это, что вы можете оказаться с выключенными ВМ, которые HA не будет рестартовать? Да. Если heartbeat вернется между 13й и 15й секундами - "power off" уже инициировано, а рестарт не будет инициирован, поскольку приход heartbeat означает, что хост более не изолирован.

Как этого избежать?
Выбирайте "Leave VM powered on" как ответ на изоляцию. Увеличение das.failuredetectiontime также уменьшит вероятность оказаться в подобной ситуации.
Увеличивайте das.failuredetectiontime до 30 секунд (30000) во избежание ложных изоляций.
Оригинал - Duncan Epping

Комментариев нет:

Отправить комментарий