Tôi có thể khởi động lại tập lệnh HAProxy này không?


9

Tôi đặt kịch bản này cùng nhau từ nhiều nơi khác nhau. Những gì tôi đang hy vọng là nó sẽ làm như sau khi chạy:

  1. Tạm dừng tất cả lưu lượng truy cập http "MỚI" cho các cổng 80 và 443 - chỉ cần "tạm dừng" chúng, không đưa ra bất kỳ lỗi nào
  2. khởi động lại haproxy một cách duyên dáng khi tất cả các yêu cầu "đang xử lý" được hoàn thành
  3. Hủy tạm dừng lưu lượng http và tiếp tục kinh doanh như bình thường.

Đây có phải là cách nó sẽ chạy? Tôi có bỏ lỡ điều gì không? Chúng tôi có hàng ngàn quy tắc acl dựa trên ip, được lưu trữ trong một tệp có tham chiếu haproxy và chúng tôi cần tải lại nhiều lần trong một phút.

#!/bin/sh

# hold/pause new requests
iptables -I INPUT -p tcp --dport 80 --syn -j DROP
iptables -I INPUT -p tcp --dport 443 --syn -j DROP
sleep 1

# gracefully restart haproxy
/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid)

# allow new requests to come in again
iptables -D INPUT -p tcp --dport 80 --syn -j DROP
iptables -D INPUT -p tcp --dport 443 --syn -j DROP

Chỉnh sửa: Tôi muốn thử nghiệm bằng cách nào đó, nhưng chúng tôi chưa có bất kỳ lưu lượng truy cập nào (ngoại trừ thử nghiệm của tôi).

Nguồn:

http://www.forouzani.com/reload-haproxy-cfg-without-restarting.html

https://github.com/Mirantis/openstack-lbaas/issues/3

HAProxy tải lại duyên dáng với mất gói không

Câu trả lời:


4

Dựa trên những bài viết đó nó sẽ hoạt động tốt.

Chỉ cần nhớ rằng bạn không có lưu lượng truy cập, bạn luôn có thể mô phỏng nó.

Sử dụng công cụ điểm chuẩn apache để đặt một số lưu lượng giả.

Chỉ cần đảm bảo rằng trang bạn đang tải mất vài giây để tải, để kiểm tra trường hợp xấu nhất.

Tôi đã tạo cho bạn một cuốn sách dạy nấu ăn chứng minh rằng cấu hình mà bạn cung cấp hoạt động đú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.