У меня есть трехслойное веб-решение, подобное этому:
Итак, я работаю над решением с высокой доступностью для веб-серверов в бэкэнде. Моя идея состоит в том, чтобы реплицировать контент между внутренними серверами, и если один из них выйдет из строя, другой будет обслуживать все сайты (это может быть вручную или с использованием Heartbeat).
Проблема в том, что сайты большие по общему размеру и количеству файлов. Я пытаюсь реплицировать содержимое между серверами с помощью rsync, но это занимает много времени. Также я подумал об использовании NFS для обмена содержимым, но это не вариант для высокой доступности. Другой способ заключается в том, чтобы издательская система отправляла контент на оба веб-сервера, но что произойдет, если я поставлю другой веб-сервер в бэкэнд?
Есть лучший способ сделать это? Мне не нужны оба сервера, обслуживающие один и тот же контент одновременно, но синхронизация одного и того же контента является обязательной.
Вам действительно стоит рассмотреть DRBD (RAID-1 через TCP / IP) с многоузловой файловой системой, такой как OCFS или GFS.
Вы также можете рассмотреть возможность получения SAN, на котором вы также сможете разместить любую из этих файловых систем.
Я использую Heartbeat2 в Debian Lenny для аварийного переключения, и он работает очень хорошо. У меня есть веб-приложение, которое обслуживается одним веб-сервером, который в случае возникновения проблемы переключится на другой (например, активный-пассивный кластер с двумя узлами). Данные веб-приложения находятся в файловой системе, а также в базе данных MySQL. Мы используем MySQL в режиме репликации Master-Master для обработки зеркального отображения данных приложения базы данных. Все остальное обрабатывается rsync, когда мы запускаем обновление в реальном времени. Эта установка использовалась в производстве в течение последних 6 месяцев и хорошо зарекомендовала себя в реальных инцидентах. Думаю, из-за этого мы добавили еще 9 к нашему общему времени безотказной работы.
Я удивлен, что ваш rsync занимает много времени, учитывая, что ваши веб-серверы предположительно находятся в одном центре обработки данных или в одной стране, если только они не являются большими файлами, такими как ISO. Возможно, стоит проверить, какие параметры rsync вы используете, чтобы узнать, можно ли их оптимизировать.
Используйте SAN вместо сервера NFS, RAID обеспечит высокую доступность.
Вы можете использовать HAProxy + Keepalived для балансировщиков нагрузки. Для репликации подумайте об оптическом канале, если Ethernet не подходит для ваших нужд. RSync - очень эффективный IMAO (с опциями "-z", которые сжимают данные, он считает его очень эффективным). По крайней мере, если вам нужна ВЫСОКАЯ производительность, вы можете разместить два Apache как виртуальные машины на одном сервере и добавить несколько хороших дисков (15K об / мин) с хорошей рейдовой картой. Это должно обеспечить вам доступность, которую вы ищете