Пока окончательно не решили как должно осуществляться переключение при отказе одной из систем, и, самое главное, как понять, что система сбоит или отказала.
Расскажу, как подобное делается в ИТ. Там есть подобная проблема для отказоустойчивых систем серверов (кластеров). Такой "арбитраж" делается обычно при помощи "свидетеля", то есть третьего объекта, который занимается тем, что наблюдает за тем, как работают два других. Если свидетель и один из двух серверов видят, что другой сервер не работает, они переключают систему на работающий сервер, а к неработающему, если это необходимо, применяют механизм STONITH, что значит "Shoot The Other Node In The Head", то есть "пристрели другой сервер в голову", чтобы плохо работающий сервер не навредил системе. Свидетель нужен для так называемого кворума, то есть квалифицированной оценке того, кто работает, а кто поломался, по мажоритарной системе.
Мало того, сервера обычно шлют не сигнал "я поломался", а наоборот, сигнал нормальной работы, "я живой". И когда такой сигнал пропадает, то это значит, что узел вышел из строя или засбоил. Другой узел "стреляет ему в голову" (если это необходимо), то есть выключает наглухо, и обычно сам шлёт сигнал в мониторинг, что, мол, внимание, кластер деградировал, отказоустойчивости больше нет.
Такой механизм слежения за состоянием называется watchdog, то есть "сторожевой пёс". Например, работающий сервер каждые 10 секунд (интервал непринципиален, настраивается как нужно) посылает сигнал "я нормально работаю". watchdog это вообще часто независимый чип, который всё что делает, это проверяет наличие такого сигнала, и в случае его отсутствия (сервер завис) перезагружает этот сервер.