Q:RabbitMQ如何配置安全组?
A:RabbitMQ实例支持VPC内访问和公网访问,配置安全组的方式如下:
- VPC内访问实例
客户端只能部署在与RabbitMQ专享实例处于相同虚拟私有云(VPC)和相同子网的弹性云服务器(ECS)上。
除了ECS、RabbitMQ专享实例必须处于相同VPC之外,还需要他们的安全组分别配置了正确的规则,客户端才能访问RabbitMQ专享实例。
1. 建议ECS、RabbitMQ专享实例配置相同的安全组。安全组创建后,默认包含组内网络访问不受限制的规则。
2. 如果配置了不同安全组,可参考如下配置方式:
说明:
假设ECS、RabbitMQ专享实例分别配置了安全组:sg-53d4、sg-RabbitMQ、Default_All。
以下规则,远端可使用安全组,也可以使用具体的IP地址。
ECS所在安全组需要增加如下规则,以保证客户端能正常访问RabbitMQ专享实例。
图 配置ECS安全组
RabbitMQ专享实例所在安全组需要增加如下规则,以保证能被客户端访问。
图 配置RabbitMQ专享实例安全组
- 通过公网访问实例
RabbitMQ实例安全组需要配置了正确的规则,客户端才能访问RabbitMQ实例。
假设RabbitMQ实例安全组为sg-RabbitMQ,则需要配置如下入方向规则中的其中一种规则:
协议为TCP,端口为5672,源IP为0.0.0.0/0。
协议为Any,源IP为0.0.0.0/0。
具体如下图所示:
图 安全组规则1
图 安全组规则2
Q:RabbitMQ专享实例是否支持公网访问?
A:RabbitMQ专享实例支持公网访问。
在创建RabbitMQ专享实例的“更多”选项中,选择开启“公网访问”可自主控制是否进行公网访问,并选择已购买的弹性IP及带宽。或创建完后,在实例详情页中将公网访问开关打开。
Q:RabbitMQ实例是否支持跨Region部署?
A:当前支持跨AZ(可用区),不支持跨Region部署。
Q:RabbitMQ实例是否支持跨VPC和跨子网访问?
A:RabbitMQ实例支持跨VPC和子网访问,可以通过创建VPC对等连接,将两个VPC的网络打通,实现跨VPC访问实例。
Q:RabbitMQ专享实例是否支持不同的子网?
A:支持。
客户端与实例在相同VPC内,可以跨子网段访问。
客户端与实例在不同VPC时,可通过创建VPC对等连接,将两个VPC的网络打通,实现跨VPC访问实例。
此外,可以为实例绑定公网地址,客户端访问实例公网地址即可。
Q:SSL方式连接RabbitMQ实例失败?
A:首先排查安全组的入方向规则,是否放开了端口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();
Q:客户端是否可以通过DNAT方式访问RabbitMQ实例?
A:可以。
Q:RabbitMQ实例的Web管理页面无法打开?
A:可能原因:实例安全组配置不正确。
解决方案:参考连接RabbitMQ管理页面的操作步骤,配置实例安全组。
Q:为什么RabbitMQ集群只有一个连接地址?
A:RabbitMQ集群实例的连接地址,实际上是实例的LVS节点地址(负载均衡地址),客户端连接实例时,通过负载均衡器将客户端请求分发到集群实例的各个节点。