Day-09: 在OpenStack 上建立Network 我們用packstack安裝一個只能建立local
type Netowrk的all-in-one OpenStack,了解OpenStack網路模型與OVN之間的對應關係。今天,我們進一步安裝一個包含三個節點的OpenStack,來深入了解OpenStack如何實現多個節點的網路方案。
我們今天要安裝的多節點OpenStack長相如圖表示,除了這裡表示的這一種架構之外,OpenStack還有其他進階的多節點架構,我們會在後面和大家介紹。先來看一下今天的多節點OpenStack有什麼特點。
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送出br-ex
bridge上;而其他的compute node不需提供直接上網的能力,所以沒有br-ex
. 如果單獨看br-ex
, 會發現行為和[[Day-07_Internet-Access-Using-DNAT]]的原理是相同的。br-eth2
bridge上,這個bridge是要讓虛擬機器能夠存取實體網路。如果單獨看br-eth2
,會發現行為和[[Day-06_OVN-LocalNet]]的原理相同。直接透過準備好的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
--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 \
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=' ' \
--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-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
.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實現多節點下的網路功能吧。