为了安全起见,我们对所有应用服务器,DB服务器,redis缓存服务器不配置公网IP,只配内网IP。这样有一个问题就是没有公网IP的服务器无法上网。而某些应用的请求接口需要上网抓取数据。所以必须要解决上网的问题。
大概架构如下
1、一台ECS服务器,相当于跳板机(配置公网)
2、一台Nginx服务器(配置公网)
3、二台MySQL服务器,主从架构(不配置公网)。
4、一台redis缓存服务器(不配置公网)
5、三台应用服务器(不含公网)。
通过对上述服务器架构和需求的了解。想到了有2种方法可以进行解决。
方法一、购买阿里云NAT网关,把没有配置公网的IP地址都接入到网关。
方法二、使用自己已有的nginx服务器,进行路由转发上网
总结,为了节省成本,我这里采用的是方法二。
1、Nginx服务器,开启数据包转发
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
sysctl –p
2、配置NAT转发Iptables
iptables -t nat -I POSTROUTING -s 192.168.2.0/24 -j SNAT --to-source 192.168.2.54
此处假设阿里云服务器内网,网是192.168.2.0/24
3、添加VPC路由
4、在没有公网的IP地址服务器,可以直接ping通外网
最后,如果感觉文章对你有用,欢迎朋友关注+转发哦!