本文是在openstack liberty版的官方部署版本上进行网络架构的分析。闲话少说,开扒!
部署节点:
10.10.245.215 网络节点+控制节点 hostname:controller
10.10.245.228 计算节点 hostname:compute1
首先先创建一个私有网络private1,子网为private1_sub,网段是192.168.24.0/24,网关是192.168.24.1
创建完毕后在controller节点上查看namespace
# ip netns
qdhcp-9d74f860-eaec-4966-8cfc-037075c33a1b
和之前的版本一样,在创建完成后会自动生成一个dhcp开头的namespace,我们再进一步查看其内部的网口
# ip netns exec qdhcp-9d74f860-eaec-4966-8cfc-037075c33a1b ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ns-bdaf4dc4-5d: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether fa:16:3e:c3:2b:1e brd ff:ff:ff:ff:ff:ff
inet 192.168.24.2/24 brd 192.168.24.255 scope global ns-bdaf4dc4-5d
valid_lft forever preferred_lft forever
inet 169.254.169.254/16 brd 169.254.255.255 scope global ns-bdaf4dc4-5d
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fec3:2b1e/64 scope link
valid_lft forever preferred_lft forever
查看ns-bdaf4dc4-5d与外部的哪个网口相连
# ip netns exec qdhcp-9d74f860-eaec-4966-8cfc-037075c33a1b ethtool -S ns-bdaf4dc4-5d
NIC statistics:
peer_ifindex: 22
查看22口是哪个网口
# ip addr
...
22: tapbdaf4dc4-5d: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc pfifo_fast master brq9d74f860-ea state UP group default qlen 1000
link/ether 7e:e1:18:57:6c:ff brd ff:ff:ff:ff:ff:ff
inet6 fe80::7ce1:18ff:fe57:6cff/64 scope link
valid_lft forever preferred_lft forever
可以看到在dhcp的namespace中ns-xxx相连的外部网口就是tapxxx且名称是相对应的。
在liberty的官方部署方案中,已经不再使用ovs作为网络插件,而改为使用linux bridge
看看linux bridge
# brctl show
bridge name bridge id STP enabled interfaces
brq9d74f860-ea 8000.6a9a20717c0b no tapbdaf4dc4-5d
vxlan-32
看到在brq9d74f860-ea这个网桥上绑了两个接口,分别是我们刚刚查到的tapbdaf4dc4-5d和vxlan-32,这个vxlan-32是作为租户通道网络的接口存在的,而这个网桥的名称跟该网段的名称也是对应的:
# neutron net-list
+--------------------------------------+----------+------------------------------------------------------+
| id | name | subnets |
+--------------------------------------+----------+------------------------------------------------------+
| 9d74f860-eaec-4966-8cfc-037075c33a1b | private1 | e29fd506-d070-4922-939a-4c5d5001972d 192.168.24.0/24 |
+--------------------------------------+----------+------------------------------------------------------+
命名规则是brq<网段名称前11位>
接下来在该网段上新建虚拟机实例
在compute1节点上:
# brctl show
bridge name bridge id STP enabled interfaces
brq9d74f860-ea 8000.7a128d004e11 no tape34bdd44-e9
vxlan-32
这里brq9d74f860-ea网桥名称与controller节点的网桥名称是相同的,我们先假设tape34bdd44-e9是直接作为虚拟机实例的一个接口,做如下验证
compute1节点中:
# ifconfig tape34bdd44-e9
tape34bdd44-e9 Link encap:Ethernet HWaddr fe:16:3e:7b:22:60
inet6 addr: fe80::fc16:3eff:fe7b:2260/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1450 Metric:1
RX packets:1479 errors:0 dropped:0 overruns:0 frame:0
TX packets:996 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:140046 (140.0 KB) TX bytes:136407 (136.4 KB)
记住tape34bdd44-e9的mac地址为fe:16:3e:7b:22:60。
然后进入虚拟机实例instance1,输入指令ifconfig
我们可以看到eth0的mac地址跟tape34bdd44-e9是一致的,证明刚才的假设成立。
基于上面的试验,我们可以初步画出网络架构图:
controller节点上:
compute1节点上:
与之前使用ovs相比,直接使用linux网桥可以在保证安全组设置的基础上简化网络结构。
本文至此已经介绍了openstack libertyba版的基础网络架构,在下一篇文章中会为大家讲解路由的网络架构。
博主:章鱼哥,城云科技(杭州)有限公司,开发工程师