HAProxy chuyển sang sao lưu trên 500 lỗi và / hoặc máy chủ ngừng hoạt động


8

Tôi đang thiết lập HAProxy trước chỉ có 2 máy chủ phụ trợ, với một cấu hình cụ thể: mọi yêu cầu nên đến máy chủ A; nhưng, nếu máy chủ A trả về mã lỗi 5xx, tất cả yêu cầu sẽ chuyển đến máy chủ dự phòng B. Khi A trả về "lên", tất cả các yêu cầu sẽ chuyển đến A.

Tôi đang thử cấu hình này:

backend example_cluster
        balance roundrobin
        option httpclose
        option forwardfor

        option httpchk HEAD /ping.html HTTP/1.0\r\nHost:www.example.com
        http-check disable-on-404
        default-server error-limit 1 on-error mark-down

        redirect scheme https if !{ ssl_fc }
        server node1 1.2.3.4:80 check observe layer7
        server node_back 5.6.7.8:443 backup ssl verify none

Nhưng nó không hoạt động vì hai lý do:

  1. Tất cả các yêu cầu được định tuyến đến máy chủ node_back (B), ngay cả khi nút1 (A) bật lên.
  2. Dường như không có httpcheck nào được thực hiện đối với máy chủ A; hoặc tốt hơn, trong syslog tôi không thấy bất kỳ lỗi nào liên quan đến máy chủ A.

Nếu tôi xóa dòng "tùy chọn httpchk" và hai dòng ngay bên dưới đó; và tôi cũng loại bỏ "quan sát lớp 7" trong máy chủ A; HAProxy hoạt động bằng cách định tuyến tất cả các yêu cầu đến nút A. Nhưng, rõ ràng, khi máy chủ A trả về 500, HAProxy không chuyển sang B. Vì vậy, tôi cho rằng vấn đề có thể nằm ở cấu hình httpchk tùy chọn.


1
Nó hoàn toàn có thể làm được với nginx. Trên thực tế, tôi đang tránh haproxy trên cân bằng web, vì nginx linh hoạt và đơn giản hơn, vì đó là máy chủ web. Nhưng, vì câu hỏi ban đầu là về haproxy, tôi không cảm thấy có quyền đưa ra câu trả lời về nginx. Nhưng nếu bạn muốn nó, tôi có thể. Rốt cuộc, gần một năm trôi qua, tôi nghĩ dù sao bạn cũng đã tìm ra giải pháp.
drookie

Câu trả lời:



0

Bằng cách này, tôi đã tìm thấy cấu hình pre-nginx cho haproxy của mình và tôi nghĩ bạn nên dùng thử:

frontend foo
    bind 192.168.0.1:9080
    option httpchk
    default_backend bar-web

backend bar-web
    mode http
    balance roundrobin
    server bar1 192.168.1.2:9080 check observe layer4 weight 50
    server bar2 192.168.1.3:9080 check observe layer4 weight 50
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.