版本信息

openstack版本pike
控制节点主机openstack-controller(ubuntu 16.04.5) 172.27.34.37
计算节点主机openstack-computer(ubuntu 16.04.5) 172.27.34.38
镜像cirros-0.3.3-x86_64-disk.img
宿主机环境
esxi 6.5.0


ubuntu安装详见Ubuntu16.04.5以lvm方式安装全记录

openstack安装详见OpenStack实践(一):Ubuntu16.04下DevStack方式搭建p版OpenStack


flat网络

flat网络是无vlan tagging的网络。flat网络中的instance能与位于同一网络的instance通信,并且可以跨多个节点。


目标:cirros01和cirros02互通。网络拓扑如下:

OpenStack实践(三):Linux Bridge方式实现Flat Network_flatnetwork


一、制作镜像

上传介质cirros-0.3.3-x86_64-disk.img至/tmp目录,镜像下载地址:http://download.cirros-cloud.net/

制作镜像:

root@openstack-controller:~# su - stackstack@openstack-controller:~$ source devstack/openrc admin admin
stack@openstack-controller:~$ glance image-create --name cirros-cli --file /tmp/cirros-0.3.3-x86_64-disk.img --disk-format qcow2 --container-format bare --progress

OpenStack实践(三):Linux Bridge方式实现Flat Network_flatnetwork_02

查看新建的image:

OpenStack实践(三):Linux Bridge方式实现Flat Network_openstack_03

OpenStack实践(三):Linux Bridge方式实现Flat Network_flatnetwork_04


二、在ML2中配置flat network
1.Neutron默认使用ML2作为core plugin,控制节点和计算节点分别编辑ML2的配置文件/etc/neutron/plugins/ml2/ml2_conf.ini

tenant_network_types = flat
mechanism_drivers = linuxbridge
type_drivers = local,flat,vlan,gre,vxlan,geneve
flat_networks = default
physical_interface_mappings = default:ens192

如果要配置两个flat network,可以做如下设置

flat_networks = default,flat02
physical_interface_mappings = default:ens192,flat02:ens224


2.重启neutron服务

stack@openstack-controller:~$ sudo systemctl restart devstack@q*



三、创建flat network

创建flat-network01

OpenStack实践(三):Linux Bridge方式实现Flat Network_flatnetwork_05

创建flatnetwork01

OpenStack实践(三):Linux Bridge方式实现Flat Network_openstack_06

物理网络为default,与ml2_conf.ini中的参数flat_networks保持一致。

OpenStack实践(三):Linux Bridge方式实现Flat Network_openstack_07

子网为172.16.2.0/24,地址段为172.16.2.50~172.16.2.100

OpenStack实践(三):Linux Bridge方式实现Flat Network_flatnetwork_08

创建完成

OpenStack实践(三):Linux Bridge方式实现Flat Network_esxi_09



四、创建instance

1.查看实例类型

stack@openstack-controller:~$ nova flavor-list

OpenStack实践(三):Linux Bridge方式实现Flat Network_openstack_10

本文选择m1.tiny


2.查看主机名和zone

stack@openstack-controller:~$ nova service-list

OpenStack实践(三):Linux Bridge方式实现Flat Network_esxi_11


3.新建cirros01

启动cirros01,节点为openstack-controller,网络为flatnetwork01

stack@openstack-controller:~$ nova boot --flavor m1.tiny --image cirros-cli  --availability-zone nova:openstack-controller --nic net-name=flatnetwork01 cirros01

OpenStack实践(三):Linux Bridge方式实现Flat Network_flatnetwork_12


4.新建cirros02

启动cirros02,节点为openstack-computer,网络为flatnetwork01

stack@openstack-controller:~$ nova boot --flavor m1.tiny --image cirros-cli  --availability-zone nova:openstack-computer --nic net-name=flatnetwork01 cirros02

OpenStack实践(三):Linux Bridge方式实现Flat Network_flatnetwork_13


5.控制台查看新建实例

OpenStack实践(三):Linux Bridge方式实现Flat Network_flatnetwork_14


6.查看虚拟网卡

控制节点:

root@openstack-controller:~# brctl show

OpenStack实践(三):Linux Bridge方式实现Flat Network_flatnetwork_15

计算节点:

OpenStack实践(三):Linux Bridge方式实现Flat Network_openstack_16

控制面板查看端口信息

OpenStack实践(三):Linux Bridge方式实现Flat Network_openstack_17

可以看到Linux bridge01 brq9a198413-3b包含的虚拟网卡为cirros01的tap7d88a7f4-a7和cirros02的tap79e963af-dd。


五、测试

分别登陆cirros01、cirros02互ping

1.开启宿主机网卡混杂模式

由于是在esxi虚拟机上做的测试,网卡需开启混杂模式

OpenStack实践(三):Linux Bridge方式实现Flat Network_openstack_18

OpenStack实践(三):Linux Bridge方式实现Flat Network_esxi_19默认不支持混杂模式

OpenStack实践(三):Linux Bridge方式实现Flat Network_esxi_20

编辑网卡信息

OpenStack实践(三):Linux Bridge方式实现Flat Network_flatnetwork_21

开启混着模式


2.cirros01

OpenStack实践(三):Linux Bridge方式实现Flat Network_esxi_22

获取的ip为172.16.2.63

OpenStack实践(三):Linux Bridge方式实现Flat Network_esxi_23

ping cirros02通的。


3.cirros02

OpenStack实践(三):Linux Bridge方式实现Flat Network_flatnetwork_24

获取的ip为172.16.2.56

OpenStack实践(三):Linux Bridge方式实现Flat Network_flatnetwork_25

ping cirros01通的。


另外,由于虚拟机网卡开启了混杂模式,当新建同一网段的flat网络flatnetwork02并和flatnetwork01同一网段时,即都是172.16.2.0/24,则flatnetwork01和flatnetwork02下的vm能互通,若flatnetwork02的subnet与flatnetwork01不同,比如为172.16.3.0/24,则两个网络下的vm实例不同。




测试结果符合预期。