网易云的 rabbitmq kafka redis等默认都是不分配公网 IP 地址的,原因是因为这些中间件通常都是在局域网内部使用,放在公网安全性特别低,很容易被攻击,比如redis 之前就被曝出提权漏洞。另外就是公网访问的延迟比局域网大。所以不建议使用外网访问。
那么如果你的测试环境确实是需要本地调整这些中间件,怎么办呢?可以通过 OpenVPN 的方式,连接到相同 VPC 和安全组的内网去这种方式是最安全可靠的。
但是有时候我们觉得这个麻烦,而且一个测试环境觉得安全性要求也不是那么高,那我就想用公网访问,怎么办?我们接下来介绍下一种曲线救国的方案,那就是端口转发。好了,当你读到这里,如果你对端口转发有了解,那么你大可不必继续看下面的内容,自己去实践就 OK 了。
虽然这种方法可行,但是强烈不建议应用到生产环境中。
haproxy
安装 haproxy,当然你用 nginx 或 iptables 的 NAT 都可以,随意
1 | # yum -y install haproxy |
编辑 /etc/haproxy/haproxy.cfg,删除所有内容,粘贴如下内容
1 | global |
接下来重启 haproxy
1 | # systemctl restart haproxy |
然后在对应的安全组内放行公网访问的端口和内网的 rabbitmq 的端口即可。
telnet 看下端口通不通,如果通的话就可以使用该公网 IP 和端口进行连接测试了。