官术网_书友最值得收藏!

2.1 使用Packstack安裝單節點OpenStack云平臺

RDO 的 Packstack非常適合使用單一的 All-in-One(一體化)節點來驗證OpenStack云部署。

2.1.1 準備安裝環境

通常將運行OpenStack的計算機稱為主機或主機節點。為方便實驗,建議使用虛擬機。本章的實例是在一臺真實的Windows計算機(作為宿主機)中通過VMWare Workstation創建一臺運行CentOS 7操作系統的虛擬機,作為OpenStack主機。

1.創建虛擬機

這里給出虛擬機的基本要求,創建虛擬機的具體過程不再詳述。

建議采用16GB內存,使用8GB也能運行。

CPU雙核且支持虛擬化。

硬盤不低于200GB。

網卡(網絡適配器)以橋接模式接入主機(物理機)網絡。

筆者所舉實例中虛擬機硬件配置如圖2-1所示(僅供參考)。可見,創建一臺這樣的虛擬機對主機(物理機)的硬件配置要求不低。

圖2-1 CentOS 7虛擬機硬件配置

2.在虛擬機中安裝CentOS 7操作系統

在安裝過程中語言選擇默認的英語,如果對Linux命令行操作很熟悉,建議選擇CentOS 7最小化操作系統以降低系統資源消耗,否則選擇安裝帶GUI的服務器(Server with GUI)版本,如圖2-2所示。這將有助于初學者查看和編輯配置文件,運行命令行(可打開多個終端界面)。為簡化操作,可以考慮直接以root身份登錄。如果以普通用戶身份登錄,執行系統配置和管理操作時需要使用sudo命令。例如關閉防火墻:

sudo systemctl stop firewalld

圖2-2 選擇帶GUI的服務器

3.NetworkManager服務

CentOS 7網絡默認由 NetworkManager(網絡管理器)負責管理,但是 NetworkManager 與OpenStack網絡組件Neutron有沖突,應停用它,改用傳統的網絡服務Network來管理網絡。執行以下命令實現這些目的:

systemctl disable NetworkManager

systemctl stop NetworkManager

systemctl enable network

systemctl start network

4.禁用防火墻與SELinux

為方便測試,應關閉防火墻。

systemctl disable firewalld

systemctl stop firewalld

編輯/etc/selinux/config文件,將“SELINUX”的值設置為“disabled”,重啟系統使禁用SELinux生效。

5.設置網絡

虛擬機的IP地址應選擇靜態地址,建議通過橋接模式直接訪問外網,以便于測試內外網之間的雙向通信。此實例中虛擬機的網絡連接如圖2-3所示,采用的是橋接模式。

圖2-3 網絡連接采用橋接模式

例如,虛擬機的主機運行 Windows 操作系統,IP 地址為192.168.199.201,連接的網絡是192.168.199.0,默認網關為192.168.199.1,DNS為114.114.114.114;虛擬機運行CentOS 7,IP地址配置為192.168.199.21,默認網關為192.168.199.1,DNS為114.114.114.114。該虛擬機的網卡配置文件/etc/sysconfig/network-scripts/ifcfg-eno16777736的內容如下:

TYPE=Ethernet

BOOTPROTO=static

DEFROUTE=yes

PEERDNS=yes

PEERROUTES=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_PEERDNS=yes

IPV6_PEERROUTES=yes

IPV6_FAILURE_FATAL=no

NAME=eno16777736

UUID=c84d0100-79f6-427b-8ced-0348b5df4ed7

DEVICE=eno16777736

ONBOOT=yes

IPADDR=192.168.199.21

NETNASK=255.255.255.0

GATEWAY=192.168.199.1

DNS1=114.114.114.114

設置完畢,執行以下命令重啟network服務使網絡接口設置更改生效。

systemctl restart network

提示

