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.