1、使用基于openvswitch的flat网络连通外部网络linux
在测试环中,使用allinone部署的openstack,若是须要与外部物理网络通信,则须要配置flat网路。在q版中,neutron服务默认使用openvswitch,而非使用linux bridge。vim
openvswitch支持五种网络类型,有gre,local,flat,vxlan和vlan类型,其中gre网络和vxlan比较相似,都是使用隧道模式。安全
local 网络:不会与宿主机的任何物理网卡链接,流量被限制在宿主机内,同时没有任何VLAN IDbash
flat 网络:不带有tag的网络,宿主机的网卡经过网桥与flat network链接,每一个flat网络都占有一个物理网卡
服务器
vlan网络: 是带有tag的网络,在openvswitch的实现方式下,不一样的vlan instance的虚拟网卡都会被接到br-int上
网络
gre和vxlan网络:基于隧道技术的overlay network,创建在其余网络上的网络。app
测试环境使用flat网络链接外部物理网络ssh
首先在/etc/neutron/plugins/ml2/ml2_conf.ini中设置相关参数,指定普通用户网络类型为flattcp
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内部网络大体以下:
说明:
一、ens192是物理网卡(使用虚拟化vmware嵌套部署openstack,相对而言,本质仍是虚拟网卡)
二、外部网桥br-ex配有ip地址,做为openstack登录和发放虚拟机使用
三、发放的虚拟机首先须要须要经过neuntron提供的dhcp获取私网ip地址,而后经过router进行snat访问外网
2、浮动ip
DHCP服务器将专用IP地址分配给实例的网络接口。经过使用“ip a”之类的命令,能够在实例中看到该地址。该地址一般是专用网络的一部分,而且用于经过虚拟交换机(每一个计算节点上的L2代理)在同一广播域中的实例之间进行通讯。它也能够经过虚拟路由器(L3代理)从其余专用网络中的实例访问。
浮动IP地址是Neutron提供的服务。它不使用任何DHCP服务或在guest虚拟机中静态设置。事实上,客户的操做系统并不知道它被分配了一个浮动IP地址。使用指定的浮动地址将数据包传送到接口是Neutron的L3代理的责任。具备指定的浮动IP地址的实例能够经过浮动IP从公共网络访问。
OpenStack实例接收一个私有IP地址,经过该IP地址,它们能够相互联系并经过哪些主机能够访问它们。为了从网络中的其余计算机(例如工做站)访问这些实例,须要为实例分配“浮动IP”。Packstack会自动使用默认设置对您的网络进行错误配置。您须要使用一系列适合您网络的免费IP地址配置OpenStack安装。
简单说明:
一、外部网络配置flat网络,保证openstack 可以访问连通外部物理网络
二、浮动ip,就是可用的实际的物理ip地址范围,指虚拟机实例能够绑定的公网ip,在公有云中就是指弹性IP,本次测试环境则是对应的可用的物理地址范围,例如172.31.208.110。
在前面完成全部基础网络配置以后,在dashbord中看到网络拓扑
说明:
一、external_network对接的是外部物理网络,使用flat网络模式,172.31.208.0/24
二、路由器router是虚拟路由器,链接外部网络和虚拟网络
三、router上的一个接口对应的是外部物理网络的地址172.31.208.102,虚拟机实例将会在虚拟私有网络中使用snat,到外部网络网络,而后能够访问外网
四、router上的另外一个接口对应的是虚拟私有网络,192.168.1.0/24,neutron的dhcp服务将分配地址给虚拟机实例
3、发放虚拟实例并绑定浮动ip
前期已经完成了外部网络配置,镜像上传等配置。
测试使用 浮动IP 172.31.208.110
租户项目cloud
租户管理员vdc_admin
3.1 分配浮动ip
以admin身份登录dashbord,在管理员-网络-浮动IP中分配浮动ip172.31.208.110给项目cloud
能够分配多个浮动ip给项目,地址范围要在外部网络flat中配置的地址范围以内,点击分配浮动ip便可
3.2 建立虚拟机实例
以租户管理员vdc_admin登录项目cloud,而后再计算中点击建立实例
前面已经说明如何建立实例,本次再也不说明
成功建立后,开始绑定浮动ip
而后选择分配到的浮动ip
而后须要再网络-安全组中修改规则,入方向开放可以经过tcp 22端口,而后咱们能够经过浮动IP进行ssh服务到虚拟机实例
这样便完成了浮动ip与实例的配置,此时能够经过浮动ip 172.31.208.110进行登录
测试的虚拟机实例
用户名 cirros
密码 cubswin:)
而后能够看到能够访问实例同时能够访问外网
此时咱们查看网络拓扑
4、绑定卷
此时测试实例只有一块硬盘,咱们须要卷服务来生成云硬盘(evs)
建立一块10G大小卷做为云硬盘
而后咱们绑定到实例上
绑定以后,卷做为云硬盘使用,仍是一块虚拟的块设备,须要格式化挂载
sudo fdisk /dev/vdb sudo mkfs.ext3 /dev/vdb1 sudo mount /dev/vdb1 /var df -h
能够看到已经挂载上了
5、思考
一、all in one部署的openstack没法仔细测试neutron的其余网络模式,比较遗憾
二、虚拟化部署的状况下,vmware须要调整分布式交换机的端口组模式为混杂和伪传输为接收,否则虚拟机实例发出访问外网的数据包会被vmware的安全机制所丢弃
三、如何快速自定义建立镜像格式,qcow2
四、如何利用其余自定义镜像格式,如ISO ,如何使用ISO格式发放虚拟机实例?