CentOS 7的網卡設備命名方式有所變化,它采用一致性網絡設備命名,可以基于固件、拓撲、位置信息來設置固定名稱,由此帶來的好處是命名自動化,名稱完全可預測,硬件因故障更換也不會影響設備的命名,可以讓硬件更換無縫過渡。但不足之處是比傳統的命名格式更難讀。這種命名格式為:網絡類型+設備類型編碼+編號。例如,eno16777736表示一個以太網卡(en),使用的編號是板載設備索引號,類型編碼是o,索引號是16777736。前兩個字符為網絡類型,如en表示以太網(Ethernet),wl表示無線局域網(WLAN),ww表示無線廣域網(WWAN)。第3個字符代表設備類型,如o表示板載設備索引號,s表示熱插拔插槽索引號,x表示MAC地址,p表示PCI地理位置/USB端口號;后面的編號來自設備。如果要恢復使用傳統的網絡接口命令方式,則可以編輯/etc/sysconfig/grub 文件,找到 GRUB_CMDLINE_LINUX,為它增加以下兩個變量:

net.ifnames=0 biosdevname=0

再使用grub2-mkconfig重新生成GRUB配置并更新內核參數。

grub2-mkconfig -o /boot/grub2/grub.cfg

6.設置主機名

安裝好CentOS 7系統后,通常要更改主機名,例如,這里更改為node-a:

hostnamectl set-hostname node-a

一旦更改主機名,就必須將新的主機名追加到/etc/hosts配置文件中:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 node-a

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 node-a

192.168.199.21 node-a node-a.localdomain

否則,在使用RDO安裝OpenStack的過程中啟動rabbitmq-server服務后失敗,從而導致安裝不成功。RabbitMQ是一個在AMQP基礎上完成的,可復用的企業消息系統,為OpenStack的計算組件Nova 各個服務之間提供一個中心的消息機制。rabbitmq-server 服務在啟動前會解析主機名的地址是否可通。

7.更改語言編碼

如果CentOS 7安裝的是非英語版本,那么在/etc/environment文件中添加以下定義:

LANG=en_US.utf-8

LC_ALL=en_US.utf-8

8.設置時間同步

整個OpenStack環境中所有節點的時間必須是同步的。在CentOS 7系統中一般使用時間同步軟件Chrony,如果沒有安裝,執行以下命令進行安裝。

yum install chrony -y

通常選擇一個控制節點作為其他節點的時間同步服務器(簡稱 NTP)。這里使用虛擬機作為OpenStack主機節點,選擇其宿主機(一臺物理機)作為所有節點的時間同步服務器比較好。

Windows系統自帶時間服務器。考慮到本書實驗環境,為便于實驗,這里直接在運行OpenStack的虛擬機的宿主機(物理機)上部署一個NTP服務器,統一所有OpenStack實驗節點的系統時間。該物理機運行Windows 7操作系統,可以利用其內置的W32Time服務架設一臺NTP服務器。默認情況下,Windows計算機作為 NTP客戶端工作,必須通過修改注冊表使其也作為 NTP服務器運行。

(1)打開注冊表編輯器,依次展開HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer節點,將Eabled鍵值由默認的0改為1,表示啟用NTP服務器。

(2)在注冊表編輯器中繼續將HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config節點下的AnnounceFlags鍵值改為5,這樣強制該主機將它自身宣布為可靠的時間源,從而使用內置的CMOS時鐘。默認值a(十六進制)表示采用外面的時間服務器。

(3)以管理員身份打開命令行,執行命令net stop w32time&&net start w32time,先停止再啟動W32Time服務。

(4)在命令行中執行services.msc命令打開服務管理單元(或者從計算機管理控制臺中打開該管理單元),設置W32Time服務啟動模式為自動。

(5)NTP服務的端口是123,使用的是UDP。如果啟用防火墻,則允許UDP 123端口訪問。可以打開“高級安全Windows防火墻”對話框,設置相應的入站規則。也可以通過管理員身份打開命令行,執行以下命令來添加該規則:

netsh advfirewall firewall add rule name= NTPSERVER dir=in action=allow protocol=UDP localport=123

至此,設置的NTP服務器可以提供時間服務。

然后在虛擬機(作為 All-in-One 節點)上配置 Chrony,使其與物理機的時間同步。編輯/etc/chrony.conf,加入以下語句(192.168.199.201為NTP服務器地址)。

server 192.168.199.201 iburst

然后重啟時間同步服務使設置生效:

systemctl restart chronyd.service

2.1.2 準備所需的軟件庫

