OpenStack Q版雙機部署-啟動例項

zxcxylong發表於2020-10-21

前言

本文建立必要的虛擬網路以支援啟動例項。

一、簡介

根據官方文件提供的建立例項的時候提供了兩種網路,一種是provider,一種是self-service。
這兩種的網路的區別就是,

  1. provider網路是從外網路由器的地址池中拿出來一部分地址自己來使用,這樣就導致外界路由器的地址池變少了,我們建立provider使用的IP地址是不能在放到池子裡面的。建立例項的時候分配到的地址就是外網路由器地址池中的地址,這樣就可以直接連線外網了。

但是外網的地址池是有限度的,你這裡只能是使用一部分,無法滿足你建立大量虛機的請求,所以就有了self-service網路。

  1. self-server網路使用的是自己指定的網段,我們可以自己設定網段、開始地址和結束地址,都是可以自己指定的,IP地址隨便劃分,沒有provider網路那種,需要參考外網路由地址池的範圍,但是他是沒法連線外網的,

但是我們有provider網路,我們可以指定provider網路為路由通過他來進行外網訪問。

二、建立例項

1、建立網路

在啟動例項之前,必須建立必要的虛擬網路基礎設施。

provider網路

對於provider網路來說,例項使用通過第2層(橋接/切換)連線到物理網路基礎設施的提供者(外部)網路)。 該網路包括一個DHCP伺服器,為例項提供IP地址。 管理員或其他特權使用者必須建立此網路,因為它直接連線到物理網路基礎設施。

建立provider網路的時候我們需要從外網的地址池中拿出來一部分,所以需要確定外網的地址池範圍,從中找一段沒有使用的就好,
在這裡插入圖片描述

# source admin-openrc 
# openstack network create --share --external --provider-physical-network provider --provider-network-type flat provider

–share選項允許所有專案使用虛擬網路。
–external選項將虛擬網路定義為外部網路。
預設值是內部的。
-provider-physical-net work provider and -provider-net work-type flat 選項是我們在neutron服務配置檔案中制定過的內容
在這裡插入圖片描述
命令模板:
openstack subnet create --network provider
–allocation-pool start=START_IP_ADDRESS,end=END_IP_ADDRESS
–dns-nameserver DNS_RESOLVER --gateway PROVIDER_NETWORK_GATEWAY
–subnet-range PROVIDER_NETWORK_CIDR provider

用外網DHCP地址池網路地址替換PROVIDER_NETWORK_CIDR。
將START_IP_ADDRESS和END_IP_ADDRESS替換為要為例項分配的子網中範圍的第一個和最後一個IP地址。 此範圍不能包括任何現有的活動IP地址。
用DNS解析器的IP地址替換DNS_RESOLVER。 在大多數情況下,您可以從主機上的/etc/resolv.conf檔案中使用一個。
將PROVIDER_NETWORK_GATEWAY替換為提供者網路上的閘道器IP地址,通常是.1IP地址。

# openstack subnet create --network provider --allocation-pool start=192.168.223.10,end=192.168.223.30 --dns-nameserver 192.168.223.2 --gateway 192.168.223.2 --subnet-range 192.168.223.0/24 provider

在這裡插入圖片描述

self-service網路

如果選擇了self-service,你還可以建立一個自助(私有)網路,通過NAT連線到物理網路基礎設施。 該網路包括一個DHCP伺服器,為例項提供IP地址。 這個網路上的例項可以自動訪問外部網路,如Internet。 然而,從外部網路(如網際網路)訪問這個網路上的例項需要一個浮動的IP地址。 演示或其他非特權使用者可以建立此網路,因為它只提供與演示專案中例項的連線。

# openstack network create selfservice

在這裡插入圖片描述
命令示例:
openstack subnet create --network selfservice
–dns-nameserver DNS_RESOLVER --gateway SELFSERVICE_NETWORK_GATEWAY
–subnet-range SELFSERVICE_NETWORK_CIDR selfservice

