Допустим есть несколько серверов, где настроена репликация БД, синхронизация файлов.
Нужно выполнять некие задачи по расписанию, например сервер №1 падает, автоматически меняется ns запись с новым IP для домена (сервер №2), но как быть с задачами? Т.е. чтобы они гарантированно не могли выполнится одновременно на разных серверах.
Посмотрите в сторону Ansible. Вы можете создать inventory-файл с разными серверами, или даже с группами серверов, использовать применительно к ним разные роли. Пусть у вас по cron'у запускается раз в минуту playbook, или даже простой bash-скрипт, который пингует сервера, и в случае отсутствия ответа выполняет необходимые задачи. В случае с Ansible вы можете делать это на множестве машин сразу.
Наверное Вы не совсем правильно поняли вопрос, есть постоянные задачи (например списание абонплаты), нужно их выполнять только на том сервере, который в данный момент главный. т.е. не допустить выполнение на нескольких серверах одновременно.
Но Вы натолкнули меня на мысль, можно пинговать домен, проверять его IP, и если он совпадает с текущим сервером - разрешать выполнение скрипта.
Значит нужно чтобы при запуске кроном задач на каждом из серверов происходила сначала проверка а главный ли это сервер, и далее по результатам проверки задача запускалась или не запускалась, например если у вас меняется DNS запись то сервера могут сравнивать а резовится ли домен в ип этого сервера, да - запускаем задачи, нет - скипаем задачи.
Это достаточно легко можно релизовать на bash.