multiple external networks with one network node

openstack安装过程参考:http://www.chenshake.com/how-node-installation-centos-6-4-openstack-havana-ovsgre/

安装完之后一切正常,但是当配置多个外部网络(external networks)的时候发现只有第一个正常。查看/var/log/neutron/l3-agent.log,

发现如下报错信息:

2014-02-04 14:14:56 ERROR [neutron.agent.l3_agent] Error running l3_nat daemonloop
Traceback (most recent call last):
File “/usr/lib/python2.7/dist-packages/neutron/agent/l3
agent.py”, line 171, in daemon_loop
self.dosingleloop()
File “/usr/lib/python2.7/dist-packages/neutron/agent/l3_agent.py”, line 202, in do_singleloop
target
exnetid = self.fetchexternal_netid()
File “/usr/lib/python2.7/dist-packages/neutron/agent/l3
agent.py”, line 185, in fetchexternal_netid
raise Exception(“must configure ‘gateway
externalnetworkid’ if “
Exception: must configure ‘gatewayexternalnetwork_id’ if Neutron has more than one external network.

大概意思是:如果有多个外部网络的时候,需要在l3agent.ini中配置gatewayexternalnetworkid。

具体操作步骤:

一 增加一个桥接网络

1. 配置eth2网卡,并启动(和eth0在同一网段)

2. 增加网桥

ovs-vsctl add-br br-ex-2

ovs-vsctl add-port br-ex-2 eth2

3. 配置br-ex-2和eth2

cat /etc/sysconfig/network-scripts/ifcfg-br-ex-2

DEVICE=br-ex-2

IPADDR=10.40.10.11

PREFIX=24

GATEWAY=10.40.10.250

ONBOOT=yes

cat /etc/sysconfig/network-scripts/ifcfg-eth2

DEVICE=eth2

ONBOOT=yes

HWADDR=74:86:7A:D8:F9:32

4. 重启网络

service network restart

5. 查看

ovs-vsctl list-br
ovs-vsctl show

二 创建l3_agent进程

在neutron网络里,l3-agent负责外网地址的连通性,一个l3-agent对应一个external网络,默认会有一个l3-agent进程,如果我们想增加一个external网络,就需要增加一个l3-agent。

1. 修改第一个l3_agent的配置文件,添加:

host = network.test.com

gateway_external_network_id = 0f40030c-3cb3-4121-b405-c13c82eaf24d

2. 修改第二个l3_agent的配置文件,添加:

host = network1.test.com

gateway_external_network_id =15d5f08e-31df-4b51-946c-c3a2b2d4cad7

修改handle_internal_only_routers = True

为handle_internal_only_routers = False

3. 修改/etc/hosts文件,添加如下内容:

10.40.10.66 network.test.com #br-ex的IP

10.40.10.11 network1.test.com #br-ex-2的IP

4. 启动两个l3_agent进程

第一个:/etc/init.d/neutron-l3-agent restart

第二个: nohup /usr/bin/python /usr/bin/neutron-l3-agent –log-file /var/log/neutron/l3-agent-2.log –config-file /etc/neutron/neutron.conf –config-file /etc/neutron/l3_agent-2.ini &

5. 查看l3_agent进程是否启动

neutron agent-list|grep L3

| 285a115f-5160-402b-8bbe-c70b9a12741e | L3 agent |network.test.com | :-) | True |
| b034a3b1-15c4-4978-9cb5-cc61e49ec676 | L3 agent |network1.test.com | :-) | True |

 

三 创建路由器

查看router与l3—agent对应关系

neutorn l3-agent-list-hosting-router router1
有时候两个路由器可能分配到同一个l3_agent上,需要手动分配下。

参考:

https://ask.openstack.org/en/question/5319/how-can-i-have-multiple-external-networks-with-one-network-node/

http://blog.csdn.net/xuensong520/article/details/12166859