用DNS解析器的IP地址替換DNS_RESOLVER。 在大多數情況下,您可以從主機上的/etc/resolv.conf檔案中使用一個。
將SELFSERVICE_NETWORK_GATEWAY替換為您想在自助服務網路上使用的閘道器,通常是.1IP地址。
將SELFSERVICE_NETWORK_CIDR替換為您想在自助服務網路上使用的子網。 您可以使用任意值,

# openstack subnet create --network selfservice --dns-nameserver 8.8.4.4 --gateway 172.16.1.1 --subnet-range 172.16.1.0/24 selfservice

在這裡插入圖片描述

建立router

self-service網路使用通常執行雙向NAT的虛擬路由器連線到provider網路。 每個路由器包含至少一個self-service網路上的介面和prov網路上的閘道器。 prov網路必須包括路由器:外部選項,以使self-service路由器能夠使用它與Internet等外部網路連線。
管理員或其他特權使用者必須在網路建立期間包含此選項或稍後新增它。在這種情況下,路由器:外部選項是通過在建立prov網路時使用-外部引數來設定的。

# source admin-openrc 
 建立路由器:
# openstack router create router
 在路由器上新增provider網路子網作為介面:
# openstack router add subnet router selfservice
 在路由器上的self-service網路上設定閘道器:
# openstack router set router --external-gateway provider

在這裡插入圖片描述

檢查下網路建立是否正常:

列出網路名稱空間。 您應該看到一個qrouter名稱空間和兩個qdhcp名稱空間。

 # ip netns 

在這裡插入圖片描述
列出路由器上的埠,以確定提供者網路上的閘道器IP地址:

 # openstack port list --router router

在這裡插入圖片描述

# ping -c3 192.168.223.15

在這裡插入圖片描述

在為您的環境建立適當的網路之後,您可以繼續準備環境以啟動例項。

2、建立flavor

最小的預設flavor每個例項消耗512MB記憶體。 對於包含小於4GB記憶體的計算節點的環境,我們建議建立每個例項只需要64MB的m1.nano flavor。 只使用這種flavor與CirrOS影像的測試目的。

# openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano

在這裡插入圖片描述

3、 生成金鑰對

大多數公有云支援公鑰認證,而不是傳統的密碼認證。 在啟動例項之前,必須向計算服務新增公鑰。

# ssh-keygen -q -N ""
 生成金鑰對並新增公鑰:
# openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
 驗證金鑰對的新增:
# openstack keypair list

在這裡插入圖片描述

4、增加安全組規則

預設情況下,預設安全組適用於所有例項,幷包括防火牆規則,這些規則拒絕遠端訪問例項。 對於像CirrOS這樣的Linux影像,我們建議至少允許ICMP(ping)和安全shell(SSH)。

預設安全組新增規則:

  1. 允許ICMP(ping):
# openstack security group rule create --proto icmp default

在這裡插入圖片描述

  1. 允許安裝shell(SSH)訪問:
# openstack security group rule create --proto tcp --dst-port 22 default

在這裡插入圖片描述

5、啟動一個例項

確定例項選項

# source admin-openrc 
 flavor指定包含處理器、記憶體和儲存的虛擬資源分配配置檔案。
# openstack flavor list
 列出可用的安全組:
# openstack security group list
可用影像列表:
# openstack image list
可用網路列表:
# openstack network list

在這裡插入圖片描述

provider網路啟動一個例項

要啟動例項,至少必須指定flavor、glance名稱、網路、安全組、金鑰和例項名稱。
openstack server create --flavor m1.nano --image cirros
–nic net-id=PROVIDER_NET_ID --security-group default
–key-name mykey provider-instance
用provider網路的ID替換PROVIDER_NET_ID。

# source admin-openrc 
# openstack server create --flavor m1.nano --image cirros --nic net-id=c4481ab2-2067-4e3d-b138-73802de650cb --security-group 539fd7bb-4e17-4b2d-b038-0567ddcd5f08 --key-name mykey provider

在這裡插入圖片描述
到現在為止,你的虛機只要能夠成功建立時active狀態的,那麼你的OpenStack環境中安裝的各個服務就是沒有問題的,但是我們在controller上ping例項的地址是不同的,這是為什麼?

