Настройка обратного прокси-сервера nginx для высокой доступности?

Настройка обратного прокси-сервера nginx для высокой доступности?

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

Я посмотрел на настройки, такие как upstream load balance и proxy_next_upstream settings, но, похоже, это не совсем то, что я ищу. Есть идеи, как настроить nginx для моего сценария? Спасибо.

решение1

upstreamДля достижения этой цели вам понадобится использовать конфигурацию nginx .

upstream mybackend {
    # first app server
    server 192.168.0.1;

    # second app server
    server 192.168.0.2 backup;
}

server {
    ...

    location / {
        proxy_pass http://mybackend;
    }
}

Ключевым здесь является backupпараметр, который сообщает nginx, что нужно использовать этот узел только в том случае, если основные узлы (т. е. узлы без тегов backup) недоступны.

Полныйдокументация здесь.

решение2

После дополнительных поисков я решил использовать OpenResty (https://openresty.org/) для моих нужд, в частности LuaUpstreamNginxModulehttps://github.com/openresty/lua-upstream-nginx-moduleи с некоторыми пользовательскими скриптами Lua, похоже, это работает идеально для моего сценария.

Связанный контент