作者:獨筆孤行@TaoCloud
本文檔主要基于OpenStack官方文檔,對官方文檔加以更加詳細的說明和解讀,更适合新手部署學習OpenStack。
官方文檔中主要為英文,隻有M版和L版有中文版,但存在部分翻譯錯誤,不建議新手使用。在此提供官方文檔連結:https://docs.openstack.org/newton/install/
若在虛拟機中部署OpenStack,網絡要選擇vxlan模式,vlan模式隻能在實體機中使用。
1.基礎環境
1.1 最低硬體配置:
• 控制節點: 1 處理器, 4 GB 記憶體, 5 GB 磁盤
• 計算節點: 1 處理器, 2 GB 記憶體, 10 GB 磁盤
• 存儲節點: 1 處理器, 2 GB 記憶體, 10 GB 磁盤+10G資料盤
節點
主機名
網卡1(eth0)
網卡2(eth1)
控制節點
controller
10.0.0.10
192.168.20.10
計算節點
compute
10.0.0.11
192.168.20.11
存儲節點
storage
10.0.0.12
192.168.20.12
eth0用途1:eth0為管理網絡,是openstack環境裡各個子產品之間互動,連接配接資料庫,連接配接Message Queue的網絡,即openstack本身用的IP網段。
eth0用途2:eth0為隧道網絡tunnel,openstack裡使用vxlan模式,需要有隧道網絡;隧道網絡采用了點到點通信協定代替了交換連接配接,tunnel用于虛拟機走網絡資料流量。
eth1用途 : eth1用于是連結外網,使用者通路openstack虛拟機,必須有個網段是連外網的,使用者通過這個網絡能通路到虛拟機。
注解 标準的生産環境中,OpenStack需要管理網、外網、隧道網絡共3個網段,本次主要遵循官方文檔,将管理網絡與隧道網絡合并用eth0網卡。如果隻是測試環境,可以将3個網絡合并為一個網卡。
1.2 作業系統
CentOS-7-x86_64-Minimal-1511.iso
1.3 CPU虛拟化
本手冊采用VMware WorkStation建立虛拟機搭建OpenStack Newton。按照如下内容打開CPU虛拟化功能。實體伺服器需要進入BIOS,打開CPU虛拟化功能。打開完成後,在作業系統中執行:egrep -c '(vmx|svm)' /proc/cpuinfo 指令檢測是否打開成功。傳回值大于1說明完成。
1.4 網卡配置
本次測試采用每台伺服器2個實體網卡,環境無法滿足時同樣可以隻配置1個網卡,OpenStack所有網絡都走同一網卡。CentOS7.2安裝完成後,預設網卡名稱是eno16777736,需要把eno16777736改成eth0.也可以不改使用預設名稱。
更改網卡名稱為eth0
編輯網卡配置檔案,将NAME和DEVICE内容改為eth0.
編輯 /etc/default/grub。在GRUB_CMDLINE_LINUX中添加net.ifnames=0 biosdevname=0内容。
運作指令grub2-mkconfig -o /boot/grub2/grub.cfg 來重新生成GRUB配置并更新核心參數,完成後執行reboot指令重新開機伺服器。按照同樣的操作将其他網卡改成類似的形式。
詳細介紹可參考連結:https://jingyan.baidu.com/article/17bd8e524c76a285ab2bb8ff.html
1.5 安全設定
關閉并禁用NetworkManager:
關閉并禁用防火牆:
1.6 域名解析
配置hosts域名解析,不改變原有内容,添加如下内容:
1.7 yum源配置
OpenStack Newton的yum源有兩種配置方式。即網絡源和本地源。網絡源需要OpenStack伺服器能通路網際網路。本地源需要把Newton.tar.gz壓縮包拷貝到伺服器制作本地源。
1.配置OpenStack-Newton網絡源
安裝kvm源
2.配置本地yum源
解壓縮Newton.tar.gz壓縮包到root目錄下,并安裝createrepo。
建立Newton本地源。
編輯yum源配置檔案
選擇以上任意一種方式配置好yum源後,生成yum源緩存。
2.OpenStack環境
2.1概況
2.2密碼安全
使用者名稱 密碼名稱 描述
root 資料庫密碼(不能使用變量) 資料庫的root密碼
admin ADMIN_PASS admin 使用者密碼
cinder CINDER_DBPASS 塊裝置存儲服務的資料庫密碼
cinder CINDER_PASS 塊裝置存儲服務的 cinder 密碼
admin DASH_DBPASS Database password for the dashboard
demo DEMO_PASS demo 使用者的密碼
glance GLANCE_DBPASS 鏡像服務的資料庫密碼
glance GLANCE_PASS 鏡像服務的 glance 使用者密碼
keystone KEYSTONE_DBPASS 認證服務的資料庫密碼
neutron NEUTRON_DBPASS 網絡服務的資料庫密碼
neutron NEUTRON_PASS 網絡服務的 neutron 使用者密碼
nova NOVA_DBPASS 計算服務的資料庫密碼
nova NOVA_PASS 計算服務中<code>nova</code>使用者的密碼
openstack RABBIT_PASS RabbitMQ的guest使用者密碼
2.3 網絡時間協定(NTP)
Controller控制節點
1.安裝軟體包
2.編輯 /etc/chrony.conf 檔案,按照你環境的要求,對下面的鍵進行添加,修改或者删除:
為允許其他節點可以連接配接到控制節點的 chrony 背景程序,在<code>/etc/chrony.conf</code> 檔案添加下面的鍵值:
如有必要,将10.0.0.0/24替換成你子網的相應描述。
啟動 NTP 服務并将其配置為随系統啟動::
在控制節點上運作監測指令: chronyc sources。包含controller内容即可。
其他節點
2.編輯 /etc/chrony.conf 檔案,按照你環境的要求,對下面的鍵進行添加,且隻保留controller節點的時間同步,删除其他時間同步:
3.啟動 NTP 服務并将其配置為随系統啟動::
驗證操作
建議在繼續進一步的操作之前驗證 NTP 的同步。有些節點,特别是哪些引用了控制節點的,需要花費一些時間去同步。
1.在控制節點上執行這個指令:
在 Name/IP address 列的内容應顯示NTP伺服器的主機名或者IP位址。在 S 列的内容應該在NTP服務目前同步的上遊伺服器前顯示 *。紅色标記部分出現既可。
2.在所有其他節點執行相同指令:
在 Name/IP address 列的内容應顯示控制節點的主機名。
2.4 OpenStack包
所有節點
1.安裝 OpenStack 用戶端:
2.CentOS 預設啟用了SELinux。安裝openstack-selinux軟體包以便自動管理OpenStack 服務的安全政策:
2.5 SQL資料庫
大多數 OpenStack 服務使用 SQL 資料庫來存儲資訊。 典型地,資料庫運作在控制節點上。以下内容隻在控制節點上操作。
1.安裝軟體包:
2.建立并編輯 /etc/my.cnf.d/openstack.cnf 檔案,完成如下操作:
建立 [mysqld] 部分,設定 <code>bind-address</code> 的值為controller控制節點的管理網ip位址。以使得其它節點可以通過管理網絡通路資料庫,設定其他鍵值來啟用有用的選項和 UTF-8 字元集:
3.啟動資料庫服務并設定開機自啟動:
為了保證資料庫服務的安全性,運作<code>mysql_secure_installation</code>腳本。特别需要說明的是,為資料庫的root使用者設定一個适當的密碼。
2.6 消息隊列
OpenStack使用message queue協調操作和各服務的狀态資訊。消息隊列服務一般運作在控制節點上。OpenStack支援好幾種消息隊列服務包括RabbitMQ, Qpid, and ZeroMQ. 不過,大多數發行版本的OpenStack包支援特定的消息隊列服務。本指南安裝 RabbitMQ 消息隊列服務,因為大部分發行版本都支援它。如果你想安裝不同的消息隊列服務,查詢與之相關的文檔。
消息隊列運作在 controller控制節點上。
安裝軟體包:
啟動消息隊列服務并設定開機自啟動:
添加 openstack 使用者:(使用者名openstack,密碼RABBIT_PASS)
用合适的密碼替換 RABBIT_PASS
為 openstack 使用者配置寫和讀的權限:
2.7 Memcached
認證服務認證緩存使用Memcached緩存令牌。緩存服務memecached運作在controller控制節點。在生産部署中,我們推薦聯合啟用防火牆、認證和加密保證它的安全。
2.為了允許其他節點通過管理網絡通路,編輯 /etc/sysconfig/memcached 檔案,配置服務使用controller控制節點管理ip位址:
替換原有有内容"127.0.0.1"或" "
配置完成後檢視/etc/sysconfig/memcached檔案内容為:
3.啟動Memcached 服務并設定開機自啟動:
3.認證服務
本節描述如何在控制器節點上安裝和配置OpenStack認證服務,即Keystone。考慮到可擴充性,此配置部署了Fernet令牌和Apache HTTP伺服器來處理請求。
3.1安裝和配置
在安裝和配置OpenStack認證服務之前,一定要建立資料庫和管理者令牌。
1.建立資料庫,完成如下操作:
用資料庫用戶端以root使用者連接配接到資料庫伺服器:
建立 keystone 資料庫:
對keystone資料庫賦予合适的權限:
可用合适的密碼替換 KEYSTONE_DBPASS。
退出資料庫連接配接。
預設配置檔案因分布不同而不同。您可能需要添加這些部分和選項,而不是修改現有的部分和選項。此外,配置片段中的省略号(…),表示應該保留的原有的預設配置。 本指南使用帶有mod_wsgi的Apache HTTP伺服器,響應端口5000和35357上的認證服務請求。預設情況下,keystone服務仍然偵聽這些端口。是以,該指南手動禁用keystone服務。
2運作如下指令安裝軟體包:
3.編輯/etc/keystone/keystone.conf 檔案完成如下操作:
在 [database]部分,配置資料庫通路:
可用keystone 認證服務資料庫設定的密碼替換KEYSTONE_DBPASS
注釋或者移除[database]部分的其他任何connection選項
在 [token] 部分,配置Fernet 令牌提供者:
4.同步認證服務資料庫:
5.初始化Fernet 存儲庫:
6.引導認證服務:
用合适的管理者使用者密碼替換 ADMIN_PASS。
7.配置Apache http服務,編輯/etc/httpd/conf/httpd.conf 檔案,配置ServerName 選項 為控制節點:
8.建立指向 /usr/share/keystone/wsgi-keystone.conf 檔案的連結:
9.啟動Apache HTTP服務并設定開機自啟動:
10.配置管理者賬戶
可用在“安裝和配置”部分使用keystone-manage bootstrap 指令設定的密碼替換 ADMIN_PASS
3.2建立域、項目、使用者和角色
身份認證服務為每個OpenStack服務提供認證服務。認證服務使用 domains, projects, users, 和 roles的組合。
1.本指南使用一個服務項目,該服務項目為添加到環境中的每個服務包含唯一的使用者。建立service項目
2.正常(非管理)任務應該使用非特權項目和使用者。作為一個例子,這個指南建立demo項目和使用者。
建立 demo 項目:
在為該項目建立額外使用者時,不要重複此步驟。
建立 demo 使用者:
建立 user 角色:
添加 user 角色到demo 項目和使用者:
此指令沒有輸出 可以重複此步驟建立更多項目和使用者
3.3驗證操作
在安裝其他服務之前,驗證身份認證服務的操作。
在控制節點上執行這些指令
1.考慮安全因素,關閉臨時認證令牌機制:
編輯 /etc/keystone/keystone-paste.ini 檔案,從 [pipeline:public_api], [pipeline:admin_api], 和 [pipeline:api_v3] 這3個部分移除admin_token_auth。
2.重置 OS_AUTH_URL 和 OS_PASSWORD 臨時環境變量:
3.作為 admin 使用者,請求令牌認證:
這個指令使用admin 使用者的密碼。
4.作為 demo 使用者,請求令牌認證:
這個指令使用demo使用者密碼和API端口5000,這樣隻會允許對身份認證服務API的正常(非管理)通路。
3.4建立 OpenStack 用戶端環境腳本
前一節中使用環境變量和指令選項的組合,通過openstack用戶端與身份認證服務互動。為了提升用戶端操作的效率,OpenStack支援簡單的用戶端環境變量腳本即OpenRC 檔案。這些腳本通常包含用戶端所有常見的選項,當然也支援唯一選項。
為 admin 和 demo 項目和使用者建立用戶端項目腳本,本指南的接下來的部分會引用這些腳本,為用戶端操作加載合适的的憑證。本指南的接下來的部分會引用這些腳本,為用戶端操作加載合适的的憑證。
編輯 admin-openrc 檔案添加如下内容:
用在認證服務中設定的 admin 使用者的密碼替換 ADMIN_PASS。
編輯 demo-openrc 檔案添加如下内容:
用在認證服務中設定的 demo使用者的密碼替換DEMO_PASS。
使用特定租戶和使用者運作用戶端,你可以在運作之前簡單地加載相關用戶端腳本。例如:
加載 admin-openrc 檔案以滿足身份認證服務的環境變量,和 admin 項目和使用者認證:
請求認證令牌:
4.鏡像服務
4.1安裝前準備
這個部分描述如何在控制節點上安裝和配置鏡像服務,即 glance。簡單來說,這個配置将鏡像儲存在本地檔案系統中。
安裝和配置鏡像服務之前,你必須建立建立一個資料庫、服務憑證和API端點。
建立資料庫并完成以下步驟:
用資料庫連接配接用戶端以 root 使用者連接配接到資料庫伺服器:
建立 glance 資料庫:
對 glance 資料庫賦予合适的權限:
可用合适的密碼替換GLANCE_DBPASS。
獲得 admin 憑證來擷取隻有管理者能執行的指令的通路權限:
要建立服務證書,完成這些步驟:
建立 glance 使用者:
添加 admin 角色到 glance 使用者和 service 項目:
此指令沒有輸出。
建立 glance 服務實體:
4.建立鏡像服務的API端點:
4.2安裝配置元件
預設配置檔案在各發行版本中可能不同。你可能需要添加這些部分和選項,而不是修改已經存在的部分和選項。另外,在配置片段中的省略号(...)表示預設的配置選項應該保留。
編輯 /etc/glance/glance-api.conf 檔案完成如下步驟:
在 [database] 部分,配置資料庫通路:
可用在 glance 鏡像服務資料庫設定的密碼替換 GLANCE_DBPASS。
在 [keystone_authtoken] 和 [paste_deploy] 部分,配置認證服務通路:
将 GLANCE_PASS 替換為在認證服務中為 glance 使用者設定的密碼。
注釋或删除 [keystone_authtoken] 中的其它選項。
在 [glance_store] 部分,配置本地檔案系統商店和本地鏡像檔案:
編輯 /etc/glance/glance-registry.conf 檔案完成如下内容:
在 [database] 部分,配置資料庫通路:
可用在glance鏡像服務資料庫設定的密碼替換 GLANCE_DBPASS。
在 [keystone_authtoken] 和 [paste_deploy] 部分,配置身份認證服務通路:
可用在身份認證服務建立 glance 使用者的密碼替換GLANCE_PASS。
注釋或者删除 [keystone_authtoken] 部分的其它選項。
同步鏡像服務資料庫:
忽略任何輸出。
5.啟動鏡像服務并設定開機自啟動:
4.3驗證操作
CirrOS是一個小型的Linux鏡像,使用 CirrOS對鏡像服務進行驗證,可以用來測試 OpenStack部署。
在控制節點執行如下指令。
獲得 admin 憑證來擷取隻有管理者能執行的指令的通路權限:
下載下傳鏡像:
如果沒有wget 指令請安裝它:yum install wget -y
使用 QCOW2 磁盤格式, bare 容器格式上傳鏡像到鏡像服務并設定公共可見,這樣所有的項目都可以通路它:
OpenStack 是動态生成 ID 的,是以您看到的輸出會與示例中的指令行輸出不相同。
确認鏡像的上傳并驗證屬性:
5.計算服務
這個部分将描述如何在控制節點上安裝和配置 Compute 服務,即 nova。
5.1安裝前準備
在安裝和配置 Compute 服務前,你必須建立資料庫服務的憑據以及 API endpoints。
建立資料庫,完成如下步驟:
用資料庫連接配接用戶端以 root 使用者連接配接到資料庫伺服器:
建立 nova_api 和 nova 資料庫:
給nova_api 和 nova 資料庫賦予合适的權限:
可用合适的密碼替換 NOVA_DBPASS。
要建立服務證書,完成如下步驟:
建立 nova 使用者:
添加 admin 角色到 nova 使用者:
建立 nova 服務實體:
3.建立Compute服務API端點:
5.2安裝配置元件
預設配置檔案在各發行版本中可能不同。你可能需要添加這些部分,選項而不是修改已經存在的部分和選項。另外,在配置片段中的省略号(...)表示預設的配置選項你應該保留。
編輯 /etc/nova/nova.conf 檔案,完成如下操作:
在 [DEFAULT] 部分,隻啟用計算和中繼資料API:
在 [api_database] 和 [database] 部分,配置資料庫通路:
可用在nova和nova_api計算服務資料庫設定的密碼替換 NOVA_DBPASS。
在 [DEFAULT] 部分,配置 RabbitMQ 消息隊列通路:
可用在RabbitMQ消息隊列設定的openstack賬戶密碼替換 RABBIT_PASS。
在 [DEFAULT] 和 [keystone_authtoken] 部分,配置身份認證服務通路:
可用在認證服務中設定的 nova 使用者密碼替換 NOVA_PASS。
在 [DEFAULT] 部分,配置 my_ip 選項使用控制節點的管理網:
在 [DEFAULT] 部分,允許使用網絡服務:
預設情況下,計算服務使用内置的防火牆服務。由于網絡服務包含了防火牆服務,你必須使用 nova.virt.firewall.NoopFirewallDriver 防火牆服務來禁用掉計算服務内置的防火牆服務
在 [vnc] 部分,配置配置VNC代理使用控制節點的管理接口IP位址:
在 [glance] 部分,配置本地鏡像服務API:
在 [oslo_concurrency] 部分,配置鎖路徑:
3.同步計算服務資料庫:
忽略任何資訊輸出。
4.啟動計算服務并設定開機自啟動:
Compute計算節點
安裝并配置計算節點。這部分描述如何在計算節點上安裝并配置計算服務。計算服務支援多種hypervisors 虛拟化方式部署 instances 或 VMs. 簡而言之,本次配置使用KVM計算節點擴充的QEMU虛拟機管理程式,支援對虛拟化的硬體加速。對于傳統的硬體,本配置使用QEMU虛拟化。可以根據這些說明進行細微的調整,或者使用額外的計算節點來橫向擴充環境。
假設已經按照之前的向導配置好了第一個計算節點。如果想要配置更多的計算節點,以類似配置第一個計算節點的方式準備好其它節點。每個額外的計算節點都需要一個唯一的IP位址。
6.5.3安裝配置元件
預設配置檔案在各發行版本中可能不同。你可能需要添加這些部分選項,而不是修改已經存在的部分和選項。此外,在配置片段中的省略号(...)表示預設的配置選項你應該保留。
編輯 /etc/nova/nova.conf 檔案完成如下步驟:
在 [DEFAULT] 部分,隻啟用計算和中繼資料API:
可用在RabbitMQ 消息隊列中設定openstack 使用者的密碼替換 RABBIT_PASS。
在 [DEFAULT] 部分,配置 my_ip 選項:
可用在compute計算節點的管理網ip位址替換 10.0.0.11。
在 [DEFAULT] 部分,啟用網絡服務:
預設情況下,Compute 使用内置的防火牆服務。由于 Networking 包含了防火牆服務,是以你必須通過使用 nova.virt.firewall.NoopFirewallDriver來禁用Compute内置的防火牆服務。
在 [vnc] 部分,啟用并配置遠端控制台通路:
伺服器元件監聽所有的 IP 位址,而代理元件僅僅監聽計算節點管理網絡接口的 IP 位址。基本的 URL 表示可以使用 web 浏覽器通路位于該計算節點上執行個體的遠端控制台位置。
10.0.0.10 是控制節點管理網的ip位址,可用使用控制節點管理網的ip位址替換10.0.0.10,盡量使用控制節點管理網的ip位址而不是域名,使用域名可能出現無法解析的情況。
在 [glance] 部分,配置鏡像服務 API 的位置:
檢查計算節點是否支援虛拟機的硬體加速:
如果這個指令傳回值大于等于1,說明計算節點支援硬體加速且不需要其它配置。
如果這個指令傳回值是0,說明計算節點不支援硬體加速。必須配置 libvirt 來使用 QEMU 代替 KVM。或者打開CPU虛拟化使其支援虛拟化硬體加速。
傳回值是0時,編輯 /etc/nova/nova.conf 檔案的 [libvirt] 部分為如下内容:
啟動計算服務及其依賴,并将其配置為開機自動啟動:
如果 nova-compute 服務啟動失敗,檢查日志 /var/log/nova/nova-compute.log. 類似報錯消息如 AMQP server on controller:5672 is unreachable,說明控制節點的防火牆阻止通路5672端口。
5.4驗證操作
在控制節點上執行如下指令,驗證計算服務操作。
列出服務元件,以驗證是否成功啟動并注冊了每個程序:
輸出應該顯示三個服務元件在控制節點上啟用,一個服務元件在計算節點上啟用。
6.網絡服務
6.1安裝前準備
在配置OpenStack的neutron網絡服務之前,需要建立neutron資料庫、服務憑證和API端點。
1.建立資料庫完成如下步驟:
建立 neutron 資料庫:
對 neutron 資料庫賦予合适的權限:
可用合适的密碼替換NEUTRON_DBPASS。
1.獲得 admin 憑證來擷取隻有管理者能執行的指令的通路權限:
2.建立服務證書,完成如下步驟:
建立 neutron 使用者:
添加 admin 角色到neutron 使用者:
建立 neutron 服務實體:
3.建立網絡服務API端點:
6.2配置網絡服務
OpenStack有公共網絡和私有網絡兩種網絡架構。在實體機中部署OpenStack時,兩種網絡可以選擇其中一種部署,公共網絡配置簡單,私有網絡配置複雜。但在虛拟機中部署OpenStack時,不支援公共網絡部署,隻支援私有網絡vxlan模式部署,是以本次配置選擇私有網絡vxlan模式部署。
私有網絡在公共網絡的基礎上多了layer-3服務,增加了私有網絡、路由器以及浮動IP位址等内容。支援執行個體連接配接到私有網絡。<code>demo</code>或者其他沒有特權的使用者可以管理自己的私有網絡,包含連接配接公網和私網的路由器。另外,浮動IP位址可以讓執行個體使用私有網絡連接配接到外部網絡,例如網際網路。
典型的私有網絡一般使用覆寫網絡。覆寫網絡,例如VXLAN包含了額外的資料頭,這些資料頭增加了開銷,減少了有效内容和使用者資料的可用空間。在不了解虛拟網絡架構的情況下,執行個體嘗試用以太網最大傳輸單元 (MTU) 1500位元組發送資料包。網絡服務會自動給執行個體提供正确的MTU的值通過DHCP的方式。但是,一些雲鏡像并沒有使用DHCP或者忽視了DHCP MTU選項,要求使用中繼資料或者腳本來進行配置
私有網絡支援執行個體連接配接到公共網絡。在控制節點安裝并配置網絡元件。
1.安裝元件
2.配置服務元件
編輯 /etc/neutron/neutron.conf 檔案,完成如下操作:
在資料庫 [database] 部分,配置資料庫通路:
可用建立neutron資料庫設定的密碼替換 NEUTRON_DBPASS。
注釋或者删除[database] 部分的其他 connection 選項。
在 [DEFAULT] 部分,啟用Modular Layer 2 (ML2)插件,路由服務和重疊的IP位址:
在 [DEFAULT] 部分,配置 RabbitMQ 消息隊列通路:
可用在身份認證服務中設定的neutron 使用者的密碼替換 NEUTRON_PASS。
注釋或者删除[keystone_authtoken] 部分的其他選項。
在 [DEFAULT] 和 [nova] 部分,配置網絡服務來通知計算節點的網絡拓撲變化:
可用在身份認證服務中設定的nova 使用者的密碼替換 NOVA_PASS。
3.配置 Modular Layer 2 (ML2) 插件
ML2插件使用Linuxbridge機制,為執行個體建立layer-2虛拟網絡基礎設施
編輯 /etc/neutron/plugins/ml2/ml2_conf.ini 檔案,完成如下内容:
在 [ml2] 部分,啟用flat、VLAN和VXLAN網絡:
在 [ml2] 部分,配置VXLAN私有網絡:
在 [ml2] 部分,啟用Linuxbridge和layer-2機制:
警告 在你配置完ML2插件之後,删除可能導緻資料庫不一緻的 type_drivers 項的值。 Linuxbridge代理隻支援VXLAN覆寫網絡。
在 [ml2] 部分,啟用端口安全擴充驅動:
在 [ml2_type_flat] 部分,配置公共虛拟網絡為flat網絡:
在 [ml2_type_vxlan] 部分,配置私有網絡VXLAN識别的網絡範圍:
在 [securitygroup] 部分,啟用 ipset 增加安全組規則的高效性:
4.配置Linuxbridge代理
Linuxbridge代理為執行個體建立layer-2虛拟網絡并且處理安全組規則。
編輯 /etc/neutron/plugins/ml2/linuxbridge_agent.ini 檔案完成如下步驟:
在 [linux_bridge] 部分,将 provider 虛拟網絡和 provider 實體網絡接口對應起來:
可用provider實體網絡接口的名字替換 eth1。
在 [vxlan] 部分,啟用VXLAN覆寫網絡,配置覆寫網絡的實體網絡接口的IP位址,啟用layer-2 population:
可用處理覆寫網絡的底層實體網絡接口的IP位址替換 10.0.0.10。本次環境搭建使用管理網絡接口與其他節點建立流量隧道。是以,将10.0.0.10替換為控制節點的管理網絡的IP位址。
在 [securitygroup] 部分,啟用安全組并配置Linux橋接防火牆驅動:
5.配置layer-3代理
Layer-3代理為私有虛拟網絡提供路由和NAT服務
編輯/etc/neutron/l3_agent.ini 檔案并完成以下操作:
在 [DEFAULT] 部分,配置Linux網橋接口驅動和外部網絡橋接:
6.配置DHCP代理
DHCP代理提供虛拟網絡DHCP服務。
編輯/etc/neutron/dhcp_agent.ini 檔案并完成以下操作:
在 [DEFAULT] 部分,配置Linuxbridge驅動接口,DHCP驅動并啟用隔離中繼資料,這樣在provider網絡上的執行個體就可以通過網絡來通路中繼資料:
7.配置中繼資料代理
中繼資料代理負責提供配置資訊,例如:通路執行個體的憑證。
編輯 /etc/neutron/metadata_agent.ini 檔案完成如下操作:
在 [DEFAULT] 部分,配置中繼資料主機以及共享密碼
可用合适的中繼資料代理密碼替換METADATA_SECRET。
8.配置計算服務使用網絡
此處為controller控制節點的計算服務,而非compute計算節點。
編輯/etc/nova/nova.conf 檔案并完成如下操作:
在 [neutron] 部分,配置通路參數,啟用中繼資料代理并設定密碼:
可用在認證服務中設定的 neutron 使用者密碼替換 NEUTRON_PASS。
可用在中繼資料代理中設定的密碼替換METADATA_SECRET。
9.完成安裝
網絡服務初始化腳本需要/etc/neutron/plugin.ini檔案,該檔案是指向ML2插件配置檔案/etc/neutron/plugins/ml2/ml2_conf.ini 的超連結。如果超連結不存在,使用下面的指令建立:
同步資料庫:
網絡配置完成之後進行資料庫同步,因為腳本需要完成伺服器和插件的配置檔案。
重新開機計算API服務:
啟動網絡服務并設定開機自啟動。
啟動layer-3服務并設定開機自啟動:
6.3.安裝元件
6.4.配置通用元件
網絡通用元件的配置包括認證機制、消息隊列和插件。
編輯 /etc/neutron/neutron.conf 檔案完成如下操作:
在 [database] 部分,注釋所有 connection項,因為計算節點不直接通路資料庫。
在 [DEFAULT] 和 [keystone_authtoken] 部分,配置認證服務通路:
在 [keystone_authtoken] 中注釋或者删除其他選項。
6.5.配置Linuxbridge代理
可用處理覆寫網絡的底層實體網絡接口的IP位址替換 10.0.0.11。本次環境搭建使用管理網絡接口與其他節點建立流量隧道。是以,将10.0.0.11替換為控制節點的管理網絡的IP位址。
6.6.配置計算服務使用網絡
在 [neutron] 部分,配置通路參數:
6.7.完成安裝
重新開機計算服務:
啟動網絡代理服務并設定開機自啟動。
在控制節點執行這些指令。
獲得 admin 憑證來擷取隻有管理者能執行的指令的通路權限::
列出加載的擴充來驗證 neutron-server 程序是否正常啟動:
實際的輸出結果也許與本例有細微的差異。
列出代理以驗證啟動 neutron 代理是否成功::
輸出結果應該包括控制節點上的四個代理和每個計算節點上的一個代理。
7.Dashboard
Dashboard(horizon)是一個web接口,使得雲平台管理者以及使用者可以管理不同的Openstack資源以及服務。本次署示例使用的是 Apache Web 伺服器。描述如何在控制節點上安裝和配置儀表盤。
Keystone身份認證服務是Dashboard所需的核心服務,可以結合圖像、網絡、計算等其它服務使用Dashboard。也可以在具有獨立服務(如對象存儲)的環境中使用Dashboard。
Controller節點
7.1安裝配置元件
編輯 /etc/openstack-dashboard/local_settings 檔案完成如下步驟:
在 controller 節點上配置儀表盤使用OpenStack服務:
允許所有主機通路儀表闆:
配置 memcached會話存儲服務:
注釋其他的會話存儲服務配置
啟用第3版認證API:
啟用對域的支援:
配置API版本:
通過儀表盤建立使用者時的預設域配置為 default:
通過儀表盤建立的使用者預設角色配置為 user:
vxlan模式預設支援layer-3網絡服務,保持原有預設配置檔案即可,主要有以下内容:
可以選擇性的配置時區:
使用恰當的時區辨別替換Asia/Shanghai。
重新開機web伺服器以及會話存儲服務:
如果目前的服務目前沒有運作,用 systemctl start 來啟動每個服務。
7.2驗證操作
驗證儀表盤的操作。在浏覽器中輸入http://controller/dashboard通路儀表盤。驗證使用 admin或者demo使用者憑證和default域憑證。如果域名controller無法解析,可用controller節點管理網ip位址10.0.0.10替換,即在浏覽器中輸入http://10.0.0.10/dashboard。
8.塊存儲服務
塊存儲服務(cinder)為執行個體提供塊存儲。存儲的配置設定和消耗是由塊存儲驅動器,或者多後端配置的驅動器決定的。還有很多驅動程式可用:NAS/SAN,NFS,ISCSI,Ceph等。典型情況下,塊服務API和排程器服務運作在控制節點上。取決于使用的驅動,卷伺服器可以運作在控制節點、計算節點或單獨的存儲節點。
本節内容講述如何在控制節點上安裝和配置塊存儲服務,即cinder。在控制節點,cinder服務至少需要一個額外的磁盤為執行個體提供卷。
8.1安裝前準備
在你安裝和配置塊存儲服務之前,你必須建立資料庫、服務證書和API端點
1.建立資料庫,完成以下步驟:
建立 cinder 資料庫:
對 cinder 資料庫賦予合适的權限:
可用合适的密碼替換 CINDER_DBPASS。
建立服務證書,完成如下步驟:
建立 cinder 使用者:
添加 admin 角色到 cinder 使用者:
建立 cinder 和 cinderv2 服務實體:
塊存儲服務需要兩個服務實體
4.建立塊裝置存儲服務的 API 入口點:
塊裝置存儲服務每個服務實體都需要端點。
8.2安裝配置元件
2.編輯 /etc/cinder/cinder.conf 檔案并完成以下步驟:
可用在建立 cinder 資料庫時設定的密碼替換 CINDER_DBPASS。
可用在RabbitMQ消息隊列設定的openstack賬戶密碼替換 RABBIT_PASS
在 [DEFAULT] 和 [keystone_authtoken] 部分,配置身份認證服務通路:
可用在認證服務中設定的 cinder 使用者密碼替換 CINDER_PASS。
在 [DEFAULT] 部分,使用controller控制節點管理網ip位址配置 my_ip 選項:
在 [oslo_concurrency] 部分,配置鎖路徑:
3.同步塊存儲資料庫:
忽略輸出中任何不推薦使用的資訊。
4.配置計算服務使用塊存儲
編輯 /etc/nova/nova.conf 檔案為如下内容:
此處為controller控制節點的計算服務,而非compute計算節點。compute計算節點不需要做任何關于使用cinder的配置。
5.重新開機計算API服務:
6.啟動塊存儲服務并設定開機自啟動:
Cinder存儲節點
本節描述如何為塊存儲服務安裝并配置存儲節點。簡而言之,在存儲節點配有一個空的本地磁盤裝置 /dev/sdb,可以根據需求替換成不同的值。cinder服務在/dev/sdb裝置上使用LVM提供邏輯卷,并通過iSCSI協定映射給執行個體使用。同樣可以根據這些修改指導,添加額外的存儲節點來增加存儲環境規模。
8.3安裝前準備
在安裝和配置塊存儲服務之前,必須準備好儲存設備。
在Cinder存儲節點實施這些步驟。
1.安裝支援的工具包:
安裝 LVM 包:
啟動LVM服務并且設定該服務随系統啟動:
2.建立LVM 實體卷 /dev/sdb:
3.建立 LVM 卷組 cinder-volumes:
塊存儲服務會在這個卷組中建立邏輯卷。
隻有執行個體可以通路塊存儲卷組。而底層的作業系統管理裝置與卷關聯。預設情況下,LVM卷掃描工具會預設掃描 /dev 目錄,查找包含卷的塊儲存設備。如果系統有其它任務和lVM使用同一塊裝置,掃描工具檢測到這些卷時會嘗試配置緩存,可能會在底層作業系統和卷上産生各種問題。是以,必須重新配置LVM,讓它隻掃描包含cinder-volume卷組的裝置。編輯/etc/lvm/lvm.conf檔案并完成下面的操作:
在devices 部分,添加一個過濾器,隻接受 /dev/sdb 裝置,拒絕其他所有裝置:
每個過濾器組中的元素都以 a 開頭,即為accept,或以 r 開頭,即為reject,并且包括一個裝置名稱的正規表達式規則。過濾器組必須以 r/.*/ 結束,過濾所有保留裝置。可以使用vgs –vvvv指令來測試過濾器。
如果您的存儲節點在作業系統磁盤上使用了 LVM,您還必需添加相關的裝置到過濾器中。例如,如果 /dev/sda 裝置包含作業系統: <code>filter = [ "a/sda/", "a/sdb/", "r/.*/"]</code> 類似地,如果您的計算節點在作業系統磁盤上使用了 LVM,您也必需修改這些節點上 /etc/lvm/lvm.conf 檔案中的過濾器,将作業系統磁盤包含到過濾器中。例如,如果<code>/dev/sda</code> 裝置包含作業系統: <code>filter = [ "a/sda/", "r/.*/"]</code>
8.4安裝配置元件
在 [DEFAULT] 部分,配置 my_ip 選項:
可用cinder存儲節點的管理網ip位址替換 10.0.0.12。
在 [lvm] 部分,配置LVM後端包括:LVM驅動、cinder-volumes卷組、iSCSI 協定和正确的 iSCSI服務。如果 [lvm] 部分不存在,需要在檔案末尾建立,内容如下:
在 [DEFAULT] 部分,啟用 LVM 後端:
後端名字是任意的。比如,本教程使用驅動的名字作為後端的名字。
在 [DEFAULT] 部分,配置鏡像服務 API:
3.啟動塊存儲卷服務及其依賴的服務,并将其配置為随系統啟動:
8.5驗證操作
在控制節點上執行如下指令,驗證塊存儲服務操作。
列出服務元件以驗證是否每個程序都成功啟動:
9.啟動虛拟機
9.1建立虛拟網絡
由于使用vxlan網絡模式,是以需要建立private私有網絡和provider外網。
9.1.1建立provider公網
1.在控制節點,獲得 admin 憑證來擷取隻有管理者能執行的指令的通路權限:
2.建立provider外網:
--share 項允許所有項目使用provider虛拟網絡
--external 項定義虛拟網絡為外網。如果要建立内部網絡,可以使用 --internal 代替,預設值也是 internal.
--provider-physical-network provider 和 --provider-network-type flat 項将flat虛拟網絡連接配接到使用eth1網卡的flat實體網絡,檢查主機的以下配置資訊:
3.建立provider網絡的子網:
使用provider實體網絡的子網CIDR标記替換 PROVIDER_NETWORK_CIDR。
使用準備配置設定給執行個體的子網網段的起始和結束ip位址替換 START_IP_ADDRESS 和 END_IP_ADDRESS。這個範圍不能包括任何已經使用的ip位址。
用DNS解析服務的ip位址替換 DNS_RESOLVER。一般情況,可從主機檔案/etc/resolv.conf 擷取。
可用provider網關ip位址替換 PROVIDER_NETWORK_GATEWAY,一般的網關IP位址以 ”.1” 結尾。
例如
Provider公網網絡203.0.113.0/24的網關為203.0.113.1。DHCP 服務從203.0.113.101 到 203.0.113.250中為每個執行個體配置設定ip位址。所有執行個體使用 8.8.4.4 配置DNS 解析。
9.1.2建立selfservice私有網絡
5.獲得 demo 憑證來擷取隻有管理者能執行的指令的通路權限:
6.建立selfservice私有網絡:
非特權使用者一般不能在這個指令制定更多參數。服務會自動從下面的檔案中的資訊選擇參數:
7.建立網絡子網:
用selfservice網關ip位址替換 SELFSERVICE_NETWORK_GATEWAY,一般的網關IP位址以 ”.1” 結尾。
用selfservice網絡的子網替換 SELFSERVICE_NETWORK_CIDR。 可以使用任意值。
Selfservice私有網絡172.16.1.0/24的網關為172.16.1.1。DHCP 服務從172.16.1.2 到 172.16.1.254中為每個執行個體配置設定ip位址。所有執行個體使用 8.8.4.4 配置DNS 解析。
9.1.3建立路由
selfservice私有網絡通過虛拟路由連接配接到provider公有網絡,以雙向NAT最為典型。每個路由包含至少一個私有網絡接口和一個連接配接到公有網絡網關的接口
provider公有提供網絡必須包括router:external選項,以便使路由連接配接到外部網絡,如網際網路。admin 或者其他權限使用者在網絡建立時必須包括這個選項,或建立完成後添加。在這個環境裡,建立provider網絡時,router:external項由--external參數設定。
1.獲得 admin 憑證來擷取隻有管理者能執行的指令的通路權限::
獲得 demo 憑證來擷取隻有管理者能執行的指令的通路權限:
3.建立路由:
4.添加selfservice私有網絡子網作為路由接口:
5.在router路由上設定 provider 公網的網關:
9.1.4驗證操作
在繼續操作前檢查是否存在問題,以下步驟将使用網絡和子網建立示例中的IP位址。
1.在控制節點上,獲得 admin 憑證來擷取隻有管理者能執行的指令的通路權限:
2.檢視列出網絡命名空間,正常應該看到一個 qrouter 命名空間和兩個 qdhcp 命名空間。
列出路由器上的端口來确定公網網關的IP 位址:
4.從控制節點或任意公共實體網絡上的節點Ping這個IP位址:
9.2 建立 m1.nano 執行個體類型
預設的最小規格的主機需要512 MB記憶體。對于環境中計算節點記憶體不足4 GB的,建議建立隻需要64 MB的m1.nano規格的主機。如果隻是測試,一般用m1.nano規格的主機來加載CirrOS鏡像
9.3生成鍵值對
大多數雲鏡像支援公共密鑰認證而不是傳統的密碼認證。在啟動執行個體前,需要添加公共密鑰到計算服務。
1.擷取 demo 項目認證:
2.生成并添加密鑰對:
可以跳過執行ssh-keygen 指令直接使用現存的公共密鑰。
3.驗證添加的密鑰對:
9.4增加安全組規則
預設情況下,default安全組适用于所有執行個體并且包括拒絕遠端通路執行個體的防火牆規則。對CirrOS的Linux鏡像,建議至少允許ICMP(ping)和shell(SSH)通路。
• 添加規則至 default 安全組:
o 允許 ICMP (ping):
o 允許 shell (SSH) 通路:
9.5啟動執行個體
網絡配置包括provider公網和selfservice私網兩個網絡,分别介紹在以下兩種網絡模式下啟動執行個體。
9.5.1在provider公網啟動執行個體
9.5.1.1檢查執行個體選項
啟動執行個體前,一定要指定執行個體類型、鏡像名稱、網絡、安全組、鍵值和執行個體名稱。
1.在控制節點,獲得 demo 憑證來擷取隻有管理者能執行的指令的通路權限:
2.執行個體類型包括配置設定虛拟資源政策,比如處理器、記憶體、存儲等。
檢視可使用的執行個體類型:
可以用ID引用執行個體類型
3.檢視可用鏡像:
執行個體使用 cirros 鏡像。
4.檢視可用網絡:
執行個體使用 provider 公網。注意要參考網絡使用的ID而非網絡名稱。
5.列出可用安全組:
9.5.1.2建立執行個體
1.啟動執行個體:
用 provider 網絡ID替換 PROVIDER_NET_ID。
2.檢查執行個體狀态:
建立成功後,執行個體狀态會由 BUILD 變成 ACTIVE。
9.5.1.3使用虛拟控制台通路執行個體
1.擷取VNC會話URL,以便于通過WEB浏覽器通路執行個體:
如果WEB浏覽器所允許的主機不能解析 controller 主機名稱,可以用controller節點管理網的ip位址10.0.0.10替換 controller。即浏覽器輸入:http://10.0.0.10:6080/vnc_auto.html?token=5eeccb47-525c-4918-ac2a-3ad1e9f1f493 CirrOS 鏡像包括傳統的使用者名/密碼認證方式,并需要在登入提示中提供這些認證。登入到CirrOS後,建議用指令 ping 驗證網絡是否互通。
2.檢驗是否可連接配接到provider實體網絡網關:
3.檢查是否可連接配接到網際網路:
9.5.1.4遠端通路執行個體
驗證控制節點或者其他provider公網上的主機能否ping通執行個體:
驗證控制節點或者其他provider公網上的主機能否通過SSH通路執行個體:
9.5.2在selfservice私網啟動執行個體
9.5.2.1檢查執行個體選項
檢視可使用的執行個體類型:
執行個體使用 selfservice 私網。注意要參考網絡使用的ID而非網絡名稱。
5.檢視可用安全組:
執行個體使用 default 預設安全組。
9.5.2.2建立執行個體
1.啟動執行個體
使用selfservice私網ID替換 SELFSERVICE_NET_ID。
2.檢查執行個體狀态:
9.5.2.3使用虛拟控制台通路執行個體
2.檢查是否可連接配接到selfservice私網網關:
3.檢查是否可通路網際網路:
9.5.2.4遠端通路執行個體
1.在provider公網上建立浮動IP位址:
2.給執行個體配置設定浮動IP位址:
3.檢查浮動IP位址狀态:
4.驗證控制節點或者其他provider公網上的主機能否通過浮動IP位址ping通執行個體:
OpenStack官網鏡像指南:https://docs.openstack.org/image-guide/
如有不明之處,歡迎留言提問。
歡迎掃描關注本人公衆号,會定時分享IT技術文章,如有其它技術問題,可随時咨詢。