杭州机房拉了一根直通淘宝RDS内部LAN的网线。为了让整个机房环境都能共享这条高速链路,我们做了一个 RDS 包转发机。
这台转发机网卡接口信息如下:
IP |
接口 |
作用 |
---|---|---|
192.168.0.14 | eth0 | 连接到我们自己机房的LAN |
10.239.16.22 | eth1 | 拉了一根网线直接连接到淘宝rds内部LAN |
客户机设置及说明
注:这里的客户机是指想要使用该 RDS 链路的机器
客户机需要将所有 RDS 请求的包都发给转发机,可以通过设置以下路由来实现:
ip route add 10.0.0.0/8 via 192.168.0.14 dev eth0
注:10.0.0.0/8 是淘宝的 RDS 服务器的内部LAN地址。
转发机设置及说明
1.首先,转发机需要将上述客户机发过来的 RDS 数据包都转发到淘宝 RDS 内部LAN中去,即走 eth1 接口。可通过一条路由规则实现:
ip route add 10.0.0.0/8 dev eth1 src 10.239.16.22
注: 10.239.16.22 是转发机在淘宝 RDS LAN 中的地址(eth1)。
2.上述第一条实现了包转发,但是这些包的源地址依然是客户机本身的地址(即 192.168.x.x 等)。这种包到了 RDS LAN 网就回不来了。我们还需要把这种包的源地址都伪装成转发机的10.239.16.22 这个IP。所以,还要配置一条SNAT规则:
iptables -t nat -A POSTROUTING -o eth1 j SNAT --to-source 10.239.16.22
使用
以上都配置好后,就可以正常访问 RDS 了:
mysql -h hzn02.rds.aliyuncs.com
注意:用上述方式连接 rds 可能不太稳定,偶尔会特别慢,详情见:访问淘宝rds很慢的问题
本文转自 Bruceweien 51CTO博客,原文链接:http://blog.51cto.com/bruceweien/1932410