Это может быть глупый вопрос, но через некоторое время я не могу найти ответ или просто не знаю, как его задать.
У меня есть веб-приложение, работающее на сервере с именем myserver1. Я вызвал myserver2 с идентичным экземпляром веб-приложения и настроил репликацию между двумя базами данных на двух устройствах. Теперь я хотел бы использовать nginx для некоторой балансировки нагрузки, а также сделать так, чтобы один сервер взял на себя, если другой не выдержит.
Большая часть документации nginx написана для такого простого сценария, но, похоже, это указывает на то, что вы помещаете сервер nginx перед веб-серверами. Казалось бы, это еще одна единственная точка отказа. Как сделать сам nginx избыточным? Можете ли вы просто запустить nginx на обоих ящиках веб-сервера? Если да, то куда вы указываете DNS-запись myapp.mydomain.com?
РЕДАКТИРОВАТЬ: Я думаю, я должен добавить, что это для внутреннего приложения с относительно небольшой базой пользователей. Меня больше всего беспокоит то, что наши внутренние пользователи все еще могут получить к нему доступ, если мы потеряем сервер или подключение к одному из центров обработки данных. Я просто не понимаю, как это сделать на nginx, не вводя еще одну единственную точку отказа.
Единственный способ балансировки нагрузки в nginx - это иметь один интерфейсный (обратный прокси) хост-сервер с балансировкой нагрузки.
Идея / гипотеза, лежащая в основе этого дизайна, заключается в том, что нагрузка будет происходить только на бэкэнде и что ваша единственная точка входа всегда сможет справиться с любым объемом трафика, с которым она должна иметь дело, поскольку она просто перенаправляет и никогда ничего не обрабатывает сама.
То, о чем вы говорите, на самом деле аварийное переключениене балансировки нагрузки. Вас беспокоит отказ вашей единственной точки входа.
Как объяснил @coding_hero, это не имеет ничего общего с nginx, это то, что нужно решать на нижележащих уровнях (ОС / сеть).
Один из способов сделать это можно прочитать на следующей странице (хотя в старом примере говорится о старой стабильной версии Debian, команды, возможно, необходимо обновить): http://linuxmanage.com/fast-failover-configuration-with-drbd-and-heartbeat-on-debian-squeeze.html. Heartbeat - это хорошо известная технология, позволяющая нескольким идентичным серверам контролировать друг друга, выбирать ведущего и переключаться на ведомые при необходимости.
У вас даже есть выделенное сетевое оборудование, выполняющее ту же работу, перенаправляя (или, может быть, на лету перенастраивая маршрутизаторы для перенаправления?) Трафика к выбранному в данный момент мастеру.