Cách thiết lập RabbitMQ Cluster trên CentOS 7

theanh

Administrator
Nhân viên
RabbitMQ là phần mềm message-broker nguồn mở ban đầu triển khai giao thức AMQP (Advanced Message Queuing Protocol) và mặc dù đã được phát triển và mở rộng để hỗ trợ các giao thức khác như STOMP (Streaming Text Oriented Messaging Protocol) và MQTT (Message Queuing Telemetry Transport).

RabbitMQ là phần mềm message-queueing hỗ trợ gửi và nhận tin nhắn giữa các hệ thống, ứng dụng và dịch vụ phân tán. Nó được viết bằng ngôn ngữ lập trình Erlang và hỗ trợ giao diện máy khách và thư viện cho tất cả các ngôn ngữ lập trình chính bao gồm Python, NodeJS, Java, PHP, v.v.

Trong hướng dẫn này, tôi sẽ chỉ cho bạn từng bước cách thiết lập RabbitMQ Cluster trên CentOS 7 Server. Chúng tôi sẽ thiết lập RabbitMQ Cluster bằng cách sử dụng Three CentOS server, bật RabbitMQ Management và thiết lập chính sách HA cho tất cả các node.

Điều kiện tiên quyết​

  • 3 máy chủ CentOS 7 trở lên10.0.15.21 node01
  • 10.0.15.22 node02
  • 10.0.15.23 node03
[*] Quyền root

Chúng ta sẽ làm gì?​

  1. Thiết lập tệp Hosts
  2. Cài đặt RabbitMQ Server
  3. Bật plugin quản lý RabbitMQ
  4. Cấu hình Firewalld
  5. Thiết lập RabbitMQ Cluster
  6. Cấu hình người dùng quản trị mới
  7. Thiết lập RabbitMQ Queue Mirroring
  8. Kiểm tra

Bước 1 - Thiết lập tệp Hosts​

Trong bước này, chúng ta sẽ chỉnh sửa tệp '/etc/hosts' trên tất cả các máy chủ và ánh xạ từng địa chỉ IP của máy chủ thành tên máy chủ.

Chỉnh sửa tệp '/etc/hosts' bằng trình soạn thảo vim.
Mã:
sudo vim /etc/hosts
Bây giờ hãy dán cấu hình sau vào đó.
Mã:
10.0.15.21 node0110.0.15.22 node0210.0.15.23 node03
Lưu và thoát.

Bước 2 - Cài đặt RabbitMQ Server​

Trong bước này, chúng ta sẽ cài đặt các gói RabbitMQ Server từ kho lưu trữ EPEL (Gói bổ sung cho Enterprise Linux).

Thêm kho lưu trữ EPEL vào hệ thống CentOS 7.
Mã:
sudo yum -y install epel-release
Bây giờ hãy cài đặt RabbitMQ Server vào tất cả các nút 'node01', 'node02' và 'node03' bằng lệnh yum bên dưới.
Mã:
sudo yum -y install rabbitmq-server
Sau khi cài đặt hoàn tất, hãy khởi động dịch vụ RabbitMQ và cho phép dịch vụ này khởi chạy mọi lúc khi khởi động hệ thống.
Mã:
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
Máy chủ RabbitMQ đã được cài đặt trên tất cả cụm nút CentOS 7.

Bước 3 - Kích hoạt Plugin quản lý RabbitMQ​

Trong bước này, chúng tôi sẽ kích hoạt plugin quản lý RabbitMQ. Đây là giao diện cho phép bạn giám sát và xử lý máy chủ RabbitMQ từ trình duyệt web, chạy trên cổng TCP mặc định '15672'.

Bật plugin quản lý RabbitMQ bằng cách chạy lệnh bên dưới.
Mã:
sudo rabbitmq-plugins enable rabbitmq_management
Đảm bảo không có lỗi, sau đó khởi động lại dịch vụ RabbitMQ.
Mã:
sudo systemctl restart rabbitmq-server
Và Quản lý RabbitMQ đã được bật.


Bước 4 - Cấu hình CentOS Firewalld​

Trong hướng dẫn này, chúng ta sẽ bật dịch vụ CentOS firewalld, vì vậy chúng ta cần mở cổng được máy chủ RabbitMQ sử dụng.

Chúng ta sẽ mở cổng sử dụng máy chủ RabbitMQ '5672', cổng để quản lý RabbitMQ '15672' và các cổng cho cụm RabbitMQ '4369, 25672'.

Chạy các lệnh firewalld sau.
Mã:
sudo firewall-cmd --add-port=15672/tcp --permanent
sudo firewall-cmd --add-port=5672/tcp --permanent
sudo firewall-cmd --add-port={4369/tcp,25672/tcp} --permanent
Bây giờ hãy tải lại firewalld và kiểm tra tất cả các cổng đã mở trong danh sách.
Mã:
sudo firewall-cmd --reload
sudo firewall-cmd --list-all


Cấu hình firewalld của CentOS đã hoàn tất và chúng ta đã sẵn sàng để thiết lập Cụm RabbitMQ.

Bước 5 - Thiết lập cụm RabbitMQ​

Để thiết lập cụm RabbitMQ, chúng ta cần đảm bảo tệp '.erlang.cookie' giống nhau trên tất cả các nút. Chúng ta sẽ sao chép tệp '.erlang.cookie' trong thư mục '/var/lib/rabbitmq' từ 'node01' sang nút khác 'node02' và 'node03'.

