2012-12-21 26 views
12

Chúng tôi đã thiết lập 3 máy chủ:HAProxy ngẫu nhiên HTTP 503 lỗi

  • máy chủ A với Nginx + HAproxy để thực hiện cân bằng
  • backend server B
  • máy chủ backend C

đây tải là của chúng tôi /etc/haproxy/haproxy.cfg:

global 
     log /dev/log local0 
     log 127.0.0.1 local1 notice 
     maxconn 40096 
     user haproxy 
     group haproxy 
     daemon 

defaults 
     log  global 
     mode http 
     option httplog 
     option dontlognull 
     retries 3 
     option redispatch 
     maxconn 2000 
     contimeout  50000 
     clitimeout  50000 
     srvtimeout  50000 
       stats enable 
       stats uri /lb?stats 
       stats realm Haproxy\ Statistics 
       stats auth admin:admin 
listen statslb :5054 # choose different names for the 2 nodes 
     mode http 
     stats enable 
     stats hide-version 
     stats realm Haproxy\ Statistics 
     stats uri/
     stats auth admin:admin 

listen Server-A 0.0.0.0:80  
     mode http 
     balance roundrobin 
     cookie JSESSIONID prefix 
     option httpchk HEAD /check.txt HTTP/1.0 
     server Server-B <server.ip>:80 cookie app1inst2 check inter 1000 rise 2 fall 2 
     server Server-C <server.ip>:80 cookie app1inst2 check inter 1000 rise 2 fall 3 

Tất cả ba máy chủ có một số lượng tốt của RAM và CPU lõi để xử lý yêu cầu

HTTP ngẫu nhiên 503 lỗi được hiển thị khi duyệt: 503 Service Unavailable - No server is available to handle this request.

Và cũng trên giao diện điều khiển của máy chủ:

Message from [email protected] at Dec 21 18:27:20 ... 
haproxy[1650]: proxy Server-A has no server available! 

Note 90% thời gian không có lỗi. Những lỗi này xảy ra ngẫu nhiên.

+3

Bạn đã bao giờ tìm thấy câu trả lời chưa? Chúng tôi có một cái gì đó tương tự. – jeesty

+0

Tìm câu trả lời ... Vui lòng chấp nhận câu trả lời. – Siten

Trả lời

0

Khó nói mà không có thêm chi tiết, nhưng có thể bạn vượt quá giới hạn kết nối được định cấu hình cho từng phụ trợ không? Giao diện người dùng thống kê hiển thị các thống kê này trên cả giao diện người dùng và các phần phụ trợ riêng lẻ.

0

Máy chủ của bạn có thể chia sẻ, có thể là một tài nguyên chung đang hết thời gian và yêu cầu kiểm tra tình trạng của bạn được thực hiện cùng một lúc (và do đó kéo các máy chủ phụ trợ cùng một lúc) .

Bạn có thể thử sử dụng tùy chọn HAProxy spread-checks để ngẫu nhiên kiểm tra sức khỏe.

25

Tôi gặp vấn đề tương tự. Sau nhiều ngày kéo tóc ra, tôi đã tìm ra vấn đề.

Tôi đã chạy hai phiên bản HAProxy. Một là một zombie mà bằng cách nào đó không bao giờ bị giết trong khi có thể cập nhật hoặc khởi động lại haproxy. Tôi nhận thấy điều này khi làm mới trang thống kê/haproxy và PID sẽ thay đổi giữa hai số khác nhau. Trang có một trong những con số có số liệu thống kê kết nối vô lý. Để xác nhận tôi đã làm

netstat -tulpn | grep 80 

và thấy hai quá trình haproxy nghe cổng 80.

Để khắc phục vấn đề tôi đã làm một "giết xxxx" trong đó xxxx là pid với số liệu thống kê đáng ngờ.

+0

Omg, cảm ơn. Đã có hơn 10 quy trình nghe cổng 80. Jeez. –

+0

Cảm ơn bạn !! Bạn vừa cứu cuộc sống của tôi – hamou92

+0

Chắc chắn đã xé tóc ra trong 2 ngày. Cảm ơn bạn, cảm ơn bạn –

0

Tôi gặp vấn đề tương tự, do 2 dịch vụ HAProxy chạy trong hộp linux, nhưng với tên/pid/tài nguyên khác nhau. Trừ khi tôi dừng việc không mong muốn, các trường hợp cần thiết sẽ ném ngẫu nhiên 503 lỗi, giả sử 1 trong 5 lần.

Đã cố gắng sử dụng hộp Linux đơn cho nhiều định tuyến URL nhưng có vẻ như một hạn chế trong haproxy hoặc tệp cấu hình của haproxy tôi đã xác định.

0

Thêm câu trả lời của tôi ở đây cho bất kỳ ai khác gặp vấn đề tương tự chính xác này nhưng không có giải pháp nào được liệt kê ở trên được áp dụng. Xin lưu ý rằng câu trả lời của tôi không áp dụng cho mã gốc được liệt kê ở trên.

Đối với bất kỳ ai khác có thể gặp sự cố này, hãy kiểm tra cấu hình của bạn và xem liệu bạn có nhầm lẫn đặt cùng một dòng "liên kết" vào nhiều phần trong cấu hình của mình không.Haproxy không kiểm tra điều này trong khi khởi động, và tôi dự định gửi nó như là một kiểm tra xác nhận hợp lệ cho các nhà phát triển. Trong trường hợp của tôi, tôi có 3 phần khác nhau của cấu hình, và tôi nhầm lẫn đặt cùng một ràng buộc IP ở hai nơi khác nhau. Đó là khoảng 50/50 lượt xem liệu có sử dụng phần chính xác hay không hoặc phần không chính xác đã được sử dụng. Ngay cả khi phần chính xác đã được sử dụng, khoảng một nửa số yêu cầu vẫn nhận được số 503.

Các vấn đề liên quan