nginx tự động cân bằng tải dự phòng


29

Tôi đang sử dụng nginx và NginxHttpUpstreamModule để cân bằng tải. Cấu hình của tôi rất đơn giản:

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;
    }
}

Nhưng với cấu hình này, khi một trong 2 máy chủ phụ trợ ngừng hoạt động, nginx vẫn định tuyến yêu cầu và nó dẫn đến thời gian chờ là một nửa thời gian :(

Có giải pháp nào để khiến nginx tự động định tuyến yêu cầu đến máy chủ khác khi phát hiện máy chủ bị giảm.

Cảm ơn bạn.

Câu trả lời:


33

Tôi nghĩ rằng đó là vì nginx không phát hiện ra rằng dòng ngược xuống vì nó nằm trên cùng một máy.

Các tùy chọn mà bạn đang tìm kiếm là: proxy_next_upstreamproxy_connect_timeout .

Thử đi:

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;
}

Tôi gặp vấn đề với thiết lập Apache / PHP chưa hoàn chỉnh (thiếu tệp thư viện PEAR) đã gây ra lỗi http 500. proxy_next_upstream vừa thử lại trên máy khác - đã trả về OK.
Alister Bulman

5
Tại sao proxy_redirect tắt?
Seun Osewa

2

Xin chào, vui lòng xem wiki: http://wiki.nginx.org/NginxHttpUpstreamModule#server

Về cơ bản nếu một lỗi được phát hiện, phần phụ trợ sẽ được đánh dấu là xuống trong x giây và nó sẽ thử lại. Vì vậy, nếu bạn tiếp tục nhìn thấy các kết nối, có lẽ nginx sẽ tiếp tục kiểm tra xem phần phụ trợ đã có sẵn chưa.

Tuy nhiên, nên thử mục tiếp theo trong khối ngược dòng, vì vậy bạn thực sự không nên thấy rằng không có phụ trợ nào khả dụng nếu chỉ có một mục bị hỏng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.