消息队列 RabbitMQ版产品目前暂未提供白名单功能,您可以借助负载均衡 CLB 产品来控制访问 RabbitMQ 实例的客户端 IP。本文为您介绍通过 CLB 实现 RabbitMQ 白名单的具体配置步骤。
RabbitMQ 实例创建后,默认允许与实例在相同私有网络 VPC 环境内的所有设备访问实例;如果实例开启公网访问,则默认允许所有公网设备都能访问实例。由于 RabbitMQ 产品暂未提供白名单功能,当需要限制访问实例的客户端 IP 时,您可以借助负载均衡 CLB 产品来控制访问 RabbitMQ 实例的客户端 IP 地址。
在正式开始操作前,建议您先了解负载均衡 CLB 产品的以下几个概念:
- 访问控制策略组:访问控制策略组是由多个 IP 条目组成的集合,用于集中管理 IP。策略组本身不对访问控制方式做限制,交由与之关联的监听器完成。
- 后端服务器组:后端服务器组是接收并处理请求的实例组,CLB 实例会根据监听器的配置将客户端请求分发到后端服务器上。
- 监听器:监听器提供转发请求的能力,通过匹配请求的协议和端口,根据调度算法将请求流量分发给后端服务器组。
- 如果需要为 RabbitMQ 实例开启公网访问,请参见开启公网访问。
借助负载均衡 CLB 产品来控制访问 RabbitMQ 实例的客户端 IP 地址,您需要在 CLB 实例的后端服务器组中配置 RabbitMQ 实例对应的网卡 IP 地址。当 CLB 实例接收到客户端请求,会根据监听器的配置将其分发到后端服务器上。
- 在实例信息页签的基本信息区域,复制 RabbitMQ 实例 ID,然后单击实例的私有网络。
-
- 在私有网络控制台的左侧导航栏选择网卡,然后输入 RabbitMQ 实例 ID 进行筛选,再获取网卡 IP 地址。
-
- 在左侧导航栏选择实例管理,然后单击创建负载均衡。
- 在创建负载均衡页面,配置 CLB 实例相关参数。
访问控制策略组是由多个 IP 条目组成的集合,用于集中管理 IP。您可以将需要允许访问 RabbitMQ 实例的客户端 IP 地址或 CIDR 地址范围填入到策略组。
- 在左侧导航栏选择访问控制,然后单击创建访问控制策略组。
- 在弹出的对话框中,设置策略组名称和项目,设置允许访问 RabbitMQ 实例的客户端 IP 地址或 CIDR 地址范围,然后单击确定。
说明
在测试场景中,如果您使用的是家用路由器或办公室网络,您的设备可能位于私有网络中,私有网络中的设备通过 NAT 技术与公网进行通信。
此时您通过在命令行中执行ipconfig或ifconfig命令查询的本地 IP 是私网地址,不能直接配置到访问控制策略组中,您可以通过whatismyipaddress.com查询您的公网 IP 出口代理地址,然后将 IP 地址或 CIDR 地址范围填入到策略组中。 注意
动态主机配置协议 DHCP 会将该地址分发给其他租户,请在测试结束后及时移除 IP 地址或 CIDR 地址范围。
-
后端服务器组是接收并处理请求的实例组,CLB 实例会根据监听器的配置将客户端请求分发到后端服务器上。您可以将获取到的 RabbitMQ 实例访问端口、网卡 IP 地址填入到后端服务器组。
- 在左侧导航栏选择实例管理,单击 CLB 实例名称,进入实例详情页面。
- 在后端服务器组页签,单击创建后端服务器组,然后设置服务器组名称,选择 IP类型,再单击确定。
-
-
- 在添加IP地址页面,输入RabbitMQ 实例网卡 IP 地址、访问端口,以及自定义设置权重,然后单击确定。
说明
- RabbitMQ 实例网卡 IP 地址已提前获取。
- RabbitMQ 实例的 AMQP 接入点公网地址端口为5671,私网地址端口为5672。
- 权重越大,转发的请求越多。0 表示不接受请求,100 表示转发的请求最多。
-
监听器提供转发请求的能力,通过匹配请求的协议和端口,根据调度算法将请求流量分发给后端服务器组。在监听器中,您需要关联访问控制策略组和后端服务器组。
- 在左侧导航栏选择实例管理,单击 CLB 实例名称,进入实例详情页面。
-
- 关联已有的后端服务器组,然后一直单击下一步,直至监听器添加完成。
-
-
经过上述配置后,可以使用 CLB 实例 IP 地址和监听器端口访问 RabbitMQ 实例,在 CLB 实例基本信息中获取 CLB 实例 IP 地址。
效果:在访问控制策略组中的客户端 IP 可继续访问 RabbitMQ 实例,其他的客户端则无法继续访问 RabbitMQ 实例。