iT邦幫忙

2023 iThome 鐵人賽

DAY 15
0
DevOps

在OpenStack Neutron的ovn-networking裡挖呀挖呀挖系列 第 15

Day-15: 多節點的OpenStack環境

  • 分享至 

  • xImage
  •  

Day-09: 在OpenStack 上建立Network 我們用packstack安裝一個只能建立local type Netowrk的all-in-one OpenStack,了解OpenStack網路模型與OVN之間的對應關係。今天,我們進一步安裝一個包含三個節點的OpenStack,來深入了解OpenStack如何實現多個節點的網路方案。

gh

我們今天要安裝的多節點OpenStack長相如圖表示,除了這裡表示的這一種架構之外,OpenStack還有其他進階的多節點架構,我們會在後面和大家介紹。先來看一下今天的多節點OpenStack有什麼特點。

  1. 共有三個節點,都是由VirtualBox建立的虛擬機器,三個節點都有三張NIC。eth0都是用VirtualBox的NAT對外連到Internet,eth1與eth2都是host-only Netwrok,分別為192.168.33.0/24、192.168.10.0/24,可與實體主機互通。
  2. 三個節點是透過eth1(192.168.33.0/24)這個網路做GENEVE tunnel。
  3. 三個節點上都有br-int bridge, 可以看到每個節點的br-int上,會有二個ovn-xxxxxx-0 interface。我們在[[Day-01_What-Is-OVN]]就有提供,OVN的架構下,如果有N個節點,在br-int就會有N-1個interface,封包要由GENEVE出去時,就直接依照目的地端的Chassis ID, 由相對應的interface送出
  4. 二個節點是單純的compute node,VM會建立在compute node上;另一個節點同時為network node和controller node。
  5. 身為Network node的network-controller,必需提供對外上網的能力,所以可以看到network-controller將對外的eth0掛在br-ex bridge上;而其他的compute node不需提供直接上網的能力,所以沒有br-ex. 如果單獨看br-ex, 會發現行為和[[Day-07_Internet-Access-Using-DNAT]]的原理是相同的。
  6. 每個節點都將eth2掛在br-eth2 bridge上,這個bridge是要讓虛擬機器能夠存取實體網路。如果單獨看br-eth2,會發現行為和[[Day-06_OVN-LocalNet]]的原理相同。

建立多節點OpenStack

直接透過準備好的Vagrantfile建立多個Node的OpenStack。

git clone https://github.com/ogre0403/iTHome-2023
cd iTHome-2023/day-15
vagrant up

我們在Vagrantfile是用packstack建立出今天所需要的架構,我們今天多介紹一些packstack提供的參數,讓大家知道這裡參數的用法。

packstack                                                        \
	--nova-libvirt-virt-type=kvm                                 \
	--keystone-admin-passwd=password                             \
	--os-debug-mode=y                                            \
	--provision-demo=n                                           \
	--os-cinder-install=n                                        \
	--os-swift-install=n                                         \
	--os-aodh-install=n                                          \
	--os-ceilometer-install=n                                    \
	--os-horizon-install=n                                       \
	--os-neutron-ml2-type-drivers=flat                           \
	--os-neutron-ml2-flat-networks=*                             \
	--os-neutron-ml2-tenant-network-types=' '                    \
	--os-neutron-ml2-mechanism-drivers=ovn                       \
	--os-neutron-l2-agent=ovn                                    \
	--os-neutron-ovn-bridge-mappings=extnet0:br-ex,flat0:br-eth2 \
	--os-neutron-ovn-bridge-interfaces=br-ex:eth0,br-eth2:eth2   \
	--os-neutron-ovn-bridges-compute=br-eth2                     \
	--os-neutron-ovn-tunnel-if=eth1                              \
	--os-controller-host=192.168.33.10                           \
	--os-network-hosts=192.168.33.10                             \
	--os-compute-hosts=192.168.33.20,192.168.33.30               \
	--install-hosts=192.168.33.10,192.168.33.20,192.168.33.30
  1. 聲明使用kvm建VM,以及keystone的密碼。
--nova-libvirt-virt-type=kvm                                 \
--keystone-admin-passwd=password                             \
--os-debug-mode=y                                            \
  1. 因為是採用nested virtualization,在VM上安裝OpenStack,因將用不到的功能取消不要安裝已節省一些資源。
--provision-demo=n                                           \
--os-cinder-install=n                                        \
--os-swift-install=n                                         \
--os-aodh-install=n                                          \
--os-ceilometer-install=n                                    \
--os-horizon-install=n                                       \
  1. packstack預設在建立虛擬網路時,只允許使用GENEVE這種類型的虛擬網路,我們額外加上flat type的支援,讓我們可以驗證一下flat 網路的行為。在建立flat Network時,需指定要用的flat network name,合法的名字需要設定在--os-neutron-ml2-flat-networks,若是*,則填任意字串均可。
--os-neutron-ml2-type-drivers=flat                           \
--os-neutron-ml2-flat-networks=*                             \
--os-neutron-ml2-tenant-network-types=' '                    \
  1. 使用OVN driver。
--os-neutron-ml2-mechanism-drivers=ovn                       \
--os-neutron-l2-agent=ovn                                    \
  1. 這一部份應該是網路設定中最關鍵的部份了,讓我們來看一下。
--os-neutron-ovn-bridge-mappings=extnet0:br-ex,flat0:br-eth2 \
--os-neutron-ovn-bridge-interfaces=br-ex:eth0,br-eth2:eth2   \
--os-neutron-ovn-bridges-compute=br-eth2                     \
--os-neutron-ovn-tunnel-if=eth1                              \
  • --os-neutron-ovn-tunnel-if: 要用那一張NIC做為GENEVE的網卡。一開始就提到我們會用eth1。
  • --os-neutron-ovn-bridge-mappings: <physical_network>:<ovs_bridge>,OpenStack建立網路時,要填寫的相對應的physical_network名字。
  • --os-neutron-ovn-bridge-interfaces: <ovs_bridge>:<interface_name>, 節點上,bridge與interface的對應。
  • --os-neutron-ovn-bridges-compute: 若因為架構需要,要所有compute node都存在某個bridge,可以將bridge加在這個設定。因為我們會讓所有節點上使用br-eth2的flat Network的VM可以通訊,所以要讓每個節點都有br-eth2.
  1. 指定要在那些節點上進行安裝;以及分別指定不同的角色要安裝在那些節點上。這裡可以看到192.168.33.10同時是network host,也是controller host。
--os-controller-host=192.168.33.10                           \
--os-network-hosts=192.168.33.10                             \
--os-compute-hosts=192.168.33.20,192.168.33.30               \
--install-hosts=192.168.33.10,192.168.33.20,192.168.33.30

今天知道如何用packstack可以方便的安裝不同架構的OpenStack後,我們就可以用這個多節點的OpenStack再來看看如何用OVN實現多節點下的網路功能吧。


上一篇
Day-14: OpenStack Router連接二個Network
下一篇
Day-16: Geneve Tenant Network
系列文
在OpenStack Neutron的ovn-networking裡挖呀挖呀挖30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言