Sao chép tệp '.erlang.cookie' bằng lệnh scp từ 'node01'.
Mã:
scp /var/lib/rabbitmq/.erlang.cookie root@node02:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@node03:/var/lib/rabbitmq/
Đảm bảo không có lỗi trên cả hai máy chủ.



Tiếp theo, chúng ta cần thiết lập 'node02' và 'node03' để tham gia cụm 'node01'.

Chạy tất cả các lệnh bên dưới trên máy chủ 'node02' và 'node03'.

Khởi động lại dịch vụ RabbitMQ và dừng ứng dụng.
Mã:
sudo systemctl restart rabbitmq-server
sudo rabbitmqctl stop_app
Bây giờ hãy để máy chủ RabbitMQ trên cả hai nút tham gia cụm trên 'node01', sau đó khởi động ứng dụng.
Mã:
sudo rabbitmqctl join_cluster rabbit@node01
sudo rabbitmqctl start_app
Sau khi hoàn tất, hãy kiểm tra trạng thái cụm RabbitMQ.
Mã:
sudo rabbitmqctl cluster_status
Và bạn sẽ nhận được kết quả như được hiển thị bên dưới.

Trên 'node02'.



Trên 'node03'.



Cụm RabbitMQ đã được tạo, với node01, node02 và node03 là thành viên.

Bước 6 - Tạo Người dùng Quản trị viên Mới​

Trong hướng dẫn này, chúng ta sẽ tạo một người dùng quản trị mới cho máy chủ RabbitMQ của mình và xóa người dùng 'khách' mặc định. Chúng tôi sẽ tạo một người dùng mới từ 'node01' và người dùng này sẽ tự động được sao chép vào tất cả các nút trên cụm.

Thêm một người dùng mới có tên 'hakase' với mật khẩu 'aqwe123@'.
Mã:
sudo rabbitmqctl add_user hakase aqwe123@
Thiết lập người dùng 'hakase' làm quản trị viên.
Mã:
sudo rabbitmqctl set_user_tags hakase administrator
Và cấp cho người dùng 'hakase' quyền sửa đổi, ghi và đọc tất cả các vhost.
Mã:
sudo rabbitmqctl set_permissions -p / hakase ".*" ".*" ".*"
Bây giờ hãy xóa người dùng 'guest' mặc định.
Mã:
sudo rabbitmqctl delete_user guest
Và kiểm tra tất cả các users.
Mã:
sudo rabbitmqctl list_users
Và bạn sẽ nhận được kết quả như hiển thị bên dưới.



Một người dùng RabbitMQ mới đã được tạo và người dùng 'khách' mặc định đã bị xóa.

Bước 7 - Thiết lập phản chiếu hàng đợi RabbitMQ​

Thiết lập này là bắt buộc, chúng ta cần cấu hình cụm 'ha policy' để phản chiếu hàng đợi và sao chép tới tất cả các nút cụm. Nếu nút lưu trữ hàng đợi chủ bị lỗi, bản sao cũ nhất sẽ được thăng cấp lên bản sao mới miễn là nó được đồng bộ hóa, tùy thuộc vào chính sách 'ha-mode' và 'ha-params'.

Sau đây là một số ví dụ về chính sách ha của RabbitMQ.

Thiết lập chính sách ha có tên 'ha-all', tất cả các hàng đợi trên cụm RabbitMQ sẽ phản chiếu tới tất cả các nút trên cụm.
Mã:
sudo rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}'
Thiết lập chính sách ha có tên 'ha-two', tất cả tên hàng đợi bắt đầu bằng 'two.', sẽ phản chiếu tới hai nút trên cụm.
Mã:
sudo rabbitmqctl set_policy ha-two "^two\." \
 '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'
Thiết lập chính sách ha có tên là 'ha-nodes', tất cả tên hàng đợi đều bắt đầu bằng 'nodes.' sẽ phản chiếu tới hai nút cụ thể là 'node02' và 'node03' trên cụm.
Mã:
sudo rabbitmqctl set_policy ha-nodes "^nodes\." \
 '{"ha-mode":"nodes","ha-params":["rabbit@node02", "rabbit@node03"]}'
Bây giờ hãy kiểm tra tất cả các chính sách khả dụng bằng lệnh bên dưới.
Mã:
sudo rabbitmqctl list_policies;
Và nếu bạn muốn xóa chính sách, hãy sử dụng lệnh sau.
Mã:
sudo rabbitmqctl clear_policy ha-two

Bước 8 - Kiểm tra​

Mở trình duyệt web của bạn và nhập địa chỉ IP của nút có cổng '15672'.


Nhập tên người dùng 'hakase' với mật khẩu 'aqwe123@'.



Và bạn sẽ nhận được bảng điều khiển quản trị RabbitMQ như bên dưới.



Trạng thái của tất cả các nút cụm đang hoạt động.

Bây giờ hãy nhấp vào menu tab 'Admin' và nhấp vào menu 'Users' ở bên cạnh.



Và bạn sẽ nhận được người dùng hakase trong danh sách.

Bây giờ hãy nhấp vào menu tab 'Admin' và nhấp vào menu 'Policies' ở bên cạnh.



Và bạn sẽ nhận được tất cả các chính sách ha RabbitMQ mà chúng ta đã tạo.

Quá trình cài đặt và cấu hình RabbitMQ Cluster trên máy chủ CentOS 7 đã hoàn tất thành công.

Tham khảo​

 
Back
Bên trên