chuyển đổi dự phòng nginx mà không cân bằng tải


13

Tôi gặp sự cố khi định cấu hình nginx.

Tôi đang sử dụng nignx làm proxy ngược. Tôi muốn gửi tất cả các yêu cầu của tôi đến máy chủ đầu tiên của tôi. Nếu máy chủ đầu tiên không hoạt động, tôi muốn gửi yêu cầu đến máy chủ thứ hai.

Nói tóm lại, làm thế nào tôi có thể có một giải pháp chuyển đổi dự phòng mà không cần cân bằng tải?

Câu trả lời:


13

Những gì bạn muốn là một thiết lập chủ động + thụ động. Dưới đây là một ví dụ nginx conf snippet để giúp bạn đi:

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

Vì vậy, 'thông thường', tất cả các yêu cầu sẽ chuyển đến máy chủ 1.2.3.4. Nếu chúng tôi nhận được ba thất bại cho hộp đó, thì 4.5.6.7 sẽ tiếp quản.


Nếu bạn có nhiều bản sao lưu thì sao?
Benny Bottema

0

Cân bằng tải trong nginx rất dễ dàng, chúng tôi chỉ định cấu hình tên máy chủ trong phạm vi ngược dòng, nơi chúng tôi viết danh sách máy chủ để cân bằng tải.
nginx hỗ trợ thuật toán khác nhau để cân bằng tải theo mặc định, nó là vòng tròn, nhưng chúng tôi định cấu hình nó với các khóa khác nhau như 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

Mở rộng câu trả lời của chrskly, bạn có thể muốn định cấu hình 3 cờ / cấu hình.

  1. fail_timeout : Tổng thời gian bằng các lần thử thất bại và cũng đánh dấu máy chủ là XUỐNG cùng thời điểm đó. Nếu 5 giây, sau đó sẽ thử các lần thử max_fail trong 5 giây và nếu vẫn không thành công, hãy đánh dấu máy chủ đó là DOWN trong 5 giây.
  2. max_fail : Số lần thử tối đa
  3. proxy_connect_timeout : Lượng thời gian chờ kết nối.

Trong ví dụ GRPC sau, nếu máy chủ chính không thể được kết nối trong 7 giây, thì hãy chuyển sang sao lưu và đánh dấu máy chủ chính xuống dưới 6000 giây:

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
        }

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.