OpenStack云平臺的網(wǎng)絡(luò)模式及其工作機制是什么,針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
創(chuàng)新互聯(lián)公司主打移動網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、網(wǎng)站改版、網(wǎng)絡(luò)推廣、網(wǎng)站維護、空間域名、等互聯(lián)網(wǎng)信息服務(wù),為各行業(yè)提供服務(wù)。在技術(shù)實力的保障下,我們?yōu)榭蛻舫兄Z穩(wěn)定,放心的服務(wù),根據(jù)網(wǎng)站的內(nèi)容與功能再決定采用什么樣的設(shè)計。最后,要實現(xiàn)符合網(wǎng)站需求的內(nèi)容、功能與設(shè)計,我們還會規(guī)劃穩(wěn)定安全的技術(shù)方案做保障。
網(wǎng)絡(luò),是OpenStack的部署中最容易出問題的,也是其結(jié)構(gòu)中難以理清的部分。經(jīng)常收到關(guān)于OneStack部署網(wǎng)絡(luò)方面問題和OpenStack網(wǎng)絡(luò)結(jié)構(gòu)問題的郵件。下面根據(jù)自己的理解,談一談OpenStack的虛擬網(wǎng)絡(luò)、網(wǎng)絡(luò)拓撲和網(wǎng)絡(luò)流。個人理解有限,僅拋磚引玉,有問題請指正,謝謝。
一、相關(guān)概念和要點(可跳過)
1、OpenStack中nova-network的作用
OpenStack平臺中有兩種類型的物理節(jié)點,控制節(jié)點和計算節(jié)點??刂乒?jié)點包括網(wǎng)絡(luò)控制、調(diào)度管理、api服務(wù)、存儲卷管理、數(shù)據(jù)庫管理、身份管理和鏡像管理等,計算節(jié)點主要提供nova-compute服務(wù)??刂乒?jié)點的服務(wù)可以分開在多個節(jié)點,我們把提供nova-network服務(wù)的節(jié)點稱為網(wǎng)絡(luò)控制器。
OpenStack的網(wǎng)絡(luò)由nova-network(網(wǎng)絡(luò)控制器)管理,它會創(chuàng)建虛擬網(wǎng)絡(luò),使主機之間以及與外部網(wǎng)絡(luò)互相訪問。
OpenStack的API服務(wù)器通過消息隊列分發(fā)nova-network提供的命令,這些命令之后會被nova-network處理,主要的操作有:分配ip地址、配置虛擬網(wǎng)絡(luò)和通信。
區(qū)分以下兩個概念:控制節(jié)點和網(wǎng)絡(luò)控制器
在最簡單的情況下,所有服務(wù)都部署在一個主機,這就是all-in-one;
稍微復(fù)雜點,除了nova-compute外所有服務(wù)都部署在一個主機,這個主機進行各種控制管理,因此也就是控制節(jié)點(本文把2個或以上節(jié)點的部署都稱為“多節(jié)點”);
但是,很多情況下(比如為了高可用性),需要把各種管理服務(wù)分別部署在不同主機(比如分別提供數(shù)據(jù)庫集群服務(wù)、消息隊列、鏡像管理、網(wǎng)絡(luò)控制等)。這個時候網(wǎng)絡(luò)控制器(運行nova-network)只是控制節(jié)點群中的一部分。
2、OpenStack中network的2種ip、3種管理模式
Nova有固定IP和浮動IP的概念。固定IP被分發(fā)到創(chuàng)建的實例不再改變,浮動IP是一些可以和實例動態(tài)綁定和釋放的IP地址。
Nova支持3種類型的網(wǎng)絡(luò),對應(yīng)3種“網(wǎng)絡(luò)管理”類型:Flat管理模式、FlatDHCP管理模式、VLAN管理模式。默認使用VLAN摸式。
這3種類型的網(wǎng)絡(luò)管理模式,可以在一個ОpenStack部署里面共存,可以在不同節(jié)點不一樣,可以進行多種配置實現(xiàn)高可用性。
簡要介紹這3種管理模式,后面再詳細分析。
Flat(扁平): 所有實例橋接到同一個虛擬網(wǎng)絡(luò),需要手動設(shè)置網(wǎng)橋。
FlatDHCP: 與Flat(扁平)管理模式類似,這種網(wǎng)絡(luò)所有實例橋接到同一個虛擬網(wǎng)絡(luò),扁平拓撲。不同的是,正如名字的區(qū)別,實例的ip提供dhcp獲取(nova-network節(jié)點提供dhcp服務(wù)),而且可以自動幫助建立網(wǎng)橋。
VLAN: 為每個項目提供受保護的網(wǎng)段(虛擬LAN)。
二、3種網(wǎng)絡(luò)模式的工作機制
Flat模式
1)指定一個子網(wǎng),規(guī)定虛擬機能使用的ip范圍,也就是一個ip池(
分配ip不會超過這個范圍,也就是配置里面的fixed_range,比如10.0.0.1/27,那么可用ip就有32個;
這個網(wǎng)絡(luò)是可以改變的,比如配置好節(jié)點nova.conf和interfaces后,nova-manage network delete 10.0.0.1/27 1 32;nova-manage network create192.168.1.0/24 1 255
2)創(chuàng)建實例時,從有效ip地址池接取一個IP,為虛擬機實例分配,然后在虛擬機啟動時候注入虛擬機鏡像(文件系統(tǒng));
3)必須手動配置好網(wǎng)橋(br100),所有的系統(tǒng)實例都是和同一個網(wǎng)橋連接;網(wǎng)橋與連到網(wǎng)橋的實例組成一個虛擬網(wǎng)絡(luò),nova-network所在的節(jié)點作為默認網(wǎng)關(guān)。比如flat_interface=eth2;eth2的ip為10.0.0.1,其它網(wǎng)絡(luò)ip在10.0.0.1/27內(nèi)。flat interface-->br100-->flat network
4)此后,網(wǎng)絡(luò)控制器(nova-network節(jié)點)對虛擬機實例進行NAT轉(zhuǎn)換,實現(xiàn)與外部的通信。
注意:目前好像配置注入只能夠?qū)inux類型的操作系統(tǒng)實例正常工作,網(wǎng)絡(luò)配置保存在/etc/network/interfaces文件。
Flat DHCP模式
與Flat模式一樣,從ip池取出ip分配給虛擬機實例,所有的實例都在計算節(jié)點中和一個網(wǎng)橋相關(guān)。不過,在這個模式里,控制節(jié)點做了更多一些的配置,嘗試和以太網(wǎng)設(shè)備(默認為eth0)建立網(wǎng)橋,通過dhcp自動為實例分配flat網(wǎng)絡(luò)的固定ip,可以回收釋放ip。
1)網(wǎng)絡(luò)控制器(運行nova-network服務(wù)的節(jié)點)運行dusmasq作為DHCP服務(wù)器監(jiān)聽這個網(wǎng)橋;
2)實例做一次dhcp discover操作,發(fā)送請求;
3)網(wǎng)絡(luò)控制器把從一個指定的子網(wǎng)中獲得的IP地址響應(yīng)給虛擬機實例;
4)實例通過網(wǎng)絡(luò)控制器與外部實現(xiàn)互相訪問。
VLAN網(wǎng)絡(luò)模式
OpenStack的默認網(wǎng)絡(luò)管理模式,沒有設(shè)置--network_manager=nova.network.manager.FlatDHCPManager或者FlatManager的時候默認為vlan。為了實現(xiàn)多臺機器的安裝,VLAN網(wǎng)絡(luò)模式需要一個支持VLAN標簽(IEEE 802.1Q)的交換機(switch)。
在這個模式里,為每個項目創(chuàng)建了VLAN和網(wǎng)橋。所有屬于某個項目的實例都會連接到同一個VLAN,必要的時候會創(chuàng)建Linux網(wǎng)橋和VLAN。
每個項目獲得一些只能從VLAN內(nèi)部訪問的私有IP地址,即私網(wǎng)網(wǎng)段。每個項目擁有它自己的VLAN,Linux網(wǎng)橋還有子網(wǎng)。被網(wǎng)絡(luò)管理員所指定的子網(wǎng)都會在需要的時候動態(tài)地分配給一個項目。
1)網(wǎng)絡(luò)控制器上的DHCP服務(wù)器為所有的VLAN所啟動,從被分配到項目的子網(wǎng)中獲取IP地址并傳輸?shù)教摂M機實例。
2)為了實現(xiàn)用戶獲得項目的實例,訪問私網(wǎng)網(wǎng)段,需要創(chuàng)建一個特殊的VPN實例(代碼名為cloudpipe,用了創(chuàng)建整數(shù)、key和vpn訪問實例)。
3)計算節(jié)點為用戶生成了證明書和key,使得用戶可以訪問VPN,同時計算節(jié)點自動啟動VPN。
4)vpn訪問。
Flat與vLAN的比較
在兩種Flat模式里,網(wǎng)絡(luò)控制器扮演默認網(wǎng)關(guān)的角色,實例都被分配了公共的IP地址(扁平式結(jié)構(gòu),都在一個橋接網(wǎng)絡(luò)里)。
vLAN模式功能豐富,很適合提供給企業(yè)內(nèi)部部署使用。但是,需要支持vLAN的switches來連接,而且相對比較復(fù)雜,在小范圍實驗中常采用FlatDHCP模式。
三、詳解FlatDHCP模式(Flat模式類似,只是少了dhcp的部分而已,就略過了)
可以有多種部署方式,比如為了實現(xiàn)高可用性,可以使用多網(wǎng)卡、外部網(wǎng)關(guān)、multi_host 等方法。這里主要介紹基本的部署方式(一個控制節(jié)點,或者說一個網(wǎng)絡(luò)控制器)。
1、網(wǎng)卡與節(jié)點
由于網(wǎng)卡和節(jié)點數(shù)的不同,可以簡單分為:單節(jié)點(all-in-one)單網(wǎng)卡、多節(jié)點單網(wǎng)卡、多節(jié)點單網(wǎng)卡、多節(jié)點多網(wǎng)卡
單節(jié)點的情況下,網(wǎng)絡(luò)控制器(運行nova-network)與計算(運行nova-compute,或者更確切的說,運行虛擬機實例)部署在一個主機。這樣就不需要控制節(jié)點與計算節(jié)點之間的通信,也就少了很多網(wǎng)絡(luò)概念,這也是入門者常用的方式。
多節(jié)點時,網(wǎng)絡(luò)控制器與計算節(jié)點分別在不同主機,普通部署方式下(不是multi_host),只有nova-network控制網(wǎng)絡(luò),而它僅僅在控制節(jié)點運行。因此,所有計算節(jié)點的實例都需要通過控制節(jié)點來與外網(wǎng)通信。
單網(wǎng)卡時,網(wǎng)卡需要作為public網(wǎng)絡(luò)的接口使用,也需要作為flat網(wǎng)絡(luò)的接口,因此需要處于混雜模式。不過建立的網(wǎng)絡(luò)與雙網(wǎng)卡類似,都分為flat網(wǎng)絡(luò)和public網(wǎng)絡(luò)。
使用單網(wǎng)卡,需要在nova.conf中使public_interface和flat_interface都為eth0。
2、網(wǎng)絡(luò)流
如上面分析,在普通部署方式下,只有一個控制節(jié)點(或網(wǎng)絡(luò)控制器),dhcp和外網(wǎng)訪問都需要經(jīng)過它。
dhcp時:
1)網(wǎng)絡(luò)控制器(運行nova-network服務(wù)的節(jié)點)一直運行dusmasq作為DHCP服務(wù)器監(jiān)聽網(wǎng)橋(br100);
2)實例做一次dhcp discover操作,發(fā)送請求;
3)網(wǎng)絡(luò)控制器把從一個指定的子網(wǎng)中獲得的IP地址響應(yīng)給虛擬機實例。
實例訪問外網(wǎng)時:
1)實例經(jīng)過所在主機的flat_interface(這是一個flat網(wǎng)絡(luò)),連接到nova-network所在的主機(控制節(jié)點);
2)網(wǎng)絡(luò)控制器對外出網(wǎng)絡(luò)流進行轉(zhuǎn)發(fā)。
外網(wǎng)訪問實例時:
1)網(wǎng)絡(luò)控制器對floating ip進行nat;
2)通過flat網(wǎng)絡(luò)將流入數(shù)據(jù)路由給對應(yīng)的實例。
下圖1、圖2可以比較單網(wǎng)卡和雙網(wǎng)卡的網(wǎng)絡(luò)流(traffic)情況,圖2、圖3可以比較單節(jié)點和多節(jié)點的網(wǎng)絡(luò)流。
圖1:雙網(wǎng)卡多節(jié)點OpenStack網(wǎng)絡(luò)流
圖3:單網(wǎng)卡單節(jié)點OpenStack網(wǎng)絡(luò)流
3、多節(jié)點時控制節(jié)點和計算節(jié)點的工作原理
控制節(jié)點:
1)在主機上創(chuàng)建一個網(wǎng)橋(br100),把網(wǎng)關(guān)ip賦給這個橋;如果已經(jīng)有ip,會自動把這個ip賦給網(wǎng)橋作為網(wǎng)關(guān),并修復(fù)網(wǎng)關(guān);
2)建立dhcp server,監(jiān)聽這個網(wǎng)橋;并在數(shù)據(jù)庫記錄ip的分配和釋放,從而判定虛擬機釋放正常關(guān)閉dhcp;
3)監(jiān)聽到ip請求時,從ip池取出ip,響應(yīng)這個ip給實例;
4)建立iptables規(guī)則,限制和開放與外網(wǎng)的通信或與其它服務(wù)的訪問。
計算節(jié)點:
1)在主機上建立一個對應(yīng)控制節(jié)點的網(wǎng)橋(br100),把其上實例(虛擬機)橋接到一個網(wǎng)絡(luò)(br100所在的網(wǎng)絡(luò));
2)此后,這個橋、控制節(jié)點的橋和實例的虛擬網(wǎng)卡都在同一虛擬網(wǎng)絡(luò),通過控制節(jié)點對外訪問。
可見,這種方式有以下特點:
1)所有實例與外網(wǎng)通信都經(jīng)過網(wǎng)絡(luò)控制器,這也就是SPoF(單故障點);
2)控制節(jié)點提供dhcp服務(wù)、nat、建立子網(wǎng),作為虛擬網(wǎng)絡(luò)的網(wǎng)關(guān);
3)計算節(jié)點可以沒有外網(wǎng)ip,同其上的實例一樣,可以把控制節(jié)點作為網(wǎng)關(guān)對外訪問;
4)實例與外網(wǎng)通信太多,會造成控制節(jié)點網(wǎng)絡(luò)的堵塞或者高負載。
四、VLAN模式的特點
VLAN模式的目的是為每個項目提供受保護的網(wǎng)段,具有以下特點:
NAT實現(xiàn)public ip
除了public NAT外沒有其它途徑進入每個lan
受限的流出網(wǎng)絡(luò),project-admin可以控制
受限的項目之間的訪問,同樣project-admin控制
所以實例和api的連接通過vpn
vLAN模式了解較少,借用OpenStack文檔里的一個圖供對比了解:
圖4:VLAN模式OpenStack網(wǎng)絡(luò)結(jié)構(gòu)
五、網(wǎng)絡(luò)部署
1、網(wǎng)絡(luò)配置
apt-get install bridge-utils
安裝bridge-utils就是為了建立虛擬網(wǎng)橋,實現(xiàn)虛擬網(wǎng)絡(luò)。OpenStack會自動的創(chuàng)建br100這個網(wǎng)橋,所以不用自己創(chuàng)建。
--network_manager=nova.network.manager.FlatDHCPManager
設(shè)置網(wǎng)絡(luò)管理模式,一般使用FlatDHCP,還可以配合multi_host實現(xiàn)高可用。
# Network Configuration --dhcpbridge_flagfile=/etc/nova/nova.conf --dhcpbridge=/usr/bin/nova-dhcpbridge --flat_network_bridge=br100 --flat_interface=eth2 --flat_injected=False --public_interface=eth0
dhcpbridge_flagfile指定配置文件,flat_injected實現(xiàn)ipv6地址的注入,因此關(guān)閉。
flat_network_bridge指定網(wǎng)橋。
flat_interface指定網(wǎng)卡,這個主機節(jié)點(一般就是控制節(jié)點)用來建立橋,橋接實例和虛擬網(wǎng)絡(luò)以及public網(wǎng)絡(luò)。單網(wǎng)卡是設(shè)為eth0,與public的同一個。
#Block of IP addresses that are fixed IPs --fixed_range=10.0.0.1/27
指定ip池的范圍,文中多次提到的從指定的ip池取出ip分配給實例,就是這個ip池。
2、OpenStack中網(wǎng)絡(luò)的高可用性(HA)
在基本的網(wǎng)絡(luò)管理方式中,所有實例的網(wǎng)絡(luò)流都要經(jīng)過網(wǎng)絡(luò)控制器。當網(wǎng)絡(luò)控制器出現(xiàn)問題時,網(wǎng)絡(luò)就出現(xiàn)故障,網(wǎng)絡(luò)控制器是一個SPoF(單故障點)?!稑?gòu)建OpenStack的高可用性(HA,High Availability)》簡單介紹了4種方法和未來的Quantum。
主要的部署方式是FlagDHCP + multi_host:
1)、每個計算節(jié)點安裝nova-network,設(shè)置multi_host為true。這樣,每個計算節(jié)點上flat_interface作為網(wǎng)橋,提供dhcp、DNS,作為其上所有實例的網(wǎng)關(guān)(gateway)。實例不再都從控制節(jié)點經(jīng)過,控制節(jié)點出現(xiàn)問題不會影響網(wǎng)絡(luò)。
2)、每個計算節(jié)點的flat_interface提供switch連接,實現(xiàn)實例之間的虛擬網(wǎng)絡(luò)的傳輸和通信。
3)、每個計算節(jié)點有個public_interface,與外網(wǎng)連接。
4)、為每個實例分配floating ip,作為實例的第二個虛擬ip,與外網(wǎng)通信。
也就是發(fā)生了如下的變化:
圖5:multi_host部署方式時的OpenStack網(wǎng)絡(luò)流
未來的Quantum和Melarge提供更好的網(wǎng)絡(luò)服務(wù),值得期待。Quantum項目實現(xiàn)二層網(wǎng)絡(luò)相關(guān)的功能,如創(chuàng)建和管理虛擬網(wǎng)絡(luò)、端口等。Melange負責(zé)三層網(wǎng)絡(luò)相關(guān),它的主要任務(wù)是IP地址管理(IPAM)、DHCP、NAT甚至負載均衡。不過由于其實現(xiàn)需要一定的時間,需要多個階段,現(xiàn)在還是需要了解以上的各種網(wǎng)絡(luò)模式和部署。
關(guān)于OpenStack云平臺的網(wǎng)絡(luò)模式及其工作機制是什么問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。