Если я чего-то не понимаю, это очень распространенный сценарий, который хорошо поддерживается в Linux.
В настоящее время лучшим инструментом для этой работы является Кардиостимулятор . Pacemaker находится поверх Corosync и работает на всех узлах кластера. Он отправляет контрольные сообщения, и когда он обнаруживает, что узел вышел из строя, он переносит все ресурсы с этого узла и, при необходимости, может убить узел (называемое ограждение ).
Ресурсы - это такие вещи, как VIP или база данных MySQL. Некоторые ресурсы поддерживают режимы ведущий / ведомый, в которых, если узел, на котором запущен ведущий, выходит из строя, кардиостимулятор продвигает ведомое устройство к ведущему.
Ресурсы управляются с помощью сценариев, поэтому, если они могут быть написаны, кардиостимулятор может это поддерживать. Уже создано большое количество ресурсов, поэтому вам, вероятно, не нужно этого делать.
Он также поддерживает упорядочение, так что при перемещении ресурсов он может делать такие вещи, как проверка того, что MySQL был повышен до уровня ведущего перед перемещением VIP, чтобы никакие клиенты не подключались к нему до его готовности.
Результат cp -rf source dest
отличается, если dest
уже существует.
dest
не существует, будет создана копия source
с именем dest
. Предполагая, что source
содержит файл f1
, он создаст dest/f1
.dest
существует как каталог и если dest
не содержит файла с именем source
, он скопирует source
со всем содержимым вdest
. В приведенном выше примере вы получите dest/source/f1
. dest
существует в виде файла и если source
является каталогом, копирование завершится ошибкой. dest
существует как каталог и если dest
содержит файл с именем source
, копирование завершится ошибкой. dest
существует в виде файла и если source
является файлом, он перезапишет dest
содержимым source
. Если вы хотите удалить любой существующий каталог назначения, вы можете изменить (cp -rf $cmdline $cmdline$i; ) &
на (rm -rf $cmdline$i && cp -rf $cmdline $cmdline$i; ) &
.