RabbitMQ是一款開源訊息佇列系統,支援多種協議(AMQP、MQTT、STOMP、HTTP/WebSockets),具有良好的易用性、擴充性和高可用性。主要用於在分布式系統中協調和管理通訊,通過非同步訊息傳遞提高系統的解耦性、伸縮性、並發處理能力和容錯性。其穩定的效能、豐富的功能集以及活躍的社區支援,廣泛應用於企業級應用的訊息傳遞和任務處理。本文介紹如何在Elastic Compute Service中部署開源的RabbitMQ。
操作步驟
手動部署:適合對Linux命令有基本瞭解的使用者,能夠自訂部署RabbitMQ。
快速部署:通過雲市場鏡像快速部署,省去了安裝配置RabbitMQ的過程,大大節省了部署時間。所使用的雲市場鏡像是否收費,以雲市場鏡像介面為準。
手動部署RabbitMQ(Ubuntu&Debian)
本操作以安裝最新版RabbitMQ為例進行說明,更多版本及安裝方式,請參見Installing RabbitMQ。
前提條件
手動部署RabbitMQ時,請確保已建立ECS執行個體,並滿足以下條件:
執行個體已指派公網IP地址或綁定Elastic IP Address(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,計算巢可以觸發自動化部署流程,您無需學習複雜的部署手冊,上手門檻低。
單擊 Cloud Native MQ for Apache RabbitMQ進入鏡像詳情頁。
您可以在鏡像詳情頁擷取鏡像資訊以及使用指南。
單擊Choose Your Plan。
在自訂購買頁,根據頁面提示,完成配置項併購買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遷移上雲。