відмова nginx без балансування навантаження


13

У мене виникають проблеми з налаштуванням nginx.

Я використовую nignx як зворотний проксі. Я хочу надіслати всі свої запити на перший сервер. Якщо перший сервер не працює, я хочу надсилати запити на другий сервер.

Коротше кажучи, як я можу отримати рішення про відмову без балансування навантаження?

Відповіді:


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 перейме на себе.


Що робити, якщо у вас є кілька резервних копій?
Бенні Боттема

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 секунд, а якщо все-таки не вдалося , позначте цей сервер як ДОЛУ протягом 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
        }

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.