аварийное переключение nginx без балансировки нагрузки

13

У меня проблемы с настройкой nginx.

Я использую Nignx в качестве обратного прокси. Я хочу отправить все свои запросы на мой первый сервер. Если первый сервер не работает, я хочу отправить запросы на второй сервер.

Короче говоря, как я могу иметь отказоустойчивое решение без балансировки нагрузки?

Serhat
источник

Ответы:

13

То, что вы хотите, это активная + пассивная установка. Вот пример фрагмента nginx conf, чтобы начать работу:

upstream backend {
    server 1.2.3.4:80 fail_timeout=5s max_fails=3;
    server 4.5.6.7:80 backup;
}

server {
    listen 80;
    server_name whatevs.com;

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

Итак, «нормально», все запросы будут отправляться на хост 1.2.3.4. Если мы получим три отказа в этом поле, то 4.5.6.7 вступит во владение.

chrskly
источник
Что делать, если у вас есть несколько резервных копий?
Бенни Боттема,
0

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

http{
 upstream servername{
    ip_hash//for sticky hash
    least_conn//FOR least connection 
    sever localhost:1001;
    sever localhost:1002;
    sever localhost:1003;
}
Акшай Панвар
источник
0

Расширяя ответ chrskly, вы можете настроить 3 флага / конфига.

  1. fail_timeout : общее время неудачных попыток, а также пометить сервер как DOWN для того же времени. Если 5 секунд, то будет предпринята попытка max_fail в течение 5 секунд, а если попытка не удастся, пометьте этот сервер как DOWN на 5 секунд.
  2. max_fail : максимальное количество попыток
  3. proxy_connect_timeout : время ожидания соединения.

В следующем примере GRPC, если основной сервер не может быть подключен в течение 7 секунд, переключитесь на резервное копирование и отметьте основной сервер как отключенный на 6000 с:

upstream grpcservers {
    server 192.168.0.XX:9997 fail_timeout=6000s max_fails=1;  # After 1 fail in 6000s, Main server is marked unavailable for 6000s.
    server 192.168.0.XX:9999 backup;
        } 
location / {
            grpc_pass grpc://grpcservers;
            grpc_connect_timeout 7s;  # If conn cant be made in 7sec, switch to backup
        }

Прахар Пандей
источник