CentOS Extras軟件庫已連同CentOS 7一并安裝,并默認啟用。該庫能支持OpenStack庫,只需執行以下命令即可設置OpenStack庫:

yum install -y centos-release-openstack-queens

本例使用的OpenStack的版本為Queens,RDO基本與上游的OpenStack版本同步。如果要安裝以前的舊版本,需要更改版本名,例如,Queens的上一版本為Pike,其中的軟件包名改為centos-releaseopenstack-pike。

繼續執行以下命令,以確保其中的openstack-queens軟件庫可用:

yum-config-manager --enable openstack-queens

該命令將解析依賴(Resolving Dependencies)并安裝所需的依賴(Installing for Dependencies)。完成之后,需要執行以下命令更新當前軟件包:

yum update -y

這將升級所有包,改變軟件設置和系統設置,并升級系統版本內核。

不過,從Pike開始,核心組件openstack-nova-compute的安裝所依賴的qemu-kvm版本不能低于2.9.0,CentOS 7現有的軟件庫不能提供qemu-kvm較新版本的安裝。為此,需要相應的軟件庫來提供支持,RDO就提供這樣的庫。具體操作步驟如下。

(1)執行以下命令安裝yum-plugin-priorities插件。

yum -y install yum-plugin-priorities

yum-plugin-priorities插件用來設置yum在調用軟件源時的順序。通常官方提供的軟件源,都是比較穩定和被推薦使用的,所以官方源的順序要高于第三方源的順序。當然這需要在軟件源定義文件(.repo)中使用priority參數設置優先級,其值為整數,默認優先級為99,數值越小優先級越高。

(2)執行以下命令切換到用于存放軟件源定義文件的目錄。

cd /etc/yum.repos.d/

(3)下載RDO官方網站針對CentOS 7提供的軟件源定義文件delorean-deps.repo。

curl -O https://trunk.rdoproject.org/centos7/delorean-deps.repo

(4)下載RDO官方網站針對CentOS 7提供的軟件源定義文件delorean.repo。

curl -O https://trunk.rdoproject.org/centos7/current-passed-ci/delorean.repo

該文件內容如下,priority參數值為1,說明其優先級最高。

[delorean]

name=delorean-puppet-oslo-e996ecf807ebc4bd3c9ef037bd3722b551ade1bd

baseurl=https://trunk.rdoproject.org/centos7/e9/96/e996ecf807ebc4bd3c9ef037bd3722b55 1ade1bd_fb58e76a

enabled=1

gpgcheck=0

priority=1

(5)升級所有包,改變軟件設置和系統設置,并升級系統版本內核。

yum update -y

這樣yum首先會訪問delorean.repo源,然后再訪問其他可用的源。

由于內核更新,需要重啟主機之后再執行后續操作。

2.1.3 安裝Packstack安裝器

執行以下命令安裝openstack-packstack及其依賴包:

yum install -y openstack-packstack

安裝過程中需要安裝許多依賴包,如openstack-packstack-puppet等。

Packstack是RDO的OpenStack安裝工具,用于取代手動設置OpenStack。Packstack基于Puppet工具,通過Puppet部署OpenStack各組件。Puppet是一種Linux、UNIX和Windows平臺的集中配置管理系統,使用自有的Puppet描述語言,可管理配置文件、用戶、任務、軟件包、系統服務等。Puppet將這些系統實體稱之為資源,其設計目標是簡化對這些資源的管理,妥善處理資源間的依賴關系。

2.1.4 運行Packstack安裝OpenStack

1.Packstack工具的基本用法

packstack [選項] [--help]

執行packstack --help命令列出選項清單,這里給出部分選項及其說明。

--gen-answer-file=GEN_ANSWER_FILE:產生應答文件模板。

--answer-file=ANSWER_FILE:依據應答文件的配置信息以非交互模式運行該工具。

--install-hosts=INSTALL_HOSTS:在一組主機上一次性安裝,主機列表間以逗號分隔。第一臺主機作為控制節點,其他主機作為計算節點。如果僅提供一臺主機,將集中在單節點上以“All-in-One”方式安裝。

--allinone:所有功能都集中安裝在單一主機上。

