五分鐘技術(shù)趣談 | Openstack網(wǎng)絡(luò)模型場景分析
Part 01
Openstack是什么?
Openstack是一個云計算平臺,它是由多個組件組合起來,為公有云、私有云和混合云的建設(shè)與管理提供軟件的開源項目。現(xiàn)在已經(jīng)有來自100多個國家的數(shù)萬名個人和200多家企業(yè)參與到Openstack的開發(fā),如 NASA、華為、谷歌、惠普、Intel、IBM、微軟等[1]。Openstack項目的首要任務(wù)是簡化云的部署過程并為其帶來良好的可擴(kuò)展性。
Part 02
Openstack能干什么?
Openstack可以規(guī)劃并管理大量虛擬機,從而允許企業(yè)或服務(wù)提供商按需提供計算資源;Openstack可以為云服務(wù)或云應(yīng)用提供所需的對象及塊存儲資源。為了解決傳統(tǒng)的網(wǎng)絡(luò)管理技術(shù)無法真正的實現(xiàn)高擴(kuò)展、高自動化地管理下一代網(wǎng)絡(luò),Openstack 提供了插件式、可擴(kuò)展、API 驅(qū)動型的網(wǎng)絡(luò)及IP管理功能。
Part 03
Openstack支持幾種網(wǎng)絡(luò)類型
Openstack網(wǎng)絡(luò)類型主要分為兩種:provider networks、和self-service networks,其中self-service比provider多了一個三層路由功能組件(Networking L3 Agent)[2][3],該組件負(fù)責(zé)實現(xiàn)網(wǎng)絡(luò)三層協(xié)議,為虛擬機完成SNAT、DNAT等地址的轉(zhuǎn)換與偽裝,提供安全彈性隔離的云網(wǎng)絡(luò)環(huán)境。
- provider network
圖片
provider網(wǎng)絡(luò)就是常說的橋接網(wǎng)絡(luò),虛擬機內(nèi)部網(wǎng)絡(luò)通過bridge的方式直接橋接到宿主機的某張物理網(wǎng)卡上,從而實現(xiàn)虛擬機可以正常的訪問外部網(wǎng)絡(luò),同時虛擬機外部網(wǎng)絡(luò)也可以訪問虛擬機的內(nèi)部網(wǎng)絡(luò)。
- self-service networks
self-service網(wǎng)絡(luò)通過在虛擬機和宿主機之間建立虛擬路由器,在虛擬機內(nèi)部可以是一個私有地址連接至虛擬路由器的一個接口上,而虛擬路由器的另外一端通過網(wǎng)橋橋接到宿主機的某一張物理網(wǎng)卡;所以self-service網(wǎng)絡(luò)很好的隱藏了虛擬機的地址,它能夠?qū)崿F(xiàn)虛擬機訪問外部網(wǎng)絡(luò),而外網(wǎng)用戶是不能夠直接訪問虛擬機的;為了實現(xiàn)從虛擬機外部網(wǎng)絡(luò)訪問虛擬機,可以對虛擬機和外部的網(wǎng)絡(luò)做一對一nat綁定或者進(jìn)行端口映射[2][4]??傊畃rovider網(wǎng)絡(luò)具備的能力,self-service一般都具備,并在此基礎(chǔ)上還兼具高度的自定義內(nèi)部網(wǎng)絡(luò)功能。
Part 04
不同網(wǎng)絡(luò)類型應(yīng)用場景
1??provider應(yīng)用場景
provider networks拓?fù)渲?,虛擬機網(wǎng)口直接橋接在物理機網(wǎng)卡上,并且直接使用外部網(wǎng)絡(luò)分配的IP地址,該網(wǎng)絡(luò)類型盡可能減少了對Openstack內(nèi)部網(wǎng)絡(luò)組件的依賴,主要利用外部網(wǎng)絡(luò)基礎(chǔ)設(shè)施,相對self-service networs不僅穩(wěn)定性更強,同時引入內(nèi)部網(wǎng)絡(luò)處理時延更??;由于網(wǎng)絡(luò)拓?fù)湎鄬唵危虼诉m用于對網(wǎng)絡(luò)特性要求不高的場景。
2??self-service應(yīng)用場景
self-service網(wǎng)絡(luò)拓?fù)渲?,虛擬機不是直接橋接在物理網(wǎng)卡上,自身具備一個私有網(wǎng)絡(luò),該私有網(wǎng)絡(luò)通過虛擬路由器與物理網(wǎng)卡相連,網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)相對復(fù)雜,相較provider直接橋接在物理網(wǎng)卡,self-service網(wǎng)絡(luò)引入虛擬路由器,會引入一定的處理時延;由于網(wǎng)絡(luò)拓?fù)湎鄬?fù)雜,靈活性較強,因此適用于對網(wǎng)絡(luò)特性有一定要求的場景。
Part 05
Openstack快速入門
Openstack本身部署設(shè)計開源組件較多,為了降低用戶和開發(fā)人員部署難度,社區(qū)提供了一個一鍵快速部署環(huán)境Devstack。Devstack是Openstack開發(fā)版,通過自動化腳本,可以快速完成云計算系統(tǒng)環(huán)境的快速搭建和功能驗證。
5.1 環(huán)境準(zhǔn)備
當(dāng)前Devstack[5]基于ubuntu22.04進(jìn)行了嚴(yán)苛測試,建議基于vmware創(chuàng)建ubuntu22.04虛擬機,詳細(xì)配置如下:
虛擬機系統(tǒng) Ubuntu 22.04
RAM 至少8GB
硬盤 至少50GB
網(wǎng)卡 建議兩張:一個nat、一個橋接(nat:eth0 192.168.1.2, 橋接:eth2 192.168.2.2)
5.2 環(huán)境部署
(1)添加用戶
sudo useradd -s /bin/bash -d /opt/stack -m stack
(2)添加執(zhí)行權(quán)限
sudo chmod +x /opt/stack
(3)添加sudo權(quán)限
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
sudo -u stack -i
(4)下載devstack
git clone
https://opendev.org/Openstack/devstack
cd devstack
(5)創(chuàng)建配置文件
vim local.conf
[[local|localrc]]
HOST_IP=192.168.2.2
SERVICE_HOST=192.168.2.2
MYSQL_HOST=192.168.2.2
RABBIT_HOST=192.168.2.2
GLANCE_HOSTPORT=192.168.2.2:9292
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=secret
RABBIT_PASSWORD=secret
SERVICE_PASSWORD=secret
## Neutron options
Q_USE_SECGROUP=True
FLOATING_RANGE="192.168.1.0/24"
Q_FLOATING_ALLOCATION_POOL=start=192.168.1.200,end=192.168.1.220
PUBLIC_NETWORK_GATEWAY="192.168.1.1"
PUBLIC_INTERFACE=eth0
# Open vSwitch provider networking configuration
Q_USE_PROVIDERNET_FOR_PUBLIC=True
OVS_PHYSICAL_BRIDGE=br-ex
PUBLIC_BRIDGE=br-ex
OVS_BRIDGE_MAPPINGS=public:br-ex
(6)開始安裝
./stack.sh
Part 06
總結(jié)
總的來說,Openstack網(wǎng)絡(luò)類型分為provider和self-service兩種類型,針對不同的網(wǎng)絡(luò)場景,選擇對應(yīng)的部署方式:如云電腦、云桌面等網(wǎng)絡(luò)拓?fù)湎鄬潭?,可以選擇provider網(wǎng)絡(luò)類型,但是需要注意provider對部署的基礎(chǔ)設(shè)施和機房網(wǎng)絡(luò)環(huán)境有一定要求;針對私有云、公有云等復(fù)雜業(yè)務(wù)場景可以選擇self-service網(wǎng)絡(luò)類型,以便滿足云內(nèi)部復(fù)雜的網(wǎng)絡(luò)需求。