Назад | Перейти на главную страницу

Горячая замена для веб-серверов / серверов баз данных Linux

Есть ли способ выполнить следующее под Linux:

  1. Есть два веб-сервера: основной и резервный.
  2. Есть два сервера баз данных (postgres), основной и резервный.
  3. Веб-серверы синхронизированы друг с другом, т.е. конфигурация / контент / приложения такие же
  4. База данных резервного копирования постоянно синхронизируется с основной базой данных.
  5. Если один из основных серверов выходит из строя, он заменяется резервным на лету.
  6. Когда основной сервер базы данных восстанавливается, все данные с резервного сервера загружаются на него.

Чтобы сделать его более сложным, важная деталь заключается в том, что два сервера на самом деле являются VPS, и они размещены в разных странах разными поставщиками, поэтому ни одно из очевидных решений для серверов в одной подсети / стойке и т. Д. Здесь не сработает.

По сути, мне нужно, чтобы горячая замена работала автоматически без вмешательства пользователя или с минимальным вмешательством пользователя, если это возможно. Процедура восстановления предпочтительно автоматическая, но может включать некоторые ручные действия.

Взгляните на haproxy или Nginx как на балансировщик нагрузки внешнего интерфейса. Это будет отслеживать и перенаправлять трафик с основного на резервный сервер, если основной выходит из строя, или наоборот, то есть при автоматическом переключении при отказе.

Для синхронизации данных между вашей базой данных посмотрите репликация с несколькими мастерами.

http://www.linuxvirtualserver.org/

позволит вам поставить балансировщик нагрузки (или лучше два) перед производственным и резервным серверами.

Вы можете использовать только Heartbeat, что позволит обслуживать общедоступный IP-адрес двумя IP-адресами. Он должен был бы почувствовать, что первичный или вторичный выходят из строя, а затем отправить объявление, чтобы стать этим общедоступным IP.

У вас будет что-то вроде:

Public IP   1.2.3.4
Primary Server 1.2.3.5
Backup Server 1.2.3.6

Все будут видеть один IP-адрес, который будет обслуживаться практически на любой «активной» машине.

Вам, вероятно, следует обратить внимание на отказоустойчивость DNS для веб-уровня и, возможно, на Tungsten Cluster для уровня БД.

Ура