网易云公网访问 rabbitmq

网易云的 rabbitmq kafka redis等默认都是不分配公网 IP 地址的,原因是因为这些中间件通常都是在局域网内部使用,放在公网安全性特别低,很容易被攻击,比如redis 之前就被曝出提权漏洞。另外就是公网访问的延迟比局域网大。所以不建议使用外网访问。

那么如果你的测试环境确实是需要本地调整这些中间件,怎么办呢?可以通过 OpenVPN 的方式,连接到相同 VPC 和安全组的内网去这种方式是最安全可靠的。

但是有时候我们觉得这个麻烦,而且一个测试环境觉得安全性要求也不是那么高,那我就想用公网访问,怎么办?我们接下来介绍下一种曲线救国的方案,那就是端口转发。好了,当你读到这里,如果你对端口转发有了解,那么你大可不必继续看下面的内容,自己去实践就 OK 了。

虽然这种方法可行,但是强烈不建议应用到生产环境中。

haproxy

安装 haproxy,当然你用 nginx 或 iptables 的 NAT 都可以,随意

1
2
# yum -y install haproxy
# systemctl enable haproxy

编辑 /etc/haproxy/haproxy.cfg,删除所有内容,粘贴如下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
global
ulimit-n 51200

defaults
log global
mode tcp
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000

frontend ss-in
bind *:56721 # rabbitmq 公网访问的端口
default_backend rabbitmq

backend rabbitmq
server server1 nqsf9f18f24512a478c8fc072f620fd9d18.nqs.cn-east-1.internal:5672 maxconn 20480 # 后端 rabbitmq 的内网域名和端口

接下来重启 haproxy

1
# systemctl restart haproxy

然后在对应的安全组内放行公网访问的端口和内网的 rabbitmq 的端口即可。

telnet 看下端口通不通,如果通的话就可以使用该公网 IP 和端口进行连接测试了。