连接类

2022-04-19 13:59:38

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节点地址(负载均衡地址),客户端连接实例时,通过负载均衡器将客户端请求分发到集群实例的各个节点。