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.
Chỉnh sửa tệp '/etc/hosts' bằng trình soạn thảo vim.
Bây giờ hãy dán cấu hình sau vào đó.
Lưu và thoát.
Thêm kho lưu trữ EPEL vào hệ thống CentOS 7.
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.
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áy chủ RabbitMQ đã được cài đặt trên tất cả cụm nút CentOS 7.
Bật plugin quản lý RabbitMQ bằng cách chạy lệnh bên dưới.
Đảm bảo không có lỗi, sau đó khởi động lại dịch vụ RabbitMQ.
Và Quản lý RabbitMQ đã được bật.
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.
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.
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.
Sao chép tệp '.erlang.cookie' bằng lệnh scp từ 'node01'.
Đả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'.
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.
Sau khi hoàn tất, hãy kiểm tra trạng thái cụm RabbitMQ.
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.
Thêm một người dùng mới có tên 'hakase' với mật khẩu 'aqwe123@'.
Thiết lập người dùng 'hakase' làm quản trị viên.
Và cấp cho người dùng 'hakase' quyền sửa đổi, ghi và đọc tất cả các vhost.
Bây giờ hãy xóa người dùng 'guest' mặc định.
Và kiểm tra tất cả các 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.
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.
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.
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.
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.
Và nếu bạn muốn xóa chính sách, hãy sử dụng lệnh sau.
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.
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
Chúng ta sẽ làm gì?
- Thiết lập tệp Hosts
- Cài đặt RabbitMQ Server
- Bật plugin quản lý RabbitMQ
- Cấu hình Firewalld
- Thiết lập RabbitMQ Cluster
- Cấu hình người dùng quản trị mới
- Thiết lập RabbitMQ Queue Mirroring
- 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
Mã:
10.0.15.21 node0110.0.15.22 node0210.0.15.23 node03
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
Mã:
sudo yum -y install rabbitmq-server
Mã:
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
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ã:
sudo systemctl restart rabbitmq-server
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
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/
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
Mã:
sudo rabbitmqctl join_cluster rabbit@node01
sudo rabbitmqctl start_app
Mã:
sudo rabbitmqctl cluster_status
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@
Mã:
sudo rabbitmqctl set_user_tags hakase administrator
Mã:
sudo rabbitmqctl set_permissions -p / hakase ".*" ".*" ".*"
Mã:
sudo rabbitmqctl delete_user guest
Mã:
sudo rabbitmqctl list_users
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"}'
Mã:
sudo rabbitmqctl set_policy ha-two "^two\." \
'{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'
Mã:
sudo rabbitmqctl set_policy ha-nodes "^nodes\." \
'{"ha-mode":"nodes","ha-params":["rabbit@node02", "rabbit@node03"]}'
Mã:
sudo rabbitmqctl list_policies;
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.