Hướng dẫn cài đặt RabbitMQ trên Ubuntu 20.04

Chào các bạn,

Bài viết hôm nay mình sẽ hướng dẫn các bạn cài đặt RabbitMQ trên Ubuntu 20.04.

Giới thiệu về RabbitMQ

RabbitMQ là một message broker dùng để liên kết các thành phần trong một hệ thống phân tán và là công cụ trung gian phân phối Message từ Producer đến Consumer.

Các Producer và Consumer có thể khác biệt và ngôn ngữ tuy nhiên đều có thể giao tiếp với nhau bằng các Message Protocol như Advanced Message Queuing Protocol (AMQP), Oriented Messaging Protocol (STOMP), Message Queuing Telemetry Transport (MQTT), …v.v. Việc sử dụng Message Broker giúp đơn giản hóa công việc lập trình khi ứng dụng yêu cầu một hệ thống lớn, phức tạp, nhiều thành phần và nhiều ngôn ngữ lập trình khác nhau.

Cài đặt RabbitMQ trên Ubuntu 20.04

 Cài đặt Erlang

  • Import Erlang GPG key:
wget -O- <https://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc> | sudo apt-key add
  • Add the Erlang Repository:
echo "deb <https://packages.erlang-solutions.com/ubuntu> focal contrib" | sudo tee /etc/apt/sources.list.d/rabbitmq.list
  • Install Erlang:
apt update
apt install erlang -y

Cài đặt RabbitMQ

  • Add RabbitMQ Repository
curl -s <https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.deb.sh> | sudo bash
  • Install RabbitMQ:
apt update
apt install rabbitmq-server -y
  • Check status:
systemctl status  rabbitmq-server.service

Enable Plugin giao diện quản lý của RabbitMQ

rabbitmq-plugins enable rabbitmq_management
chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/

Tiếp theo các bạn tạo 1 tài khoản để đăng nhập và gán quyền administrator cho tài khoản đó.

rabbitmqctl add_user admin <adminpassword>
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

Sau đó các bạn truy cập vào đường dẫn sau để thực hiện login vào trang giao diện quản lý của RabbitMQ.

http://<ip-address>:15672/

 

Rabbit Clustering

Một RabbitMQ Broker là một logical group của một hoặc nhiều Erlang nodes, trên đó mỗi node đều chạy ứng dụng RabbitMQ. Các nodes trong RabbitMQ đều có cùng level và ngang hàng nhau nên được gọi là peers, các peers sẽ cùng chia sẻ và đồng bộ các thông tin như users, virtual hosts, queues, exchanges, bindings. Các node có thể join và leave cụm Cluster để hoạt động độc lập chỉ với một vài cấu hình đơn giản. RabbitMQ hỗ trợ rất nhiều phương thức để triển khai 1 cụm cluster, chúng ta sẽ cùng thực hiện triển khai RabbitMQ cluster với phương thức đơn giản nhất đó là cấu hình trực tiếp từ rabbitmqctl.

Các node trong Cluster sẽ xác thực các peers bằng cách sử dụng cookie, cookie này là phương thức xác minh khi thực hiện trao đổi dữ liệu giữa các node, do đó, tất cả các nodes đều phải có cùng 1 giá trị cookie giống nhau, giá trị này được lưu tại

cat /var/lib/rabbitmq/.erlang.cookie
RBDGXOHPLESIQPXQDTOH

Sau khi setup 3 server RabbitMQ thành công, chúng ta add Cookie từ 1 node bất kỳ vào các nodes còn lại, ví dụ copy từ Host1 qua Host2 và Host3. Stop rabbitmq-server trước khi thực hiện.

systemctl stop rabbitmq-server
echo -n "RBDGXOHPLESIQPXQDTOH" > /var/lib/rabbitmq/.erlang.cookie
systemctl start rabbitmq-server

Add file hosts IP của toàn bộ cụm Cluster vào mỗi node để đảm bảo các node có thể nhìn thấy nhau

10.0.0.1	host1
10.0.0.2	host2
10.0.0.3	host3

Để thực hiện Join vào một Cluster, chúng ta thực hiện như sau, tại host2 và host3

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@host1
rabbitmqctl start_app

Sau khi Join thành công host2 và host3 vào host1, gõ lệnh sau để kiểm tra tình trạng hoạt động của Cluster

rabbitmqctl cluster_status
Cluster status of node rabbit@host1 ...
[{nodes,[{disc,['rabbit@host1',rabbit@host2,rabbit@host3]}]},
 {running_nodes,[rabbit@host3,rabbit@host2,'rabbit@host1']},
 {cluster_name,<<"rabbit@localhost">>},
 {partitions,[]},
 {alarms,[{rabbit@host3,[]},
          {rabbit@host2,[]},
          {'rabbit@host1',[]}]}]

Tại dòng {running_nodes}, chúng ta thấy hiển thị đầy đủ danh sách các Host đã cấu hình.

Để leave 1 node ra khỏi Cluster, chúng ta thực hiện như sau

rabbitmqctl stop_app 
rabbitmqctl reset
rabbitmqctl start_app

Sau khi leave Cluster thành công và start lại, node đó sẽ tự nó đứng ra hoạt động độc lập như là 1 Cluster 1 thành viên, không ai chơi với em thì em chơi 1 mình

Cluster status of node rabbit@host2 ...
[{nodes,[{disc,[rabbit@host2]}]},
{running_nodes,[rabbit@host2]},
{cluster_name,<<"rabbit@host2">>},
{partitions,[]},
{alarms,[{rabbit@host2,[]}]}]

Như vậy là đã hoàn thành bài viết hướng dẫn cài đặt RabbitMQ trên Ubuntu 20.04.

Hi vọng các bạn sẽ thao tác thành công!

Rate This Article