在使用PackStack安装OpenStack之后,我们留下了一个networking问题。 我们想要一个拥有一个子网的超级简单networking,所有的虚拟机应该驻留在这个子网中,因为这看起来像是最简单的解决scheme。 我们必须从运行nova的三个节点开始。
我们使用的答案文件是这样的: 答案文件(pastebin)
CentOS 6.5中有三个节点连接到两台交换机。
Ingress IPv4 TCP 1 - 65535 0.0.0.0/0 (CIDR) Ingress IPv4 TCP 22 (SSH) 0.0.0.0/0 (CIDR) Ingress IPv6 Any - default Ingress IPv4 TCP 22 (SSH) 10.0.20.0/24 (CIDR) Ingress IPv4 TCP 53 (DNS) 0.0.0.0/0 (CIDR) Egress IPv4 Any - 0.0.0.0/0 (CIDR) Ingress IPv4 ICMP - 0.0.0.0/0 (CIDR) Egress IPv6 Any - ::/0 (CIDR) Ingress IPv4 Any - default
(neutron) agent-list +--------------------------------------+--------------------+------------------------ | id | agent_type | host | alive | admin_state_up +--------------------------------------+--------------------+------------------------ | 09add8dd-0328-4c63-8a79-5c61322a8314 | L3 agent | host3 | :-) | True | 0d0748a9-4289-4a5d-b1d9-d06a764a8d25 | Open vSwitch agent | host2 | :-) | True | 258c92fe-8e3a-4760-864e-281a47523e85 | Open vSwitch agent | host1 | :-) | True | 2e886dc1-af93-4f4f-b66c-61177a6c9dba | L3 agent | host1 | :-) | True | 50f37a33-2bfc-43f2-9d2f-4f42564d234d | Open vSwitch agent | host3 | :-) | True | 535bf0a3-06aa-4072-ae5a-1b1ba1d377ab | L3 agent | host2 | :-) | True | 9b17ef73-a602-4b5d-a4e9-e97445e594b4 | DHCP agent | host1 | :-) | True
主机1
ovs-vsctl显示
43da814e-223c-4f66-ba2d-c3c9de91e1f8 Bridge br-ex Port br-ex Interface br-ex type: internal Bridge br-int Port br-int Interface br-int type: internal Port "tap3e0d3121-32" tag: 4 Interface "tap3e0d3121-32" type: internal Port "tap4a397755-29" tag: 4 Interface "tap4a397755-29" ovs_version: "1.11.0"
主机2
afa75816-6a40-4f0c-842f-236a3a94cd63 Bridge br-int Port br-int Interface br-int type: internal Port "tap46f55af8-73" tag: 1 Interface "tap46f55af8-73" Bridge br-ex Port br-ex Interface br-ex type: internal ovs_version: "1.11.0"
实例不能互相通信,也无法访问互联网。 坦率地说,当节点之间的“内部”networking只使用一个链接时,我们不确定使用多节点nova安装程序的要求是什么。 我认为这个问题是一个路由问题,因为我们不能在不同节点上的实例之间进行连接,但是在阅读了大量的文档之后,我不太确定如何进行修改。 如果我tcpdump接口br-int我可以selectARP请求,但没有更多。 这就是如果我尝试从相应的主机上的实例ping通。
所以问题是:我们怎样才能find这个多节点networking问题的解决scheme,我们需要考虑什么? 它可能是路由,或与主机操作系统或OpenStack错误configuration? (运行CentOS)。
任何反馈都非常好,因为我们在这一点上已经停留了几个星期。 对不起,很长的文章,但我希望所需的信息在这里。 如果不; 不要害羞:)
我已经能够修复节点之间的内部networking,以便实例能够在物理节点之间进行通信。
- Changed the /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini: [database] connection = mysql://neutron:[email protected]:3306/ovs_neutron [OVS] tennant_network_type = gre tunnel_id_ranges = 1:1000 integration_brige = br-int tunnel_bridge = br-tun local_ip = 10.0.20.1 enable_tunneling = True - Restarted the service on controller cd /etc/init.d/; for i in $( ls neutron-* ); do sudo service $i restart; done ) service openvswitch restart
这是在所有节点上完成的,并创build了GRE隧道。 虽然stream程不起作用,所以我需要使用ovs-ofctl add-flow br-tun action=normal 。
目前我现在的问题是能够将内部子网路由到互联网,以便所有的实例都可以上网。 我需要浮动IPS才能连接到互联网? br-int和br-ex或路由器之间没有补丁,所以需要将stream量路由到互联网?
我可以添加一个默认路由与ip netns exec … ip添加默认gw通过(br-ex的IP)还是我需要添加一些新的接口?
坐下来看这个
它通过build立一个简单的多节点集群,我发现它非常清楚。 关于设置NAT的最后一点不适用,因为他正在Virtualbox上运行他的集群。
在video说明中链接了一个关联的幻灯片。
正如以前更新,我设法使用GRE隧道而不是新networking来启动和运行networking。 如果你有一个备用的物理networking接口,Novanetworking接口是一个好的解决scheme,但是当你不用时,它不能很好地工作。
GRE设置是通过以下方式完成的: – 更改了/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini:
[database] connection = mysql://neutron:[email protected]:3306/ovs_neutron [OVS] tennant_network_type = gre tunnel_id_ranges = 1:1000 integration_brige = br-int tunnel_bridge = br-tun local_ip = "internal ip" enable_tunneling = True - Restarted the service on controller cd /etc/init.d/; for i in $( ls neutron-* ); do sudo service $i restart; done ) service openvswitch restart
这被拷贝到每个计算节点上。 当使用GRE隧道时,重要的一点是当你创build一个新的networking时,你需要指定分段ID。 如果您尝试通过地平线创buildnetworking,则无法工作。
keystone tenant-list admin=$(keystone tenant-list | grep admin | awk -F' |' '{ print $2 }') neutron net-create --tenant-id $admin network --provider:network_type gre --provider:segmentation_id 3 neutron subnet-create --tenant-id $admin network 192.168.0.0/24 --getaway 192.168.0.1
您还可以使用以下命令添加外部networking:
neutron net-create ext neutron net-list neutron subnet-create extnet --allocation-pool start=10.0.0.10,end=10.0.0.100 --gateway=10.0.0.1 --enable_dhcp=False 10.0.0.0/24
然后,我们可以创build一个新的路由器,并将networking连接到这个外部路由器。 这只是众多解决scheme中的一个。
intsubnet=$(neutron subnet-list | grep 192.168.0.0/24| awk -F' |' '{ print $2 }') extnet=$(neutron net-list | grep ext | awk -F' |' '{ print $2 }') neutron router-create ext-to-int --tenant-id $admin router=$(neutron router-list | grep ext-to-int | awk -F' |' '{ print $2 }') neutron router-interface-add $router $intsubnet neutron router-gateway-set $router $extnet
从一开始我的吞吐量就非常低。 当我使用DCHP发布新的MTU(1454)时(在/ etc / neutron /下创build一个dhcpconfiguration文件,并将dhcp-option-force=26,1454到文件中),解决了这个问题。更新/ etc / neutron / dhcp_agent中的dnsmasq_config_file的.ini
这对我来说是有效的,而且是所有需要的。