RabbitMQ是一款開源消息隊列系統,支持多種協議(AMQP、MQTT、STOMP、HTTP/WebSockets),具有良好的易用性、擴展性和高可用性。主要用于在分布式系統中協調和管理通信,通過異步消息傳遞提高系統的解耦性、伸縮性、并發處理能力和容錯性。其穩定的性能、豐富的功能集以及活躍的社區支持,廣泛應用于企業級應用的消息傳遞和任務處理。本文介紹如何在云服務器ECS中部署開源的RabbitMQ。
操作步驟
手動部署:適合對Linux命令有基本了解的用戶,能夠自定義部署RabbitMQ。
快速部署:通過云市場鏡像快速部署,省去了安裝配置RabbitMQ的過程,大大節省了部署時間。所使用的云市場鏡像是否收費,以云市場鏡像界面為準。
手動部署RabbitMQ(Ubuntu&Debian)
本操作以安裝最新版RabbitMQ為例進行說明,更多版本及安裝方式,請參見Installing RabbitMQ。
前提條件
手動部署RabbitMQ時,請確保已創建ECS實例,并滿足以下條件:
實例已分配公網IP地址或綁定彈性公網IP(EIP)。具體操作,請參見綁定EIP。
操作系統:Ubuntu 20.04、Ubuntu 22.04、Debian 11.0~Debian 12.5。
更多支持的系統及安裝方式,請參見Installing RabbitMQ。
安全組規則:安全組規則入方向需放行22、80、15672端口。
說明如果需要通過MQ工具連接RabbitMQ服務器,還需放行5672端口。
操作步驟
遠程連接需要部署RabbitMQ的實例。
具體操作,請參見通過密碼或密鑰認證登錄Linux實例。
安裝RabbitMQ。
安裝RabbitMQ基本依賴。
sudo apt-get install curl gnupg apt-transport-https -y
下載RabbitMQ和Erlang的GPG公鑰,并將公鑰信息添加到系統的信任密鑰環中。
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg > /dev/null curl -1sLf https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/rabbitmq.9F4587F226208342.gpg > /dev/null
將RabbitMQ和Erlang的官方APT倉庫添加到
/etc/apt/sources.list.d/rabbitmq.list
文件中。sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF deb [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main deb [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-erlang/deb/ubuntu jammy main deb [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa1.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main deb [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://ppa2.novemberain.com/rabbitmq/rabbitmq-server/deb/ubuntu jammy main EOF
更新本地的包索引。
sudo apt-get update -y
安裝Erlang相關的各種包。
sudo apt-get install -y erlang-base \ erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \ erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \ erlang-runtime-tools erlang-snmp erlang-ssl \ erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
安裝RabbitMQ。
sudo apt-get install rabbitmq-server -y --fix-missing
配置RabbitMQ。
設置RabbitMQ開機自啟動并啟動RabbitMQ。
sudo systemctl enable rabbitmq-server sudo systemctl start rabbitmq-server
為保證數據安全,建議您運行以下命令,刪除默認用戶。
RabbitMQ默認的賬號用戶名和密碼都是
guest
。sudo rabbitmqctl delete_user guest
創建RabbitMQ管理員用戶。
創建一個新用戶。
sudo rabbitmqctl add_user <用戶名> <密碼>
其中,
<用戶名>
和<密碼>
為您自定義的信息。將創建的新用戶設置為管理員。
sudo rabbitmqctl set_user_tags <用戶名> administrator
賦予新創建的用戶所有權限。
sudo rabbitmqctl set_permissions -p / <用戶名> ".*" ".*" ".*"
啟動RabbitMQ的Web管理界面。
sudo rabbitmq-plugins enable rabbitmq_management
在本地瀏覽器中,輸入
http://<Linux實例的公網IP>:15672
。顯示如下頁面,說明RabbitMQ安裝成功。
輸入已創建的RabbitMQ管理員用戶名和密碼后,單擊Login,進入RabbitMQ管理界面。
RabbitMQ管理界面展示信息如下所示:
快速部署RabbitMQ(Ubuntu,使用云市場鏡像)
你也可以使用計算巢快速部署RabbitMQ,計算巢可以觸發自動化部署流程,您無需學習復雜的部署手冊,上手門檻低。
單擊開源消息隊列中間件 RabbitMQ 進入鏡像詳情頁。
您可以在鏡像詳情頁獲取鏡像信息以及使用指南。
單擊立即購買。
在自定義購買頁,根據頁面提示,完成配置項并購買ECS實例。
配置時請注意以下參數,其他配置可以按需選擇。更多參數說明,請參見自定義購買實例。
鏡像:鏡像區域已設置為您購買的鏡像。
公網 IP:選中分配公網 IPv4 地址。
安全組:安全組規則應放行22、80、15672。
獲取RabbitMQ的用戶名和登錄密碼。
遠程連接RabbitMQ服務器。
具體操作,請參見通過密碼或密鑰認證登錄Linux實例。
執行以下命令,獲取RabbitMQ的用戶名和登錄密碼。
sudo cat /credentials/password.txt
回顯信息類似如下所示。
rabbitmq_user:RabbitMQ用戶名
rabbitmq_password:RabbitMQ登錄密碼
rabbitmq_gui_port:RabbitMQ Web服務器端口
rabbitmq_mq_port:RabbitMQ遠程連接端口
rabbitmq_er_port:RabbitMQ服務器用于Erlang進程間通信的內部端口
rabbitmq_mqtt_port:RabbitMQ服務器對外提供MQTT協議服務的監聽端口
在本地瀏覽器中,輸入
http://<Linux實例的公網IP>:15672
。顯示如下頁面,說明RabbitMQ安裝成功。
在彈出的對話框中,輸入用戶名和密碼,進入管理頁面。
開源RabbitMQ遷移上云
如果您希望解決RabbitMQ集群各種穩定性痛點(例如消息堆積、腦裂等問題)、并實現高并發、分布式、靈活擴縮容時,您可以將開源RabbitMQ集群遷移至云消息隊列 RabbitMQ 版,具體操作,請參見開源RabbitMQ遷移上云。