RabbitMQ如何配置安全組?
RabbitMQ實例支持VPC內訪問和公網訪問,配置安全組的方式如下:
- VPC內訪問實例
客戶端只能部署在與RabbitMQ專享實例處于相同虛擬私有云(VPC)和相同子網的彈性云主機(ECS)上。
除了ECS、RabbitMQ專享實例必須處于相同VPC之外,還需要他們的安全組分別配置了正確的規則,客戶端才能訪問RabbitMQ專享實例。
- 建議ECS、RabbitMQ專享實例配置相同的安全組。安全組創建后,默認包含組內網絡訪問不受限制的規則。
- 如果配置了不同安全組,可參考如下配置方式:
說明
假設ECS、RabbitMQ專享實例分別配置了安全組:sg-53d4、sg-RabbitMQ、Default_All。
以下規則,遠端可使用安全組,也可以使用具體的IP地址。
ECS所在安全組需要增加如下規則,以保證客戶端能正常訪問RabbitMQ專享實例。
圖 配置ECS安全組

表 安全組規則
方向 協議端口 目的地址 出方向 全部放通 Default_All
RabbitMQ專享實例所在安全組需要增加如下規則,以保證能被客戶端訪問。
圖 配置RabbitMQ專享實例安全組

表 安全組規則
方向 協議端口 源地址 入方向 全部放通 sg-53d4
- 通過公網訪問實例
RabbitMQ實例所在安全組需要增加如下規則,以保證能被客戶端訪問。
表 安全組規則
方向 協議端口 源地址 入方向 TCP:5672 0.0.0.0/0
具體如下圖所示。
圖 安全組規則1
RabbitMQ專享實例是否支持公網訪問?
RabbitMQ專享實例支持公網訪問。
在創建RabbitMQ實例時開啟“公網訪問”,或創建完后,在實例詳情頁中將公網訪問開關打開。
RabbitMQ實例 是否支持跨Region部署 ?
當前支持跨AZ(可用區),不支持跨Region部署。
RabbitMQ實例 是否支持跨VPC訪問 ?
RabbitMQ實例支持跨VPC和子網訪問,可以通過創建VPC對等連接,將兩個VPC的網絡打通,實現跨VPC訪問實例。
RabbitMQ專享實例是否支持不同的子網 ?
支持。
客戶端與實例在相同VPC內,可以跨子網段訪問。同一個VPC內的子網默認可以進行通信。
客戶端與實例在不同VPC時,可通過創建VPC對等連接,將兩個VPC的網絡打通,實現跨VPC訪問實例。
此外,可以為實例綁定公網地址,客戶端訪問實例公網地址即可。
SSL方式連接RabbitMQ實例失敗?
首先排查安全組的入方向規則,是否放開了端口5671(SSL方式訪問)或5672(非SSL訪問)。
其次,參考如下內容配置SSL單向認證:
ConnectionFactory factory = new ConnectionFactory();
factory.setHost(host);
factory.setPort(port);
factory.setUsername(user);
factory.setPassword(password);
factory.useSslProtocol();
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
客戶端是否可以通過DNAT方式訪問RabbitMQ實例?
不可以。客戶端可以使用代理、VPN、專線、FullNAT或者反向代理等方式訪問RabbitMQ實例。
RabbitMQ實例的Web管理頁面無法打開?
可能原因:實例安全組配置不正確。
解決方案:重新配置安全組,具體步驟如下。
- 在實例詳情頁面的“基本信息 > 網絡”,單擊安全組名稱,跳轉到安全組頁面。
- 選擇“入方向規則”,查看安全組入方向規則。
- 實例未開啟SSL開關
- 如果是VPC內訪問,實例安全組入方向規則,需要允許端口5672的訪問。
- 如果是公網訪問,需要允許端口15672的訪問。
- 實例已開啟SSL開關
- 如果是VPC內訪問,實例安全組入方向規則,需要允許端口5671的訪問。
- 如果是公網訪問,需要運行端口15671的訪問。
客戶端是否可以連接同個RabbitMQ下多個Vhost?
客戶端可以連接同個RabbitMQ下多個Vhost。
Vhost(Virtual Hosts)是RabbitMQ的基本特性,每個Vhost相當于一個相對獨立的RabbitMQ服務器,每個Vhost數據目錄不同,共用一個進程。性能上,連接多個Vhost和單獨使用一個Vhost差別不大,只是RabbitMQ進程多一些對象,建議使用業務模型實測。
Vhost的相關介紹,請參考官網文檔。
為什么RabbitMQ 集群只有一個連接地址 ?
RabbitMQ集群實例的連接地址,實際上是實例的LVS節點地址(負載均衡地址),客戶端連接實例時,通過負載均衡器將客戶端請求分發到集群實例的各個節點。