還有許多具體定義安裝內容的全局性選項,例如,--ssh-public-key=SSH_PUBLIC_KEY設置安裝在服務器上的公鑰路徑,--default-password=DEFAULT_PASSWORD設置默認密碼(會被具體服務或用戶的密碼所覆蓋),--mariadb-install=MARIADB_INSTALL設置是否安裝MARIADB數據庫。

2.Packstack的安裝過程

實際應用中多使用應答文件所提供的配置選項進行部署。首次測試,可以考慮直接使用“All-inOne”方式進行單節點部署。“All-in-One”方式是RDO官方網站上提供的向導模式,只需加上--allinone選項。下面記錄了例中的執行過程(#打頭的是筆者增加的注釋)。

[root@node-a ~]# packstack --allinone

Welcome to the Packstack setup utility

# 提示安裝日志文件

The installation log file is available at: /var/tmp/packstack/20180606-112055-8r6isW/openstack-setup.log

Packstack changed given value to required value /root/.ssh/id_rsa.pub

Installing:

Clean Up [ DONE ]

Discovering ip protocol version [ DONE ]

# 設置SSH密鑰

Setting up ssh keys [ DONE ]

# 準備服務器

Preparing servers [ DONE ]

# 安裝Puppet和探測主機詳情之前

Pre installing Puppet and discovering hosts' details [ DONE ]

# 準備預裝的項目

Preparing pre-install entries [ DONE ]

# 設置證書

Setting up CACERT [ DONE ]

# 準備AMQP(高級消息隊列)項目

Preparing AMQP entries [ DONE ]

# 準備MariaDB(現已代替MySQL)數據庫項目

Preparing MariaDB entries [ DONE ]

# 修正Keystone LDAP參數

Fixing Keystone LDAP config parameters to be undef if empty[ DONE ]

# 準備Keystone(認證服務)項目

Preparing Keystone entries [ DONE ]

# 準備Glance(鏡像服務)項目

Preparing Glance entries [ DONE ]

# 檢查Cinder(卷存儲服務)是否有卷

Checking if the Cinder server has a cinder-volumes vg[ DONE ]

# 準備Cinder(卷存儲服務)項目

Preparing Cinder entries [ DONE ]

# 準備Nova API(Nova對外接口)項目

Preparing Nova API entries [ DONE ]

# 為Nova遷移創建SSH密鑰

Creating ssh keys for Nova migration [ DONE ]

Gathering ssh host keys for Nova migration [ DONE ]

# 準備Nova Compute(計算服務)項目

Preparing Nova Compute entries [ DONE ]

# 準備Nova Scheduler(調度服務)項目

Preparing Nova Scheduler entries [ DONE ]

# 準備Nova VNC(虛擬網絡控制臺)代理項目

Preparing Nova VNC Proxy entries [ DONE ]

# 準備OpenStack與網絡相關的Nova項目

Preparing OpenStack Network-related Nova entries [ DONE ]

# 準備Nova通用項目

Preparing Nova Common entries [ DONE ]

# 以下準備Neutron(網絡組件)項目

Preparing Neutron LBaaS Agent entries [ DONE ]

Preparing Neutron API entries [ DONE ]

Preparing Neutron L3 entries [ DONE ]

Preparing Neutron L2 Agent entries [ DONE ]

Preparing Neutron DHCP Agent entries [ DONE ]

Preparing Neutron Metering Agent entries [ DONE ]

Checking if NetworkManager is enabled and running [ DONE ]

# 準備OpenStack客戶端項目

Preparing OpenStack Client entries [ DONE ]

# 準備Horizon儀表板項目

Preparing Horizon entries [ DONE ]

# 以下準備Swift(對象存儲)項目

Preparing Swift builder entries [ DONE ]

Preparing Swift proxy entries [ DONE ]

Preparing Swift storage entries [ DONE ]

# 準備Gnocchi(用于計費的時間序列數據庫作為服務)項目

Preparing Gnocchi entries [ DONE ]

# 準備Redis(用于計費的數據結構服務器)項目

Preparing Redis entries [ DONE ]

# 準備Ceilometer(計費服務)項目

Preparing Ceilometer entries [ DONE ]

# 準備Aodh(警告)項目

Preparing Aodh entries [ DONE ]

# 準備Puppet模塊和配置清單

Preparing Puppet manifests [ DONE ]

Copying Puppet modules and manifests [ DONE ]

# 應用控制節點(測試時可能需要較長時間)

Applying 192.168.199.21_controller.pp

192.168.199.21_controller.pp: [ DONE ]

# 應用網絡節點(測試時可能需要較長時間)

Applying 192.168.199.21_network.pp

192.168.199.21_network.pp: [ DONE ]

# 應用計算節點(測試時可能需要較長時間)

Applying 192.168.199.21_compute.pp

192.168.199.21_compute.pp: [ DONE ]

# 應用Puppet配置清單

Applying Puppet manifests [ DONE ]

Finalizing [ DONE ]

# 安裝成功完成應用并給出其他提示信息

**** Installation completed successfully ******

Additional information:

# 執行命令產生的應答文件

 * A new answerfile was created in: /root/packstack-answers-20180606-112056.txt

# 未安裝時間同步。需要確認CentOS 7當前的系統時間正確,如果不正確,則需要修改

 * Time synchronization installation was skipped.Please note that unsynchronized time on server instances might be problem for some OpenStack components.

# 在用戶主目錄下產生keystonerc_admin文件,使用命令行工具需要用它作為授權憑據

 * File /root/keystonerc_admin has been created on OpenStack client host 192.168.199.21.To use the command line tools you need to source the file.

# 訪問OpenStack Dashboard(Web訪問接口),請使用keystonerc_admin中的登錄憑據

 * To access the OpenStack Dashboard browse to http://192.168.199.21/dashboard .

Please, find your login credentials stored in the keystonerc_admin in your home directory.

# 安裝日志文件名及其路徑

* The installation log file is available at: /var/tmp/packstack/20180606-112055-8r6isW/openstack-setup.log

# Puppet配置清單路徑

 * The generated manifests are available at: /var/tmp/packstack/20180606-112055-8r6isW/manifests

3.Packstack安裝典型問題

安裝過程中應用控制節點、網絡節點和計算節點時都會測試Puppet應用是否完成,如例中3個節點測試的提示依次為:

Testing if puppet apply is finished: 192.168.199.21_controller.pp

Testing if puppet apply is finished: 192.168.199.21_network.pp

Testing if puppet apply is finished: 192.168.199.21_compute.pp

測試過程可能會花費較長時間。安裝過程中出現的問題一般也集中在這個階段。筆者遇到的典型問題有以下兩個。

(1)應用控制節點失敗。這個問題可以到Puppet配置清單路徑中相應日志文件中查找原因,例中為/var/tmp/packstack/20180606-112055-8r6isW/manifests/192.168.199.21_controller.pp.log。最常見的原因是rabbitmq-server服務在啟動前要解析主機名的地址,解決方案參見2.1.1節第6點的有關說明。

(2)應用計算節點失敗。這個問題可以到Puppet配置清單路徑中相應日志文件中查找原因,例中為/var/tmp/packstack/20180606-112055-8r6isW/manifests/192.168.199.21_compute.pp.log。最常見的原因是openstack-nova-compute的安裝所依賴的qemu-kvm版本不能低于2.9.0,openstack-queens軟件庫現不能提供 qemu-kvm 較新版本的安裝,其解決方案參見2.1.2節。當然也可以從其他渠道安裝qemu-kvm 2.9.0以上版本,需要的軟件包括 qemu-img-ev.x86_64、qemu-kvm-common-ev.x86_64和qemu-kvm-ev.x86_64,版本不能低于2.9.0。

主站蜘蛛池模板: 长兴县| 大港区| 紫阳县| 夹江县| 萍乡市| 邢台市| 蒲江县| 乐清市| 盐亭县| 乌兰浩特市| 温州市| 榆林市| 龙南县| 遵义县| 乐清市| 清镇市| 苗栗市| 鹿邑县| 潞西市| 金秀| 鹤壁市| 定结县| 苗栗县| 时尚| 高尔夫| 台东县| 金塔县| 石景山区| 宿迁市| 安义县| 海伦市| 吐鲁番市| 历史| 徐水县| 顺义区| 阆中市| 长汀县| 湖北省| 东至县| 芷江| 綦江县|