Thiết Lập Hệ Thống Hàng Đợi Thông Điệp Đảm Bảo Tính Sẵn Sàng Cao Với RabbitMQ và HAProxy

Cấu hình môi trường triển khai:

  • Máy chủ chính: 192.168.1.10 (mq-primary)
  • Máy chủ dự phòng: 192.168.1.11 (mq-secondary)
  • Load balancer: 192.168.1.12 (lb-proxy)

Đảm bảo cập nhật file /etc/hosts trên tất cả máy để phân giải tên miền nội bộ.

Cài đặt RabbitMQ Cluster

Thực hiện cài đặt trên cả hai máy chủ mq-primary và mq-secondary:

sudo apt update
sudo apt install -y erlang-nox rabbitmq-server
sudo rabbitmq-plugins enable rabbitmq_management
sudo systemctl restart rabbitmq-server

Tạo tài khoản quản trị với quyền hạn đầy đủ:

sudo rabbitmqctl add_user sysadmin P@ssw0rdSecure
sudo rabbitmqctl set_user_tags sysadmin administrator
sudo rabbitmqctl set_permissions -p / sysadmin ".*" ".*" ".*"

Đồng bộ hóa cluster bằng cách sao chép file xác thực:

sudo systemctl stop rabbitmq-server
sudo scp mq-primary:/var/lib/rabbitmq/.erlang.cookie /var/lib/rabbitmq/
sudo chmod 600 /var/lib/rabbitmq/.erlang.cookie
sudo chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie

Thiết lập cluster mode trên mq-secondary:

sudo rabbitmqctl stop_app
sudo rabbitmqctl join_cluster --ram rabbit@mq-primary
sudo rabbitmqctl start_app

Kiểm tra trạng thái cluster:

sudo rabbitmqctl cluster_status

Áp dụng chính sách mirror cho tất cả hàng đợi:

sudo rabbitmqctl set_policy mirror-all ".*" '{"ha-mode":"all"}'

Cấu hình HAProxy làm bộ cân bằng tải

Cài đặt trên máy chủ lb-proxy:

sudo apt install -y haproxy

Chỉnh sửa file cấu hình /etc/haproxy/haproxy.cfg:

global
    log /dev/log local0
    maxconn 20000
    user haproxy
    group haproxy
    daemon

defaults
    log global
    mode tcp
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

# Cân bằng tải cho kết nối AMQP
frontend amqp_front
    bind *:5672
    default_backend amqp_back

backend amqp_back
    balance leastconn
    server mq-primary 192.168.1.10:5672 check inter 3000 rise 3 fall 2
    server mq-secondary 192.168.1.11:5672 check inter 3000 rise 3 fall 2

# Giao diện quản trị HAProxy
listen haproxy-admin
    bind *:8080
    stats enable
    stats uri /monitor
    stats auth monitor:SecurePass123
    stats refresh 10s

Khởi động lại dịch vụ sau khi cấu hình:

sudo systemctl restart haproxy

Kiểm tra tính sẵn sàng cao

Truy cập giao diện quản trị HAProxy tại http://192.168.1.12:8080/monitor để xác minh trạng thái hoạt động của các node. Thực hiện ngắt kết nối tạm thời máy chủ mq-primary và theo dõi quá trình chuyển tiếp tự động:

# Trên ứng dụng client
while true; do
  rabbitmqadmin publish exchange=amq.default routing_key=test payload="Test message" -u sysadmin -p P@ssw0rdSecure --host=192.168.1.12 --port=5672
  sleep 1
done

Quá trình xử lý sẽ tiếp tục không gián đoạn khi một node bị ngắt kết nối, với thời gian chuyển tiếp trung bình dưới 3 giây.

Thẻ: rabbitmq HAProxy clustering HighAvailability AMQP

Đăng vào ngày 20 tháng 6 lúc 01:01