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).
Phần mềm message-queueing/message-broker được sử dụng để 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. RabbitMQ được viết bằng ngôn ngữ lập trình Erlang, 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 cách thiết lập RabbitMQ Cluster trên Ubuntu 18.04 Server. Tôi sẽ cài đặt RabbitMQ Cluster bằng ba máy chủ Ubuntu, bật RabbitMQ Management và thiết lập chính sách HA cho tất cả các nút.
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.
Chạy lệnh sau.
Bây giờ hãy cài đặt các gói RabbitMQ server từ kho lưu trữ Ubuntu bằng lệnh apt 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.
RabbitMQ Server đã được cài đặt trên Ubuntu 18.04.
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.
Plugin quản lý RabbitMQ đã được bật.
Thêm dịch vụ ssh vào tường lửa UFW và bật dịch vụ tường lửa.
Bây giờ hãy thêm các cổng tcp RabbitMQ mới '5672,15672,4369,25672'.
Sau đó, hãy kiểm tra danh sách các cổng tường lửa UFW.
Cấu hình tường lửa Ubuntu UFW đã hoàn tất và chúng ta đã sẵn sàng để thiết lập RabbitMQ Cluster.
Sao chép tệp '.erlang.cookie' bằng lệnh scp từ 'hakase-ubuntu01'.
Đả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 'hakase-ubuntu02' và 'hakase-ubuntu03' để tham gia cụm 'hakase-ubuntu01'.
Lưu ý:
Bây giờ hãy để máy chủ RabbitMQ trên cả hai nút tham gia cụm trên 'hakase-ubuntu01', sau đó khởi động ứng dụng.
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ư bên dưới.
Cụm RabbitMQ đã được tạo, với hakase-ubuntu01, hakase-ubuntu02 và hakase-ubuntu03 làm 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ả người dùng khả dụng.
Và bạn sẽ nhận được kết quả như bên dưới.
Một người dùng quản trị RabbitMQ mới đã được tạo và người dùng 'khách' mặc định đã bị xóa.
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'.
Dưới đâ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 là '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 là '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 khả dụng cao có tên là 'ha-nodes' sẽ chứa tất cả các hàng đợi có tên bắt đầu bằng 'nodes'. Chúng tôi sẽ phản chiếu tới hai nút cụ thể là 'hakase-ubuntu02' và 'hakase-ubuntu03' trong cụm.
RabbitMQ liệt kê các chính sách ha.
RabbitMQ xóa chính sách ha cụ thể.
http://10.0.15.21: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ư hiển thị 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ủ Ubuntu 18.04 đã hoàn tất thành công.
Phần mềm message-queueing/message-broker được sử dụng để 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. RabbitMQ được viết bằng ngôn ngữ lập trình Erlang, 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 cách thiết lập RabbitMQ Cluster trên Ubuntu 18.04 Server. Tôi sẽ cài đặt RabbitMQ Cluster bằng ba máy chủ Ubuntu, bật RabbitMQ Management và thiết lập chính sách HA cho tất cả các nút.
Điều kiện tiên quyết
- 3 Máy chủ Ubuntu 18.04 trở lên10.0.15.21 hakase-ubuntu01
- 10.0.15.22 hakase-ubuntu02
- 10.0.15.23 hakase-ubuntu03
Chúng ta sẽ làm gì?
- Thiết lập tệp máy chủ
- Cài đặt máy chủ RabbitMQ
- Bật plugin quản lý
- Thiết lập UFW Tường lửa
- Thiết lập cụm RabbitMQ
- Thiết lập người dùng quản trị viên mới
- Cập nhật hàng đợi thiết lập RabbitMQ
- Kiểm tra
Bước 1 - Thiết lập tệp máy chủ
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 hakase-ubuntu0110.0.15.22 hakase-ubuntu0210.0.15.23 hakase-ubuntu03
Bước 2 - Cài đặt RabbitMQ Server
Trước khi cài đặt RabbitMQ server, hãy đảm bảo rằng tất cả các kho lưu trữ đều được cập nhật.Chạy lệnh sau.
Mã:
sudo apt update
sudo apt upgrade
Mã:
sudo apt install rabbitmq-server -y
Mã:
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
Bước 3 - Kích hoạt RabbitMQ Management Plugins
Trong bước này, chúng ta sẽ bậ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 - Thiết lập tường lửa UFW
Trong hướng dẫn này, chúng tôi sẽ bật tường lửa UFW của Ubuntu. Chúng ta cần mở một số cổng sẽ được máy chủ RabbitMQ sử dụng.Thêm dịch vụ ssh vào tường lửa UFW và bật dịch vụ tường lửa.
Mã:
sudo ufw allow ssh
sudo ufw enable
Mã:
sudo ufw allow 5672,15672,4369,25672/tcp
Mã:
sudo ufw status
Cấu hình tường lửa Ubuntu UFW đã hoàn tất và chúng ta đã sẵn sàng để thiết lập RabbitMQ Cluster.
Bước 5 - Thiết lập RabbitMQ Cụm
Để 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 tôi sẽ sao chép tệp '.erlang.cookie' trên thư mục '/var/lib/rabbitmq' từ 'hakase-ubuntu01' sang nút khác 'hakase-ubuntu02' và 'hakase-ubuntu03'.Sao chép tệp '.erlang.cookie' bằng lệnh scp từ 'hakase-ubuntu01'.
Mã:
scp /var/lib/rabbitmq/.erlang.cookie root@hakase-ubuntu02:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@hakase-ubuntu03:/var/lib/rabbitmq/
Tiếp theo, chúng ta cần thiết lập 'hakase-ubuntu02' và 'hakase-ubuntu03' để tham gia cụm 'hakase-ubuntu01'.
Lưu ý:
- Chạy lệnh bên dưới trên máy chủ hakase-ubuntu02' và 'hakase-ubuntu03'.
Mã:
sudo systemctl restart rabbitmq-server
sudo rabbitmqctl stop_app
Mã:
sudo rabbitmqctl join_cluster rabbit@hakase-ubuntu01
sudo rabbitmqctl start_app
Mã:
sudo rabbitmqctl cluster_status
Cụm RabbitMQ đã được tạo, với hakase-ubuntu01, hakase-ubuntu02 và hakase-ubuntu03 làm thành viên.
Bước 6 - Thiết lập người dùng quản trị 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 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ừ 'hakase-ubuntu01' và người dùng này sẽ tự động 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 quản trị 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 RabbitMQ Phản chiếu hàng đợi
Theo mặc định, nội dung của hàng đợi trong cụm RabbitMQ nằm trên một nút duy nhất (nút mà hàng đợi được khai báo).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'.
Dưới đâ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 là '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@hakase-ubuntu02", "rabbit@hakase-ubuntu03"]}'
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'.http://10.0.15.21: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ư hiển thị 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ủ Ubuntu 18.04 đã hoàn tất thành công.