转载自:http://blog.csdn.net/xuensong520/article/details/12166859
背景:
目前openstack的网络架构如下:
Router一个接口连接外部网络,另外一个接口连接网络租户内部创建的私有网络,实际的生产环境中会遇到一些问题,上图中可以看到只有一个外部网络,所有租户均共享这一个外部网络进行公网访问,我们每次创建一个虚拟机均需要给其分配一个外网IP,但我们的外网IP地址的数量是有限的。目前的环境中使用的24位,只有254个可用地址,当虚拟机数量超过这个数目,我们将面临地址枯竭的状态,我们需要增加多个外部网络来解决这个问题。下面记录了整个过程。
一、增加一个桥接网络
在原有的网络节点增加一个网卡连接外部网络即可。
1、增加网桥
ovs-vsctl add-br br-ex-2 # br-ex 用于从互联网上访问 vm
ovs-vsctl add-port br-ex-2 eth2 # br-ex 桥接到 eth2
2、修改网卡配置
cat /etc/network/interfaces
# This file describes network interfaces avaiulable on your system
# and how to activate them. For more information, see interfaces(5).
# Modified by convert_static.sh.
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
auto br-ex
iface br-ex inet static
address 192.168.96.12
#hwaddress ether 90:b1:1c:20:5d:34
netmask 255.255.255.0
gateway 192.168.96.1
dns-nameservers 192.168.75.29
auto eth1
iface eth1 inet static
address 10.0.0.12
netmask 255.255.255.0
auto eth2
iface eth2 inet manual
up ifconfig $IFACE 0.0.0.0 up
down ifconfig $IFACE down
auto br-ex-2
iface br-ex-2 inet static
address 192.168.80.12
netmask 255.255.255.0
重启网卡
/etc/init.d/networking restart
如有报错,可重启系统解决。
查看桥接的网络
ovs-vsctl list-br
ovs-vsctl show
二、创建l3-agent进程
在quantum网络里,l3-agent负责外网地址的连通性,一个l3-agent对应一个external网络,默认会有一个l3-agent进程,如果我们想增加一个external网络,就需要增加一个l3-agent。
1、 创建配置文件
# cd /etc/quantum
#cp l3_agent.ini l3_agent-2.ini ##创建一个l3-agent配置
修改以下几个参数:
host = network02
external_network_bridge = br-ex-2
use_namespaces = True
handle_internal_only_routers = False
gateway_external_network_id = 1c957a0f-3582-4e95-b8a2-f23af5246060
2、 修改所有节点/etc/quantum/quantum.conf,添加下面的参数:
allow_overlapping_ips = True
3、 开启/etc/quantum/dhcp_agent.ini中namespaces
use_namespaces = True
4、 修改/etc/hosts文件,增加2个主机名解析
192.168.96.12 network01
192.168.96.12 network02
另外在l3_agent.ini文件中需要增加一个参数:
Host=network01
L3_agent-2.ini文件的这个参数在上面已经增加。
这个参数的配置很重要,一开始就是因为没有做在这个配置,导致另外一个l3_agent 一直无法启动。
5、 启动l3_agent
# python /usr/bin/quantum-l3-agent --config-file /etc/quantum/quantum.conf --config-file=/etc/quantum/l3_agent-2.ini
通过上面的命令可以启动另外一个l3_agent进程。
6、 查看l3_agent进程状态:
可以看到启动了2个L3 agent进程。
三、L3 agent与router关联
#quantum l3-agent-router-add agent_id router_name
我们可能会看到下面的报错信息:
Failed scheduling router b6146778-1a07-4518-82a5-480f203bc3fe to the L3
Agent 0d979401-8113-4e6e-9970-8ba46a7343e5.
这是因为我们创建的路由器默认被关联到了第一个L 3 agent上,需要通过下面的命令删除之前的关联信息即可:
#quantum l3-agent-router-remove agent_id router_name
关联成功后再次启动L3 agent进程:
# python /usr/bin/quantum-l3-agent --config-file /etc/quantum/quantum.conf --config-file=/etc/quantum/l3_agent-2.ini
执行完这个命令会一直在shell终端中打印debug信息,我们可以增加&使其在后台运行,并使用nohup工具,这样当我们关闭终端shell时,该进程也不会结束。
四、其他查看命令
查看router与l3—agent对应关系
quantum l3-agent-list-hosting-router router1