Я не знаю, что мне искать.
Мне нужна информация о том, как «реплицировать» сервер Apache, если один из них выйдет из строя, другой возьмет верх.
Также на сервере Apache хранится множество файлов данных. Как можно наилучшим образом управлять файлами и хранить их (тоже своего рода репликация)?
Вам нужна какая-то конфигурация высокой доступности, например, предоставляемая Linux-HA. Для файлов данных я бы использовал DRBD, который представляет собой способ репликации блочного устройства между двумя машинами (хотя обычно только одна машина будет использовать его одновременно - и это нормально, потому что у вас есть только одна машина, на которой одновременно запущен apache).
Лично, однако, я бы, вероятно, поработал над тем, чтобы снизить время наработки на отказ и MTTR на низком уровне, и не беспокоиться о HA почти при любых обстоятельствах - дополнительная сложность настройки значительно повышает вероятность случайного отключения вашего сервиса, а затраты на дополнительное оборудование и опыт для управления всей шебангой в большинстве случаев затрудняют оправдание требований высокой доступности.
Вы ищете термин «аварийное переключение» - по сути, автоматическое переключение на вторичный ресурс при выходе из строя первичного ресурса.
Хотя настройка кластера серверов - это одновременно отличный учебный опыт и массу удовольствия, это легко становится сложной задачей, и к ней нельзя относиться легкомысленно. Сначала изучите другие альтернативы.
Похоже, вы пытаетесь настроить кластер высокой доступности. Допустим, у вас есть два узла - есть (как минимум) два подхода:
Основы кластера
Задумайтесь на мгновение, что потребуется даже для простого кластера:
Репликация файлов
Теперь у вас есть проблема с синхронизацией файлов между узлами. Поскольку это два отдельных узла, данные необходимо реплицировать по сети.
Балансировки нагрузки
В кластере, где оба узла активны и настроены для обслуживания запросов, вам необходимо отправлять запросы на каждый узел. Обычно это достигается с помощью балансировщика нагрузки, который располагается перед узлами кластера. В зависимости от ваших потребностей существуют простые и эффективные балансировщики нагрузки уровня 3 (например, сети) (например, Linux Virtual Server) или более сложные балансировщики нагрузки уровня 7 (например, с учетом приложений / контента) (например, HAProxy). Некоторые веб-серверы (например, Nginx) также работают как простые балансировщики нагрузки. Проблема, конечно, затем становится одной из того, как справиться с отказом вашего балансировщика нагрузки (поэтому вам может потребоваться установка двух балансировщиков нагрузки для переключения при отказе).
Менеджеры конфигурации
При взаимодействии всех этих различных компонентов вам может понадобиться что-то, что упростит процесс обслуживания каждого узла и управления различными конфигурациями - для этой цели служат менеджеры конфигурации, такие как Puppet и Chef.
Я очень рекомендую DRBD + коросинхронизация Вы можете найти достаточную документацию на Кластеры с нуля
Просто запустите два или более веб-сервера за балансировщиком нагрузки. Для большинства веб-сайтов это более простое и естественное решение, чем кластер высокой доступности. В зависимости от характера вашего сайта вы даже можете использовать циклический DNS вместо балансировщика нагрузки.
Для файлов данных вы можете использовать какую-либо форму общего хранилища, NAS (nfs или cifs) или SAN; или позволить каждому веб-серверу иметь собственное локальное хранилище, которое вы синхронизируете через определенные промежутки времени.
Чтобы обновить веб-серверы (будь то исправление программного обеспечения или обновление обслуживаемых файлов), вы можете вывести один сервер из пула с балансировкой нагрузки, обновить его, протестировать обновления, а затем (если все в порядке) поместить этот сервер обратно в пул. и переходите к следующему.