消息队列 RabbitMQ版产品目前暂未提供白名单功能,您可以借助负载均衡 CLB 产品来控制访问 RabbitMQ 实例的客户端 IP。本文为您介绍通过 CLB 实现 RabbitMQ 白名单的具体配置步骤。
RabbitMQ 实例创建后,默认允许与实例在相同私有网络 VPC 环境内的所有设备访问实例;如果实例开启公网访问,则默认允许所有公网设备都能访问实例。由于 RabbitMQ 产品暂未提供白名单功能,当需要限制访问实例的客户端 IP 时,您可以借助负载均衡 CLB 产品来控制访问 RabbitMQ 实例的客户端 IP 地址。
在正式开始操作前,建议您先了解负载均衡 CLB 产品的以下几个概念:
借助负载均衡 CLB 产品来控制访问 RabbitMQ 实例的客户端 IP 地址,您需要在 CLB 实例的后端服务器组中配置 RabbitMQ 实例对应的网卡 IP 地址。当 CLB 实例接收到客户端请求,会根据监听器的配置将其分发到后端服务器上。
登录负载均衡 CLB 控制台,在页面顶部选择目标项目和地域。
在左侧导航栏选择实例管理,然后单击创建负载均衡。
在创建负载均衡页面,配置 CLB 实例相关参数。
参数 | 说明 |
---|---|
基本信息 | |
计费类型 | CLB 实例支持按量计费和包年包月两种计费类型。
|
地域 | 选择 CLB 实例所属的地域。 说明 CLB 实例需要和 RabbitMQ 实例在相同地域。 |
可用区 | 选择 CLB 实例所属的可用区。
|
名称 | 设置 CLB 实例的名称。 |
描述 | 设置 CLB 实例的描述语句。 |
网络配置 | |
IP版本 | CLB 实例支持的 IP 版本。 |
网络类型 | 选择 CLB 实例的网络类型。
|
私有网络 | 选择 CLB 实例所属的私有网络。 |
子网 | 选择 CLB 实例所属的子网。 |
IPv4地址 | 选择 CLB 实例 IPv4 地址的分配方式。
|
公网访问 | 您可以勾选“绑定已有公网IP”并选择已有的公网 IP 为该 CLB 实例提供公网访问能力。 |
实例规格 | |
规格 | 根据业务需要,选择合适的 CLB 实例规格。 |
阅读并勾选相关协议,然后单击提交订单。
访问控制策略组是由多个 IP 条目组成的集合,用于集中管理 IP。您可以将需要允许访问 RabbitMQ 实例的客户端 IP 地址或 CIDR 地址范围填入到策略组。
说明
在测试场景中,如果您使用的是家用路由器或办公室网络,您的设备可能位于私有网络中,私有网络中的设备通过 NAT 技术与公网进行通信。
此时您通过在命令行中执行ipconfig
或ifconfig
命令查询的本地 IP 是私网地址,不能直接配置到访问控制策略组中,您可以通过whatismyipaddress.com查询您的公网 IP 出口代理地址,然后将 IP 地址或 CIDR 地址范围填入到策略组中。
需要注意的是:动态主机配置协议 DHCP 会将该地址分发给其他租户,请在测试结束后及时移除 IP 地址或 CIDR 地址范围。
后端服务器组是接收并处理请求的实例组,CLB 实例会根据监听器的配置将客户端请求分发到后端服务器上。您可以将获取到的 RabbitMQ 实例访问端口、网卡 IP 地址填入到后端服务器组。
说明
5671
,私网地址端口为5672
。监听器提供转发请求的能力,通过匹配请求的协议和端口,根据调度算法将请求流量分发给后端服务器组。在监听器中,您需要关联访问控制策略组和后端服务器组。
登录负载均衡 CLB 控制台,然后在页面顶部选择目标项目和地域。
在左侧导航栏选择实例管理,单击 CLB 实例名称,进入实例详情页面。
在监听器页签,单击添加监听器。
配置协议,关联访问控制策略组,然后单击下一步。
参数 | 说明 |
---|---|
监听器名称 | 自定义设置监听器的名称。如不填写,则默认为“协议-端口” ,例如“TCP-5671”。 |
负载均衡协议 | 选择 CLB 实例监听的协议类型,本文使用 TCP。 |
监听端口 | 输入监听的端口。需要监听 RabbitMQ 实例的 AMQP 接入点公网地址端口为 说明 待添加的监听器端口不能与同一 CLB 实例其他监听器端口相同。 |
调度算法 | 指定监听器转发请求遵循的规则,本文使用加权轮询(WRR),权重值越高的后端服务器,被轮询到的次数(概率)越高。 |
访问控制 | 监听器是否对访问请求设置黑白名单控制。本文选择启用访问控制,并选择白名单控制方式。 |
策略组名称 | 从下拉列表中选择已创建的访问控制策略组。 |
关联已有的后端服务器组,然后一直单击下一步,直至监听器添加完成。
返回监听器页面,查看状态。
经过上述配置后,可以使用 CLB 实例 IP 地址和监听器端口访问 RabbitMQ 实例,在 CLB 实例基本信息中获取 CLB 实例 IP 地址。
效果:在访问控制策略组中的客户端 IP 可继续访问 RabbitMQ 实例,其他的客户端则无法继续访问 RabbitMQ 实例。