Я пытаюсь обеспечить защиту с разделением мозга, когда машина B берет на себя сценарий аварийного переключения. По сути, я хочу добиться того, чтобы машина A действительно отключилась до активации машины B, чтобы избежать печально известного сценария разделения мозга.
Поэтому мне нужно программное или аппаратное решение, которое позволяет мне удаленно и эффективно уничтожить машину А, разрезая мощность. Это подход STONITH или Shoot The Other Node In The Head.
Как это можно сделать?
Отключение питания сервера в такой ситуации обычно осуществляется через IPMI или переключаемый блок питания с доступом к сети.
Поскольку ситуация с разделенным мозгом подразумевает что-то странное, что может быть связано с отключением сети, вы обычно подключаете эту сеть к отдельному коммутатору.
Во-вторых, вы настраиваете corosync / pacemaker, как указано в gf_, чтобы выключить другой узел. В кластере с двумя узлами у вас будет проблема с выбором, какой узел выживет, и обычно у вас нечетное количество узлов. Есть возможности преодолеть это, но это зависит от ваших потребностей и ожиданий.
Помимо IPMI, вы также можете использовать API, встроенный в платформы виртуализации, такие как KVM или VMware. Идея состоит в том, чтобы сразу выключить виртуальную машину (если, конечно, кластер основан на виртуальных машинах). Я считаю, что это также можно сделать для GCE / AWS, однако для этого потребуются некоторые сценарии на стороне администратора (написание собственного агента STONITH).
https://www.hastexo.com/resources/hints-and-kinks/fencing-libvirtkvm-virtualized-cluster-nodes/