У меня есть два VPS сервера от двух разных хостинговых компаний. Я хочу вернуться ко второму VPS, если первый недоступен (желательно автоматически). Я понимаю, что если у меня есть один балансировщик нагрузки с корневым доступом, я могу настроить его для переключения между разными внутренними серверами. Но возможно ли это сделать с VPS от двух разных хостинговых компаний? Спасибо.
Все немного зависит от ситуации. Стандартным способом достижения более высокой доступности действительно является балансировщик нагрузки. Проблема в том, что вам нужно как минимум два балансировщика нагрузки.
Небольшой рисунок, чтобы было понятно:
+-----------+
+--->| Backend 1 |
+----------------+ | +-----------+
WAN --->| Loadbalancer 1 |---+
+----------------+ | +-----------+
| +--->| Backend 2 |
| Fallback +-----------+
v
+ - - - - - - - -+
| Loadbalancer 2 |
+ - - - - - - - -+
Балансировщик нагрузки стоит перед всеми внутренними серверами и проксирует все запросы на внутренние серверы. Вторичный балансировщик нагрузки также остается в сети и проверяет, доступен ли основной балансировщик. Если в любом случае первичный балансировщик нагрузки выйдет из строя, вторичный балансировщик нагрузки перейдет на его IP-адрес и начнет обслуживание.
[1] Конечно, балансировщику нагрузки требуется больше пропускной способности, чем сумма максимальной пропускной способности внутренних серверов (это не обязательно максимальная пропускная способность интерфейса в зависимости от приложения)
[2] Это не только хорошо. Если оба серверных модуля находятся на максимальной мощности или близки к своей, и балансировщик нагрузки отключит один, другой сервер получит весь трафик, и все это развалится. Это требует хорошей настройки
[3] Фактически, балансировщик нагрузки должен сделать это, если он не хочет направлять трафик вслепую через соединение.
[4] Возможно, вам придется восстановить новое ssl-соединение после beckend, если вы не доверяете серверной сети
[5] Вы должны убедиться, что когда основной выходит из строя, он остается выключенным до тех пор, пока вы не захотите его снова включить, чтобы предотвратить такие вещи, как переключение и двукратное использование IP-адресов.
[6] Вы должны убедиться, что соединение между балансировщиками нагрузки очень стабильное.
Если у вас есть единый балансировщик нагрузки, это не сильно поможет с точки зрения высокой доступности, у вас все равно будет единая точка отказа. CDN раньше было подходящим вариантом, но вы можете подождать еще несколько ответов ...
Даже если у вас есть балансировщик нагрузки в третьем месте (вы можете настроить их в режиме активного ожидания высокой доступности), вы все равно подвержены проблемам с сетью. Поскольку ваши два VPS предположительно расположены в двух разных центрах обработки данных, это может привести к снижению производительности сети, поскольку ваш балансировщик нагрузки будет связываться с VPS, делать запросы и пересылать ответы клиентам, таким образом, если центр обработки данных, содержащий балансировщик, отключится или возникнут проблемы с сетью ваши 2 VPS бесполезны.
Примерная конфигурация может быть такой:
Я делаю следующие предположения:
В любом случае, в этой конфигурации нет автоматического обнаружения сбоев и ответа.
Все, что было опубликовано, хорошо и правильно. Однако я вижу другой подход для достижения описанной цели (резервная система, размещенная сторонней хостинговой компанией):
Резервный DNS
С помощью этого метода поставщик DNS проверяет доступность вашей основной системы и переключается на резервную систему в случае, если проверенная система не отвечает должным образом.
На рынке довольно много поставщиков, предоставляющих этот тип услуг (Amazon Route 53, DNS Made Easy ...). Кроме того, вы получите более быструю систему DNS (всемирно известные DNS-серверы с произвольным прослушиванием).
Но - это не высокая доступность! В случае сбоя требуется некоторое время, чтобы распознать сбой и настроить DNS. Но, возможно, этого уже достаточно для ваших требований.
Возможно, уже слишком поздно, чтобы это было полезно, потому что у вас уже есть настроенный VPS (хотя я не знаю, с какими провайдерами)
Но некоторое время назад мне представилась похожая ситуация. Если я правильно помню, с Amazon EC2 вы можете иметь два узла в разных зонах доступности (зоны доступности существуют в пределах регионов), и эластичный баланс нагрузки между ними, вероятность одновременного выхода двух зон доступности из строя, хотя и не невозможная, составляет довольно тонкий и поэтому риск разброс.
За зоны доступности передачи данных взимается плата, но насколько я помню, она незначительна.