автоматическая балансировка нагрузки при отказе nginx

Я использую nginx и NginxHttpUpstreamModule для балансировки. Моя конфигурация очень проста:

upstream lb {
    server 127.0.0.1:8081;
    server 127.0.0.1:8082;
}

server {
    listen  89;
    server_name localhost;

    location / {
            proxy_pass      http://lb;
            proxy_redirect  off;
            proxy_set_header        Host            $host;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Но с этой конфигурацией, когда один из 2 серверов backend, nginx все еще направляет запрос на него, и это приводит к таймауту в половине случаев: (

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

Спасибо.

21 голос | спросил robinmag 12 Mayam10 2010, 11:41:03

2 ответа


26

Я думаю, что это потому, что nginx не обнаруживает, что восходящий поток не работает, потому что он находится на одной машине.

Параметры, которые вы ищете: proxy_next_upstream и proxy_connect_timeout .

Попробуйте следующее:

location / {
        proxy_pass              http://lb;
        proxy_redirect          off;
        proxy_next_upstream     error timeout invalid_header http_500;
        proxy_connect_timeout   2;
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
}
ответил Guillaume Filion 12 Maypm10 2010, 22:59:40
2

Эй, пожалуйста, просмотрите wiki: http://wiki.nginx.org/NginxHttpUpstreamModule#server

В принципе, если обнаружен сбой, бэкэнд будет отмечен как «вниз» в течение x секунд, и он попытается снова. Поэтому, если вы продолжаете видеть подключения, вероятно, nginx продолжает проверять, доступен ли бэкэнд.

Однако следует попробовать следующую запись в восходящем блоке, поэтому вы не должны видеть, что нет доступных бэкэнд, если только один снижается.

ответил Martin Fjordvald 12 Maypm10 2010, 12:03:07

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132