上面左边是我的个人 微  信,如需进一步沟通,请加  微  信。  右边是我的公众号“Openstack私有云”,如有兴趣,请关注。


    Openstack部署安装后,租户网络默认是vxlan ,但是实际项目当中,更多的是租户使用vlan或者flat网络。这里在实验环境里面模拟一下生产环境中如何在安装的时候设置,实现租户vlan网络 。

    还是使用3节点的实验环境,采用Ocata版本,使用一键式安装镜像安装完kolla之后,完成以下步骤:

    注意:如果是重新部署,除了要执行kolla_ansible destroy 之外,还需要将ceph 的osd盘分区清除,使用fdisk 命令清除分区。


1.上传文件3node ,globals.yml文件
2.所有节点第二块硬盘分区打标签:
parted /dev/sdb -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP 1 -1
查看结果: 
 parted /dev/sdb print
3.control01配置ceph:
创建/etc/kolla/config/ceph.conf:
[global]
osd pool default size = 3
osd pool default min size = 1
新增:/etc/kolla/config/neutron-openvswitch-agent/ml2_conf.ini以及/etc/kolla/config/neutron-server/ml2_conf.ini 文件:
[root@control01 config]# more ml2_conf.ini 
[ml2]
tenant_network_types = 
由于是虚拟化测试环境(VMWare或者PVE环境),需要开启qemu ,新增/etc/kolla/config/nova.conf 文件:
[root@control01 config]# more nova.conf 
[libvirt]
virt_type = qemu
cpu_mode = none
4.修改/etc/kolla/globals.yml文件:
修改后的配置如下:
kolla_base_distro: "centos"
kolla_install_type: "source"
openstack_release: "4.0.2.1"
kolla_internal_vip_address: "192.168.170.160"
docker_registry: "192.168.170.150:4000"
docker_namespace: "kolla"
network_interface: "eth0"
neutron_external_interface: "eth1"
designate_backend: "bind9"
designate_ns_record: "sample.openstack.org"
tempest_image_id:
tempest_flavor_ref_id:
tempest_public_network_id:
tempest_floating_network_name:
enable_cinder: "yes"
enable_haproxy: "yes" 
enable_neutron_***aas: "yes"
enable_neutron_lbaas: "yes"
enable_neutron_fwaas: "yes"
enable_chrony: "yes"
enable_neutron_agent_ha: "yes"
注意,neutron_tenant_network_types: 这个参数,默认是vxlan ,这里我们设置为vlan
5.修改 /etc/docker/daemon.json ,将insecure-registry配置项取消 
6.部署前 bootstrap-server:
 /root/kolla-ansible-4.0.3.dev36/tools/kolla-ansible -i 3node bootstrap-servers
 
7.部署前检查:
/root/kolla-ansible-4.0.3.dev36/tools/kolla-ansible -i 3node prechecks
8.部署:
/root/kolla-ansible-4.0.3.dev36/tools/kolla-ansible -i 3node deploy
执行完成后,检查ml2_conf.ini 文件,发现tenant_network_types 还是有vxlan参数,如下:
[ml2]
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
mechanism_drivers = openvswitch,l2population
[ml2_type_vlan]
network_vlan_ranges =
[ml2_type_flat]
flat_networks = physnet1
修改tenant_network_types 、network_vlan_ranges 参数后如下:
[ml2]
type_drivers = flat,vlan,vxlan
tenant_network_types = vlan,flat
mechanism_drivers = openvswitch,l2population
[ml2_type_vlan]
network_vlan_ranges = physnet1
[ml2_type_flat]
flat_networks = physnet1
然后重启这2个容器:
docker restart neutron_server
docker restart neutron_openvswitch_agent
9.部署成功后执行post-deploy:
/root/kolla-ansible-4.0.3.dev36/tools/kolla-ansible -i 3node post-deploy

注意,这里我没有执行init-runonce脚本,因为这个脚本默认是以vxlan方式初始化相关配置,我们这里使用的是vlan方式,因此,我们手工初始化镜像、网络、路由。当然,更快的方法是自己修改一下init-runonce这个脚本使之适应vlan。

下载并上传测试镜像cirros ,这里使用raw格式,可以先下载qcow2格式,然后转换,具体自行参考其他资料。

创建实例类型:



关键内容来了,创建vlan的network和subnetwork ,然后在这个vlan的network中创建虚拟机。创建2个network和subnetwork,分别在这个2个network中创建虚拟机,其中同一个network中创建2个虚拟机,测试同一个vlan的network内虚拟机是否通,再测试跨vlan虚拟机是否通。跨vlan需要创建路由器,后面再创建路由器,将2个vlan打通。



测试环境是pve,网卡不能设置trunk模式,没法测试。有些缺憾。