У меня есть два сервера A и B. В большинстве случаев оба сервера не работают одновременно.балансировка нагрузки nginx - сохранить последний рабочий сервер
Итак, когда A работает, скорее всего, B не работает. Когда B работает, скорее всего, A не работает. Этот переход между A и B может произойти через несколько недель.
Так что я хотел бы, чтобы nginx перенаправлял на работающий сервер и держал, используя этот сервер, пока он не опустится.
Я попытался это решение:
upstream backend {
server SERVER_A;
server SERVER_B;
}
server {...}
Это работает, но я вижу в журналах, что он периодически пытается соединиться с «вниз» сервер.
Тогда я попробовал, что:
upstream backend {
server SERVER_A;
server SERVER_B backup;
}
server {...}
Это работает правильно, если SERVER_A вверх. Но если это SERVER_B, то он часто пытается получить доступ к SERVER_A. Фактически, в этом случае правильной конфигурацией будет «сервер SERVER_A backup;» но я не думаю, что мы можем сделать динамическую реконфигурацию ;-)
На самом деле, не очень важно, что nginx периодически пытается получить доступ к серверу вниз, но если я могу избежать этого, используя правильную конфигурацию, было бы лучше.
Я знаю об этом аргументе fail-timeout. Но я не думаю, что это действительно решит мою проблему, и это может даже добавить время простоя во время переключения.
Заранее спасибо.
* Этот переключатель между A и B может произойти через несколько недель. * Это поведение контролируется? Есть ли какая-либо процедура, которую вы можете подключить, чтобы пометить другой сервер? – Anatoly
Да, это контролируется с помощью сценария bash. Если я смогу как-нибудь сообщить nginx об переключателе, это может быть даже лучше. –