# openstack server list
# ping 192.168.223.11

在這裡插入圖片描述
我們訪問下虛機,看下是什麼情況,可以通過dashboard控制檯訪問也可以通過console的方式訪問,

使用虛擬控制檯訪問例項:

 獲取例項的虛擬網路計算(VNC)會話URL,並從Web瀏覽器訪問它:
# openstack console url show provider

在這裡插入圖片描述
注意:如果Web瀏覽器執行在無法解析控制器主機名的主機上,則可以將控制器替換為控制器節點上管理介面的IP地址。

檢視是例項沒有正常建立,卡在grub系統引導這裡了,
在這裡插入圖片描述
這種情況是因為我使用的vmware虛機虛擬磁碟格式和驅動程式的問題,導致建立的例項無法正常的啟動,我們需要做如下操作

# openstack image list
# openstack image set  --property hw_disk_bus=ide  --property hw_vif_model=e1000 c2243d54-393f-4a5b-9a62-a1f7d7f9958d

在這裡插入圖片描述

# openstack server list
# openstack server delete 30d2b8b2-8eb6-492f-9047-92337a5b9215

在這裡插入圖片描述

重新建立下例項,

# openstack server create --flavor m1.nano --image cirros --nic net-id=c4481ab2-2067-4e3d-b138-73802de650cb --security-group 539fd7bb-4e17-4b2d-b038-0567ddcd5f08 --key-name mykey provider

在這裡插入圖片描述

# openstack server list
# openstack console url show 65df4618-0e7c-4cc6-a891-2810b0fb27a6

在這裡插入圖片描述
這時候我們通過console訪問就可以看到例項正常啟動了,根據提示輸入使用者名稱和密碼就可以進入系統了,
在這裡插入圖片描述

登入進來之後可以看到192.168.223.0/24網段的地址已經配置上來了,ping百度也是可以通的,證明外網是通的,
在這裡插入圖片描述
這時候我們在controller節點上ping分配給例項的地址就可以發現是能夠ping通的,
在這裡插入圖片描述

這樣我們就可以在controller節點上登入建立的例項了,

# ssh cirros@192.168.223.23

在這裡插入圖片描述

self-service網路啟動一個例項

要啟動例項,至少必須指定flavor、glance名稱、網路、安全組、金鑰和例項名稱。

# openstack network list

在這裡插入圖片描述
命令示例:

openstack server create --flavor m1.nano --image cirros
–nic net-id=SELFSERVICE_NET_ID --security-group default
–key-name mykey selfservice-instance

將SELFSERVICE_NET_ID替換為self-service網路的ID。

# openstack server create --flavor m1.nano --image cirros --nic net-id=266a4294-0b9e-41ec-98be-3f66c5abb186 --security-group 539fd7bb-4e17-4b2d-b038-0567ddcd5f08 --key-name mykey self-service

在這裡插入圖片描述

獲取例項的虛擬網路計算(VNC)會話URL,並從Web瀏覽器訪問它:

# openstack server list
# openstack console url show self-service

在這裡插入圖片描述

使用者名稱:cirros
密碼:gocubsgo
在這裡插入圖片描述

我們可以通過之前建立網路的時候,建立的路由在controller上進行訪問,

# ip netns 
# ip netns exec qrouter-52f66683-6088-4128-897d-bd8f4c17dd2d ip a

在這裡插入圖片描述

# ip netns exec qrouter-52f66683-6088-4128-897d-bd8f4c17dd2d ping -c3 172.16.1.4

在這裡插入圖片描述

# ip netns exec qrouter-52f66683-6088-4128-897d-bd8f4c17dd2d ssh cirros@172.16.1.4

在這裡插入圖片描述

我們還可以在provider虛擬網路上建立一個浮動IP地址:

# openstack floating ip create provider
# openstack server add floating ip self-service 192.168.223.14
# openstack server list

在這裡插入圖片描述

# ping -c3 192.168.223.14

在這裡插入圖片描述

# ssh cirros@192.168.223.14

在這裡插入圖片描述

相關文章