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格式發放虛擬機實例?