Điểm:1

HAProxy 2.0 - thử lại một số yêu cầu dựa trên URL

lá cờ jp

Tôi đã cài đặt HAProxy phiên bản 2.0.14 và tôi đang tìm kiếm một trường hợp sử dụng đặc biệt mà tôi chưa quản lý để định cấu hình chính xác.

Về cơ bản, tôi có một giao diện người dùng lắng nghe trên một cổng và hai máy chủ phụ trợ. Khi một phiên được bắt đầu, cookie sẽ được sử dụng, do đó, một phiên được liên kết với một máy chủ phụ trợ cụ thể và không thể chia sẻ với một máy chủ khác. Để đạt được điều này tôi đang sử dụng cái bàndính vào từ khóa và tập lệnh LUA để nhận giá trị bắt buộc từ các yêu cầu.

Tuy nhiên, khi yêu cầu đầu tiên đến, nếu máy chủ phụ trợ đã chọn không phản hồi kịp thời, chúng ta nên chuyển đổi dự phòng sang máy chủ khác, vì tại thời điểm đó, cookie vẫn chưa được đặt.

Cho đến nay tôi có cấu hình sau:

toàn cầu
   log 127.0.0.1 len 10000 local2 gỡ lỗi
   chroot /var/lib/haproxy
   người dùng haproxy
   nhóm haproxy
   yêu tinh
   tải lua /opt/LUA/myparser.lua

   ổ cắm thống kê/etc/haproxy/haproxysock cấp quản trị viên

mặc định
   đăng nhập toàn cầu
   tùy chọn httplog
   tùy chọn donlognull
   chế độ http
   hết thời gian kết nối 5000
   khách hàng hết thời gian chờ 50000
   máy chủ hết thời gian chờ 50000
   định dạng nhật ký "IP máy khách: cổng = [%ci:%cp], Thời gian bắt đầu = [%tr], Tên giao diện người dùng = [%ft], Tên phụ trợ = [%b], Máy chủ phụ trợ = [%s], Thời gian để nhận đầy đủ yêu cầu = [%TR ms], Thời gian phản hồi = [%Tr ms], Mã trạng thái = [%ST], Số byte đã đọc = [%B]"

giao diện người dùng chatgw_front
   ràng buộc *:8776

   tùy chọn http-buffer-request
   khai báo yêu cầu chụp len 40000
   chụp yêu cầu http req.body id 0
   yêu cầu chụp http req.hdrs len 2048

   http-request track-sc0 bảng src my_back
   use_backend my_back

phụ trợ my_back
   thăng bằng vòng tròn

   bảng dính loại dây len 32 size 30k hạn sử dụng 30m
   dán vào bảng "lua.parseId" my_back

   máy chủ server1 x.x.x.1:8080 kiểm tra
   máy chủ server2 x.x.x.2.8080 kiểm tra

Điều này thực hiện là nếu máy chủ phụ trợ đã chọn không phản hồi sau 50 giây, nó sẽ đưa ra Thời gian chờ cổng HTTP 504 cho máy khách. Thay vào đó, điều tôi cần là, nếu đây là yêu cầu đầu tiên trong một phiên, thì (và chỉ sau đó) chuyển đổi dự phòng sang máy chủ phụ trợ khác. Chúng tôi có thể nói đây là yêu cầu đầu tiên dựa trên URL.

Tôi đã cố gắng thay đổi phụ trợ như thế này:

phụ trợ my_back
   thăng bằng vòng tròn

   bảng dính loại dây len 32 size 30k hạn sử dụng 30m
   dán vào bảng "lua.parseId" my_back

# Kiểm tra xem đây có phải là yêu cầu "init" không: trong trường hợp này, URL chứa "/init"
   acl is_init path_sub /init

# Trong trường hợp yêu cầu "init", hãy bật gửi lại tới máy chủ phụ trợ khác trong trường hợp không thành công
   tùy chọn gửi lại nếu is_init

# Trong trường hợp có các yêu cầu khác (không phải "init"), chúng tôi đã được liên kết với máy chủ phụ trợ đã chọn do cookie phiên, vì vậy hãy tắt tính năng gửi lại
   không có tùy chọn gửi lại nếu !is_init

   máy chủ server1 x.x.x.1:8080 kiểm tra
   máy chủ server2 x.x.x.2.8080 kiểm tra

Tuy nhiên tôi có cùng một hành vi. Vì vậy, tôi đã cố gắng thêm "thử lại":

phụ trợ my_back
   thăng bằng vòng tròn

   bảng dính loại dây len 32 size 30k hạn sử dụng 30m
   dán vào bảng "lua.parseId" my_back

   acl is_init path_sub /init

   tùy chọn gửi lại nếu is_init

   không có tùy chọn gửi lại nếu !is_init

   thử lại kết nối thất bại phản hồi trống thời gian chờ phản hồi

   máy chủ server1 x.x.x.1:8080 kiểm tra
   máy chủ server2 x.x.x.2.8080 kiểm tra

Bây giờ thì khác: nó đã thử yêu cầu ban đầu 4 lần trên cùng một máy chủ và sau đó nó trả về HTTP 504. Sau đó, nó nhận được yêu cầu tiếp theo (không phải là "init", vì vậy không nên dính vào máy chủ phụ trợ đã chọn ) và thay vào đó, tệp này được gửi đến máy chủ khác.

Về cơ bản, vấn đề của tôi là: cách triển khai chuyển đổi dự phòng chỉ theo yêu cầu đầu tiên? Bất kỳ yêu cầu nào khác phải luôn gắn với máy chủ phụ trợ đã chọn.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.