一、使用基于openvswitch的flat网络连通外部网络
在测试环中,使用allinone部署的openstack,如果需要与外部物理网络通讯,则需要配置flat网路。在q版中,neutron服务默认使用openvswitch,而非使用linux bridge。
openvswitch支持五种网络类型,有gre,local,flat,vxlan和vlan类型,其中gre网络和vxlan比较类似,都是使用隧道模式。
local 网络:不会与宿主机的任何物理网卡连接,流量被限制在宿主机内,同时没有任何VLAN ID
flat 网络:不带有tag的网络,宿主机的网卡通过网桥与flat network连接,每个flat网络都占有一个物理网卡
vlan网络: 是带有tag的网络,在openvswitch的实现方式下,不同的vlan instance的虚拟网卡都会被接到br-int上
gre和vxlan网络:基于隧道技术的overlay network,建立在其他网络上的网络。
测试环境使用flat网络连接外部物理网络
首先在/etc/neutron/plugins/ml2/ml2_conf.ini中设置相关参数,指定普通用户网络类型为flat
vim /etc/neutron/plugins/ml2/ml2_conf.ini [ml2] tenant_network_types=flat #将tenaant_network_types修改为flat
因为使用packstack部署openstackallinone的时候,已经指明了flat网络与物理网络的对应关系。如果使用控制计算分离的部署,则需要修改配置文件指明对应关系,如:
[ml2_type_flat] flat_networks=default [ovs] bridge_mappings=default:br-ex #指定对应外部网桥br-ex
完成后,重启neutron网络服务
systemctl restart neutron-server
然后使用ovs-vsctl命令检查一下br-ex 配置
ovs-vsctl show
关于ovs-vswitch内部网络大致如下:
说明:
1、external_network对接的是外部物理网络,使用flat网络模式,172.31.208.0/24
2、路由器router是虚拟路由器,连接外部网络和虚拟网络
3、router上的一个接口对应的是外部物理网络的地址172.31.208.102,虚拟机实例将会在虚拟私有网络中使用snat,到外部网络网络,然后可以访问外网
4、router上的另一个接口对应的是虚拟私有网络,192.168.1.0/24,neutron的dhcp服务将分配地址给虚拟机实例
三、发放虚拟实例并绑定浮动ip
前期已经完成了外部网络配置,镜像上传等配置。
测试使用 浮动IP 172.31.208.110
租户项目cloud
租户管理员vdc_admin
3.1 分配浮动ip
以admin身份登陆dashbord,在管理员-网络-浮动IP中分配浮动ip172.31.208.110给项目cloud
然后选择分配到的浮动ip
这样便完成了浮动ip与实例的配置,此时可以通过浮动ip 172.31.208.110进行登陆
测试的虚拟机实例
用户名 cirros
密码 cubswin:)
此时我们查看网络拓扑
创建一块10G大小卷作为云硬盘
然后我们绑定到实例上
sudo fdisk /dev/vdb sudo mkfs.ext3 /dev/vdb1 sudo mount /dev/vdb1 /var df -h
可以看到已经挂载上了
五、思考
1、all in one部署的openstack无法仔细测试neutron的其他网络模式,比较遗憾
2、虚拟化部署的情况下,vmware需要调整分布式交换机的端口组模式为混杂和伪传输为接收,不然虚拟机实例发出访问外网的数据包会被vmware的安全机制所丢弃
3、如何快速自定义创建镜像格式,qcow2
4、如何利用其他自定义镜像格式,如ISO ,如何使用ISO格式发放虚拟机实例?