雲端計算實驗之節點建立與配置
環境
這個部分解釋如何按示例架構配置控制節點和一個計算節點
儘管大多數環境中包含認證,映象,計算,至少一個網路服務,還有儀表盤,但是物件儲存服務也可以單獨操作。儀表盤要求至少要有映象服務,計算服務和網路服務。
你必須用有管理員許可權的帳號來配置每個節點。可以用 root 使用者或 sudo 工具來執行這些命令。
為獲得最好的效能,我們推薦在你的環境中符合或超過在 :ref:`figure-hwreqs`中的硬體要求。
以下最小需求支援概念驗證環境,使用核心服務和幾個:term:`CirrOS`例項:
- 控制節點: 1 處理器, 4 GB 記憶體, 及5 GB 儲存
- 計算節點: 1 處理器, 2 GB 記憶體, 及10 GB 儲存
由於Openstack服務數量以及虛擬機器數量的正常,為了獲得最好的效能,我們推薦你的環境滿足或者超過基本的硬體需求。如果在增加了更多的服務或者虛擬機器後效能下降,請考慮為你的環境增加硬體資源。
為了避免混亂和為OpenStack提供更多資源,我們推薦你最小化安裝你的Linux發行版。同時,你必須在每個節點安裝你的發行版的64位版本。
每個節點配置一個磁碟分割槽滿足大多數的基本安裝。但是,對於有額外服務如塊儲存服務的,你應該考慮採用 :term:`Logical Volume Manager (LVM)`進行安裝。
對於第一次安裝和測試目的,很多使用者選擇使用 :term:`virtual machine (VM)`作為主機。使用虛擬機器的主要好處有一下幾點:
- 一臺物理伺服器可以支援多個節點,每個節點幾乎可以使用任意數目的網路介面。
- 在安裝過程中定期進行“快照”並且在遇到問題時可以“回滾”到上一個可工作配置的能力。
但是,虛擬機器會降低您例項的效能,特別是如果您的 hypervisor 和/或 程序缺少硬體加速的巢狀虛擬機器支援時。
安全
OpenStack 服務支援各種各樣的安全方式,包括密碼 password、policy 和 encryption,支援的服務包括資料庫伺服器,且訊息 broker 至少支援 password 的安全方式。
為了簡化安裝過程,本指南只包含了可適用的密碼安全。你可以手動建立安全密碼,使用`pwgen <
$ openssl rand -hex 10
對 OpenStack 服務而言,本指南使用``SERVICE_PASS`` 表示服務帳號密碼,使用``SERVICE_DBPASS`` 表示資料庫密碼。
下面的表格給出了需要密碼的服務列表以及它們在指南中關聯關係:
密碼 |
|
密碼名稱 |
描述 |
資料庫密碼(不能使用變數) |
資料庫的root密碼 |
ADMIN_PASS |
admin 使用者密碼 |
CEILOMETER_DBPASS |
Telemetry 服務的資料庫密碼 |
CEILOMETER_PASS |
Telemetry 服務的 ceilometer 使用者密碼 |
CINDER_DBPASS |
塊裝置儲存服務的資料庫密碼 |
CINDER_PASS |
塊裝置儲存服務的 cinder 密碼 |
DASH_DBPASS |
Database password for the dashboard |
DEMO_PASS |
demo 使用者的密碼 |
GLANCE_DBPASS |
映象服務的資料庫密碼 |
GLANCE_PASS |
映象服務的 glance 使用者密碼 |
HEAT_DBPASS |
Orchestration服務的資料庫密碼 |
HEAT_DOMAIN_PASS |
Orchestration 域的密碼 |
HEAT_PASS |
Orchestration 服務中``heat``使用者的密碼 |
KEYSTONE_DBPASS |
認證服務的資料庫密碼 |
NEUTRON_DBPASS |
網路服務的資料庫密碼 |
NEUTRON_PASS |
網路服務的 neutron 使用者密碼 |
NOVA_DBPASS |
計算服務的資料庫密碼 |
NOVA_PASS |
計算服務中``nova``使用者的密碼 |
RABBIT_PASS |
RabbitMQ的guest使用者密碼 |
SWIFT_PASS |
物件儲存服務使用者``swift``的密碼 |
OpenStack和配套服務在安裝和操作過程中需要管理員許可權。在很多情況下,服務可以與自動化部署工具如 Ansible, Chef,和 Puppet進行互動,對主機進行修改。例如,一些OpenStack服務新增root許可權 sudo 可以與安全策略進行互動。更多資訊,可以參考 `管理員參考<http://docs.openstack.org/ admin-guide/compute-root-wrap-reference.html>`__ 。
另外,網路服務設定核心網路引數的預設值並且修改防火牆規則。為了避免你初始化安裝的很多問題,我們推薦在你的主機上使用支援的發行版本。不管怎樣,如果你選擇自動化部署你的主機,在進一步操作前檢查它們的配置和策略。
主機網路
在你按照你選擇的架構,完成各個節點作業系統安裝以後,你必須配置網路介面。我們推薦你禁用自動網路管理工具並手動編輯你相應版本的配置檔案。更多關於如何配置你版本網路資訊內容,參考 documentation 。
出於管理目的,例如:安裝包,安全更新, DNS`和 :term:`NTP,所有的節點都需要可以訪問網際網路。在大部分情況下,節點應該通過管理網路介面訪問網際網路。為了更好的突出網路隔離的重要性,示例架構中為管理網路使用`private address space <https://tools.ietf.org/html/rfc1918>`__ 並假定物理網路裝置通過 :term:`NAT`或者其他方式提供網際網路訪問。示例架構使用可路由的IP地址隔離服務商(外部)網路並且假定物理網路裝置直接提供網際網路訪問。
在提供者網路架構中,所有例項直接連線到提供者網路。在自服務(私有)網路架構,例項可以連線到自服務或提供者網路。自服務網路可以完全在openstack環境中或者通過外部網路使用:term:NAT 提供某種級別的外部網路訪問。
示例架構假設使用如下網路:
- 管理使用 10.0.0.0/24 帶有閘道器 10.0.0.254
這個網路需要一個閘道器以為所有節點提供內部的管理目的的訪問,例如包的安裝、安全更新、 DNS,和 NTP。
- 提供者網段 先不用設定。
這個網路需要一個閘道器來提供在環境中內部例項的訪問。
您可以修改這些範圍和閘道器來以您的特定網路設施進行工作。
網路介面由發行版的不同而有各種名稱。傳統上,介面使用 “eth” 加上一個數字序列命名。為了覆蓋到所有不同的名稱,本指南簡單地將數字最小的介面引用為第一個介面,第二個介面則為更大數字的介面。
除非您打算使用該架構樣例中提供的準確配置,否則您必須在本過程中修改網路以匹配您的環境。並且,每個節點除了 IP 地址之外,還必須能夠解析其他節點的名稱。例如,controller這個名稱必須解析為 10.0.0.11,即控制節點上的管理網路介面的 IP 地址。
警告
重新配置網路介面會中斷網路連線。我們建議使用本地終端會話來進行這個過程。
註解
你的發行版本預設啟用了限制 firewall 。在安裝過程中,有些步驟可能會失敗,除非你允許或者禁用了防火牆。更多關於安全的資料,參考 OpenStack Security Guide。(文件0已關閉防火牆和selinux)
一、模板伺服器安裝與配置
1.網路設定
配置網路介面¶
將第一個介面配置為管理網路介面:
IP 地址: 10.0.0.11
子網掩碼: 255.255.255.0 (or /24)
預設閘道器: 10.0.0.254
提供者網路介面使用一個特殊的配置,不分配給它IP地址。配置第二塊網絡卡作為提供者網路:
將其中的 INTERFACE_NAME替換為實際的介面名稱。例如,eth1 或者*ens224*。
-
- 編輯``/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME``檔案包含以下內容:
DEVICE=INTERFACE_NAME
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
重啟系統以啟用修改。
配置域名解析¶
設定節點主機名為 base。
#hostnamectl set-hostname base
編輯 /etc/hosts 檔案包含以下內容:
# controller
10.0.0.11 controller
# compute1
10.0.0.31 compute1
# block1
10.0.0.41 block1
# object1
10.0.0.51 object1
# object2
10.0.0.52 object2
警告
一些發行版本在``/etc/hosts``檔案中添加了附加條目解析實際主機名到另一個IP地址如 127.0.1.1。為了防止域名解析問題,你必須註釋或者刪除這些條目。不要刪除127.0.0.1條目。
2.網路時間協議(NTP)
安裝軟體包:
# yum install chrony
啟動 NTP 服務並將其配置為隨系統啟動:
# systemctl enable chronyd.service
# systemctl start chronyd.service
3.OpenStack包
啟用OpenStack庫¶
- 在CentOS中, ``extras``倉庫提供用於啟用 OpenStack 倉庫的RPM包。 CentOS 預設啟用``extras``倉庫,因此你可以直接安裝用於啟用OpenStack倉庫的包。(現有pike,queens和rockey三個版本,選擇其中一個進行安裝)
#yum install centos-release-openstack-pike|queens|rocky
修改yum源
#cd /etc/yum.repos.d
#vi CentOS-OpenStack-XXX.repo(XXX替換為相應版本: pike|queens|rocky,下面以pike版為例進行修改或新增)
[centos-openstack-pike]
name=CentOS-7 - OpenStack pike ftpserver
#baseurl=http://mirror.centos.org/centos/7/cloud/$basearch/openstack-ocata/
baseurl=http://10.10.45.193/ centos/7/cloud/$basearch/openstack-pike/
…
#vi CentOS-Ceph-Jewel|hammer|luminous.repo(對應修改)
[centos-ceph-jewel]
name=CentOS-$releasever - Ceph Jewel ftpserver
#baseurl=http://mirror.centos.org/centos/$releasever/storage/$basearch/ceph-jewel/
baseurl=http://10.10.45.193/ centos/$releasever/storage/$basearch/ceph-jewel/
…
#vi CentOS-QEMU-EV.repo
…[centos-qemu-ev]
name=CentOS-$releasever - QEMU EV ftpserver
#baseurl=http://mirror.centos.org/centos/$releasever/virt/$basearch/kvm-common/
baseurl=http://10.10.45.193/ centos/$releasever /virt/$basearch/kvm-common/
…
#yum clean all
驗證:
#yum repolist
Determining fastest mirrors
repo id repo name status
base/x86_64 CentOS-7 - Base -ftpserver 9,591
centos-ceph-jewel/x86_64 CentOS-7 - Ceph Jewel ftpserver 53
centos-openstack-ocata/x86_64 CentOS-7 - OpenStack ocata ftpserver 1,559+2
centos-qemu-ev/x86_64 CentOS-7 - QEMU EV ftpserver 35
extras/x86_64 CentOS-7 - Extras - ftpserver 278
updates/x86_64 CentOS-7 - Updates -ftpserver 1,041
repolist: 12,557
完成安裝¶
- 在主機上升級包:
# yum upgrade
註解
如果更新了一個新核心,重啟主機來使用新核心。
- 安裝 OpenStack 客戶端:
# yum install python-openstackclient
- 安裝 openstack-selinux 軟體包以便自動管理 OpenStack 服務的安全策略:
# yum install openstack-selinux
二、製作各節點伺服器
克隆模板伺服器,分別命名為controller,compute1,block1,object1,object2。
然後完成以下操作。
1.控制節點
配置網路介面¶
修改網路配置:將第一個介面配置為管理網路介面:
IP 地址: 10.0.0.11
子網掩碼: 255.255.255.0 (or /24)
預設閘道器: 10.0.0.254
-
- 編輯``/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME``檔案包含以下內容:
- IPADDR=10.0.0.11
配置主機名:¶
設定節點主機名為 controller。
#hostnamectl set-hostname controller
修改NTP伺服器配置
編輯 /etc/chrony.conf 檔案,按照你環境的要求,對下面的鍵進行修改:
server 10.10.45.193 iburst
為了允許其他節點可以連線到控制節點的 chrony 後臺程序,在``/etc/chrony.conf`` 檔案新增下面的鍵:
allow 10.0.0.0/24
重啟系統以啟用修改。
計算節點
配置網路介面¶
修改網路配置:將第一個介面配置為管理網路介面:
IP 地址: 10.0.0.31
子網掩碼: 255.255.255.0 (or /24)
預設閘道器: 10.0.0.254
-
- 編輯``/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME``檔案包含以下內容:
- IPADDR=10.0.0.31
配置主機名:¶
設定節點主機名為 compute1。
#hostnamectl set-hostname compute1
修改NTP服務配置:
編輯``/etc/chrony.conf`` 檔案並註釋除``server`` 值外的所有內容。修改它引用控制節點:
server controller iburst
重啟系統以啟用修改。
塊儲存節點(可選)
配置網路介面¶
修改網路配置:將第一個介面配置為管理網路介面:
IP 地址: 10.0.0.41
子網掩碼: 255.255.255.0 (or /24)
預設閘道器: 10.0.0.254
-
- 編輯``/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME``檔案包含以下內容:
- IPADDR=10.0.0.41
配置主機名:¶
設定節點主機名為 block1。
#hostnamectl set-hostname block1
修改NTP服務配置:
編輯``/etc/chrony.conf`` 檔案並註釋除``server`` 值外的所有內容。修改它引用控制節點:
server controller iburst
重啟系統以啟用修改。
物件儲存節點(可選)
配置網路介面¶
修改網路配置:將第一個介面配置為管理網路介面:
IP 地址: 10.0.0.51
子網掩碼: 255.255.255.0 (or /24)
預設閘道器: 10.0.0.254
-
- 編輯``/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME``檔案包含以下內容:
- IPADDR=10.0.0.51
配置主機名:¶
設定節點主機名為 object1。
#hostnamectl set-hostname object1
修改NTP服務配置:
編輯``/etc/chrony.conf`` 檔案並註釋除``server`` 值外的所有內容。修改它引用控制節點:
server controller iburst
重啟系統以啟用修改。
第二個節點¶
配置網路介面¶
修改網路配置:將第一個介面配置為管理網路介面:
IP 地址: 10.0.0.52
子網掩碼: 255.255.255.0 (or /24)
預設閘道器: 10.0.0.254
-
- 編輯``/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME``檔案包含以下內容:
- IPADDR=10.0.0.52
配置主機名:¶
設定節點主機名為 object2。
#hostnamectl set-hostname object2
修改NTP服務配置:
編輯``/etc/chrony.conf`` 檔案並註釋除``server`` 值外的所有內容。修改它引用控制節點:
server controller iburst
重啟系統以啟用修改。
驗證連通性
- 從*controller*節點,測試能否連線到 Internet:ping 10.10.45.193
- 從 controller 節點,測試到*compute* 節點管理網路是否連通:ping compute1
# ping -c 4 compute1
PING compute1 (10.0.0.31) 56(84) bytes of data.
64 bytes from compute1 (10.0.0.31): icmp_seq=3 ttl=64 time=0.203 ms
64 bytes from compute1 (10.0.0.31): icmp_seq=4 ttl=64 time=0.202 ms
--- compute1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.202/0.217/0.263/0.030 ms
3.從 compute 節點,測試能否連線到 Internet:ping 10.10.45.193
4.從 compute 節點,測試到*controller* 節點管理網路是否連通:
# ping -c 4 controller
PING controller (10.0.0.11) 56(84) bytes of data.
64 bytes from controller (10.0.0.11): icmp_seq=1 ttl=64 time=0.263 ms
64 bytes from controller (10.0.0.11): icmp_seq=2 ttl=64 time=0.202 ms
64 bytes from controller (10.0.0.11): icmp_seq=3 ttl=64 time=0.203 ms
64 bytes from controller (10.0.0.11): icmp_seq=4 ttl=64 time=0.202 ms
--- controller ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.202/0.217/0.263/0.030 ms
驗證NTP伺服器
- 在控制節點上執行這個命令:
# chronyc sources
210 Number of sources = 2
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 10.10.45.193 2 6 177 46 +17us[ -23us] +/- 68ms
在 Name/IP address 列的內容應顯示NTP伺服器的主機名或者IP地址。在 S 列的內容應該在NTP服務目前同步的上游伺服器前顯示 *。
- 在所有其他節點執行相同命令:
# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* controller 3 9 377 421 +15us[ -87us] +/- 15ms
在 Name/IP address 列的內容應顯示控制節點的主機名。
三、在controller節點完成以下操作
SQL資料庫
安全並配置元件¶
- 安裝軟體包:
# yum install mariadb mariadb-server python2-PyMySQL
- 建立並編輯 /etc/my.cnf.d/openstack.cnf,然後完成如下動作:
- 在 [mysqld] 部分,設定 ``bind-address``值為控制節點的管理網路IP地址以使得其它節點可以通過管理網路訪問資料庫:
[mysqld]
...
bind-address = 10.0.0.11
default-storage-engine = innodb
innodb_file_per_table=on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
完成安裝¶
- 啟動資料庫服務,並將其配置為開機自啟:
# systemctl enable mariadb.service
# systemctl start mariadb.service
- 為了保證資料庫服務的安全性,執行``mysql_secure_installation``指令碼。特別需要說明的是,為資料庫的root使用者設定一個適當的密碼。
# mysql_secure_installation
建議密碼設定的易記
訊息佇列
安全並配置元件¶
- 安裝包:
# yum install rabbitmq-server
- 啟動訊息佇列服務並將其配置為隨系統啟動:
# systemctl enable rabbitmq-server.service
# systemctl start rabbitmq-server.service
- 新增 openstack 使用者:
# rabbitmqctl add_user openstack RABBIT_PASS
Creating user "openstack" ...
...done.
用合適的密碼替換RABBIT_DBPASS。
- 給``openstack``使用者配置寫和讀許可權:
# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/" ...
...done.
Memcached
安裝並配置元件¶
安裝軟體包:
# yum install memcached python-memcached
編輯/etc/sysconfig/memcached 檔案,完成如下操作:
OPTIONS=”-l 127.0.0.0,::1,controller”
注:修改當前存在的這一行:
OPTIONS=”-l 127.0.0.0,::1”
完成安裝¶
- 啟動Memcached服務,並且配置它隨機啟動。
- # systemctl enable memcached.service
# systemctl start memcached.service
安裝Etcd
安裝並配置元件¶
安裝軟體包:
# yum install etcd
編輯 /etc/etcd/etcd.conf檔案並設定 ETCD_INITIAL_CLUSTER, ETCD_INITIAL_ADVERTISE_PEER_URLS,ETCD_ADVERTISE_CLIENT_URLS, ETCD_LISTEN_CLIENT_URLS 指向控制節點的管理ip地址,使得其他節點可以通過管理網路訪問:
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://10.0.0.11:2380"
ETCD_LISTEN_CLIENT_URLS="http://10.0.0.11:2379"
ETCD_NAME="controller"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.0.0.11:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379"
ETCD_INITIAL_CLUSTER="controller=http://10.0.0.11:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"
完成安裝
啟動服務:
# systemctl enable etcd
# systemctl start etcd