五分鐘技術趣談 | Openstack網絡模型場景分析
Part 01
Openstack是什么?
Openstack是一個云計算平臺,它是由多個組件組合起來,為公有云、私有云和混合云的建設與管理提供軟件的開源項目。現在已經有來自100多個國家的數萬名個人和200多家企業參與到Openstack的開發,如 NASA、華為、谷歌、惠普、Intel、IBM、微軟等[1]。Openstack項目的首要任務是簡化云的部署過程并為其帶來良好的可擴展性。
Part 02
Openstack能干什么?
Openstack可以規劃并管理大量虛擬機,從而允許企業或服務提供商按需提供計算資源;Openstack可以為云服務或云應用提供所需的對象及塊存儲資源。為了解決傳統的網絡管理技術無法真正的實現高擴展、高自動化地管理下一代網絡,Openstack 提供了插件式、可擴展、API 驅動型的網絡及IP管理功能。
Part 03
Openstack支持幾種網絡類型
Openstack網絡類型主要分為兩種:provider networks、和self-service networks,其中self-service比provider多了一個三層路由功能組件(Networking L3 Agent)[2][3],該組件負責實現網絡三層協議,為虛擬機完成SNAT、DNAT等地址的轉換與偽裝,提供安全彈性隔離的云網絡環境。
- provider network
圖片
provider網絡就是常說的橋接網絡,虛擬機內部網絡通過bridge的方式直接橋接到宿主機的某張物理網卡上,從而實現虛擬機可以正常的訪問外部網絡,同時虛擬機外部網絡也可以訪問虛擬機的內部網絡。
- self-service networks
self-service網絡通過在虛擬機和宿主機之間建立虛擬路由器,在虛擬機內部可以是一個私有地址連接至虛擬路由器的一個接口上,而虛擬路由器的另外一端通過網橋橋接到宿主機的某一張物理網卡;所以self-service網絡很好的隱藏了虛擬機的地址,它能夠實現虛擬機訪問外部網絡,而外網用戶是不能夠直接訪問虛擬機的;為了實現從虛擬機外部網絡訪問虛擬機,可以對虛擬機和外部的網絡做一對一nat綁定或者進行端口映射[2][4]。總之provider網絡具備的能力,self-service一般都具備,并在此基礎上還兼具高度的自定義內部網絡功能。
Part 04
不同網絡類型應用場景
1??provider應用場景
provider networks拓撲中,虛擬機網口直接橋接在物理機網卡上,并且直接使用外部網絡分配的IP地址,該網絡類型盡可能減少了對Openstack內部網絡組件的依賴,主要利用外部網絡基礎設施,相對self-service networs不僅穩定性更強,同時引入內部網絡處理時延更小;由于網絡拓撲相對簡單,因此適用于對網絡特性要求不高的場景。
2??self-service應用場景
self-service網絡拓撲中,虛擬機不是直接橋接在物理網卡上,自身具備一個私有網絡,該私有網絡通過虛擬路由器與物理網卡相連,網絡拓撲結構相對復雜,相較provider直接橋接在物理網卡,self-service網絡引入虛擬路由器,會引入一定的處理時延;由于網絡拓撲相對復雜,靈活性較強,因此適用于對網絡特性有一定要求的場景。
Part 05
Openstack快速入門
Openstack本身部署設計開源組件較多,為了降低用戶和開發人員部署難度,社區提供了一個一鍵快速部署環境Devstack。Devstack是Openstack開發版,通過自動化腳本,可以快速完成云計算系統環境的快速搭建和功能驗證。
5.1 環境準備
當前Devstack[5]基于ubuntu22.04進行了嚴苛測試,建議基于vmware創建ubuntu22.04虛擬機,詳細配置如下:
虛擬機系統 Ubuntu 22.04
RAM 至少8GB
硬盤 至少50GB
網卡 建議兩張:一個nat、一個橋接(nat:eth0 192.168.1.2, 橋接:eth2 192.168.2.2)
5.2 環境部署
(1)添加用戶
sudo useradd -s /bin/bash -d /opt/stack -m stack
(2)添加執行權限
sudo chmod +x /opt/stack
(3)添加sudo權限
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)創建配置文件
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
總結
總的來說,Openstack網絡類型分為provider和self-service兩種類型,針對不同的網絡場景,選擇對應的部署方式:如云電腦、云桌面等網絡拓撲相對固定,可以選擇provider網絡類型,但是需要注意provider對部署的基礎設施和機房網絡環境有一定要求;針對私有云、公有云等復雜業務場景可以選擇self-service網絡類型,以便滿足云內部復雜的網絡需求。