代码改变世界

使用iptables 实现openstack的灵活部署

2013-05-16 09:25 梁小白 阅读(...) 评论(...) 编辑 收藏
 
在Openstack应用中,包括官方的各种资料都推荐至少将一个api接口服务器暴露在外的方案,大多数情况这个部署会满足各种需求。
 
但当网络特别情况的时候,我们可以使用iptables的ip映射或者端口映射来给Openstack增加灵活性.
 
在我们公司的测试环境中,所有的服务器都部署在机房,而机房是没有无线连接的,当我们给客户演示的时候,需要连接到测试环境,然而会议室只有无线,这种情况就需要一个中间代理将api服务器ip转换为无线网段可以访问的ip.
 
下面用iptables的ip映射来实现。
 
api server ip: 100.10.10.52 (eth0)

分配的无线代理ip:
192.168.0.52 (wlan0)
100.10.10.1 (eth0)

 

 
1. 在api server上配置网关 ,让api server 可以找到代理网关.
route add default gw 100.10.10.1 

 

2. 代理网关配置:
 
查看当前路由情况:  
iptables -nvL --line-number -t nat

添加入站路由(无线用户访问192.168.0.52时发生,iptables 理解为目的地址转换):
iptables -t nat -I PREROUTING -i wlan0 -d 192.168.0.52 -j DNAT --to 100.10.10.52

添加出站路由(api server的数据返回无线用户时发生, iptables 理解为源地址转换)
iptables -t nat -I POSTROUTING -o wlan0 -s 100.10.10.52 -j SNAT --to 192.168.0.52

3.测试.测试时一定要在代理服务器之外测试,因为如果直接在代理服务上测试,数据没有通wlan0 网卡,不会触发iptables nat,通过 cat /proc/net/ip_conntrack 可以看到数据流跟踪信息。

 
4.测试通过后,在无线用户使用时,将相关的api地址改为192.168.0.52即可。例如。无线用户需要访问vnc
 
sed -i "s/100.10.10.52:6080/192.168.0.52:6080/g" /etc/nova/nova.conf
service nova-compute restart

 5. 以上的部署场景可以引申到复杂环境的其它部署中去。

 6.设置iptables 完成后,需要保存,否则重启后会配置会丢失
保存到文件
iptables-save > /etc/network/iptables 

启动时自动从文件恢复
vi /etc/rc.local
iptables-restore /etc/network/iptables