标簽(空測試用例格分隔):OpenStack Train 系列
一:系統安裝環境說明
1.1 安裝說明與介紹:
1.1.1 Openstack 介紹
Openstack是一個雲平台管理的項目,它不是一個軟體。這個項目由幾個主要的元件組合起來完成一些具體的工作。
Openstack是一個旨在為公共及私有雲的建設與管理提供軟體的開源項目。它的社群擁有超過130家企業及1350位開發者,
這些機構與個人将 Openstack作為基礎設施即服務資源的通用前端。Openstack項目的首要任務是簡化雲的部署過程并為其帶來良好的可擴充性。本文希望通過提供必要的指導資訊,
幫助大家利用 Openstack前端來設定及管理自己的公共雲或私有雲。
OpenStack 是一系列開源工具(或開源項目)的組合,主要使用池化虛拟資源來建構和管理私有雲及公共雲。其中的六個項目主要負責處理核心雲計算服務,包括計算、網絡、存儲、身份和鏡像服務。
還有另外十多個可選項目,使用者可把它們捆綁打包,用來建立獨特、可部署的雲架構。
openstack 官網:
https://docs.openstack.org/
1.1.2 OpenStack 的常用包含元件
OpenStack 架構由大量開源項目組成。其中包含 6 個穩定可靠的核心服務,用于處理計算、網絡、存儲、身份和鏡像; 同時,還為使用者提供了十多種開發成熟度各異的可選服務。OpenStack 的 6 個核心服務主要擔綱系統的基礎架構,其餘項目則負責管理控制台、編排、裸機部署、資訊傳遞、容器及統籌管理等操作。
keystone:Keystone 認證所有 OpenStack 服務并對其進行授權。同時,它也是所有服務的端點目錄。
glance:Glance 可存儲和檢索多個位置的虛拟機磁盤鏡像。
nova:是一個完整的 OpenStack 計算資源管理和通路工具,負責處理規劃、建立和删除操作。
neutron:Neutron 能夠連接配接其他 OpenStack 服務并連接配接網絡。
dashboard:web管理界面
Swift: 是一種高度容錯的對象存儲服務,使用 RESTful API 來存儲和檢索非結構資料對象。
Cinder 通過自助服務 API 通路持久塊存儲。
Ceilometer:計費
Heat:編排
1.1.3 OpenStack 體系涉及架構

1.1.4 openstack 元件互動架構
1.2 Openstack Train 實驗部署說明
1.2.1 實驗環境
因為沒有實體的伺服器是以環境以虛拟機的形式展現
1. 主控端配置系統
windows11x64 / 16core / 128G / 6TB SSD
2. 虛拟軟體: vmware workstation 16 pro
3. 虛機作業系統: CentOS 7.9x64
4. OpenStack 版本:Train
5. ceph 存儲版本: 14.2.22(Nautilus)
1.2.2 環境 虛機配置如下
安裝方式可以采用虛機方式先一台虛機模闆然後克隆,
産線機房可以采用PXE,kickstart,cobbler 批量安裝系統,系統安裝在此不做示範。
1.2.3 系統初始化
1.2.3.1 系統主機名配置
系統主機名:
# hostnamectl set-hostname xxxxx
所有主機配置:
# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
# openstack
172.16.10.11 controller
172.16.10.12 compute01
172.16.10.13 compute02
# cpeh-public
172.16.10.14 ceph01
172.16.10.15 ceph02
172.16.10.16 ceph03
# ceph-cluster
20.16.10.14 ceph01-cluster
20.16.10.15 ceph02-cluster
20.16.10.16 ceph03-cluster
# yum
172.16.10.17 yum.ops
1.2.3.2 系統初始化
所有機器配置:
# 關閉 NetworkManager
systemctl stop NetworkManager && systemctl disable NetworkManager
# 關閉firewalld 與 selinux
systemctl stop firewalld && systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 設定核心參數及檔案句柄等資源限制參數
# cat <<EOF >> /etc/sysctl.conf
## default 1
net.ipv4.tcp_syncookies = 1
## default 0
net.ipv4.tcp_tw_reuse = 1
## default 0
net.ipv4.tcp_tw_recycle = 1
## default 60
net.ipv4.tcp_fin_timeout = 30
## default 256
net.ipv4.tcp_max_syn_backlog = 4096
## default 32768 60999
net.ipv4.ip_local_port_range = 1024 65535
## default 129=8
net.core.somaxconn = 32768
EOF
# cat <<EOF >> /etc/security/limits.conf
* hard nofile 655360
* soft nofile 655360
* hard nproc 655360
* soft nproc 655360
* soft core 655360
* hard core 655360
EOF
# sed -i 's/4096/unlimited/g' /etc/security/limits.d/20-nproc.conf
# cat /etc/security/limits.d/20-nproc.conf
* soft nproc unlimited
root soft nproc unlimited
tail -f /etc/security/limits.conf
cat /etc/security/limits.d/20-nproc.conf
設定 CPU 嵌套虛拟化,讓虛拟機中再支援虛拟化
cat /sys/module/kvm_intel/parameters/nested
/*
說明:如果是 N,表示未開啟。如果連/sys/module 目錄都沒有,說明主機沒有開啟虛拟化(vmware workstation 是主機建立時沒有勾選 intel VT-x/EPT
或 AMD-V/RVI)
*/
# cat <<EOF > /etc/modprobe.d/kvm-nested.conf
options kvm_intel nested=1 ept=0 unrestricted_guest=0
EOF
即時生效
# rmmod kvm_intel // 需要所有虛拟機是停止狀态才能執行解除安裝
# modprobe kvm-intel ept=0 unrestricted_guest=0
# cat /sys/module/kvm_intel/parameters/nested //開啟後狀态為 Y。 /*
說明:ept=0 用于關閉 Intel EPT 硬體輔助虛拟化,可有效解決 CPU 型号過舊,導緻建立雲主機故障的問題
*/
所有機器設定這些完成之後重新開機系統
reboot
1.2.4 制作 本地yum 伺服器 機器
1.2.4.1 修改本地yum 源
上述機器使用yum.ops(172.16.10.17) 機器
Login:
172.16.10.17
使用阿裡雲的配置源
# cd /etc/yum.repos.d && mkdir backup && mv *.repo backup/
# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
# yum -y install centos-release-openstack-train
添加 ceph-nautilus 源
vim /etc/yum.repos.d/ceph.repo
[ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64
enabled=1
gpgcheck=0
[ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch
enabled=1
gpgcheck=0
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMS
enabled=1
gpgcheck=0
1.2.4.2 安裝同步源的需要的依賴包
# yum -y install createrepo yum-utils httpd reposync
# systemctl enable httpd && systemctl start httpd
1.2.4.3 制作鏡像源
mkdir -p /var/www/html/yumrepos
同步CentOS-Base.repo 阿裡雲軟體包到本地
如果隻想同步 CentOS-Base.repo 中指定塊[section]中的 rpm 包,可以指定名稱同步
# reposync -n --repoid=base --repoid=updates -p /var/www/html/yumrepos/
# reposync -n --repoid=ceph --repoid=ceph-noarch -p /var/www/html/yumrepos/
# reposync -n --repoid=centos-openstack-train -p /var/www/html/yumrepos/
# reposync -n --repoid=centos-qemu-ev -p /var/www/html/yumrepos/
# reposync -n --repoid=epel -p /var/www/html/yumrepos/
# reposync -n --repoid=centos-ceph-nautilus -p /var/www/html/yumrepos/
# reposync -n --repoid=extras -p /var/www/html/yumrepos/
将上面的源同步到本地:
制作本地源時間比較長,建議晚上同步
說明:以上倉庫必須同步到本地
此處再以 zabbix 離線源為例
安裝 zabbix-4.0 的 yum 源配置檔案
# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
安裝好 zabbix-release-4.0-2.el7.noarch.rpm 會在/etc/yum.repos.d/ 下生成 zabbix.repo 檔案
# cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/4.0/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-debuginfo]
name=Zabbix Official Repository debuginfo - $basearch
baseurl=http://repo.zabbix.com/zabbix/4.0/rhel/7/$basearch/debuginfo/
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
gpgcheck=1
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
隻同步[zabbix]塊中的 rpm 包到本地
# reposync -n --repoid=zabbix -p /var/www/html/yumrepos/
1.2.4.4 制作yum 源
使用 createrepo 指令建立本地 yum 源,即為存放于本地特定位置的衆多 rpm 包建立索引,描述各包所需依賴資訊,并形成中繼資料
進到 /var/www/html/yumrepos/ 目錄下的每一個目錄執行 createrepo . 指令
# cd /var/www/html/yumrepos/base
# createrepo .
定期更新:
# reposync -n --repoid=base -p /var/www/html/yumrepos/
# cd /var/www/html/yumrepos/base
# createrepo --update . // 或者使用指令 createrepo --update /var/www/html/yumrepos/base
按上述方法,将 openstack 所依賴的 rpm 包全部下載下傳到本地
私有yum 檔案
cd /etc/yum.repos.d/
vim openstack-public.repo
----
[base]
name=CentOS-$releasever - Base
baseurl=http://172.16.10.17/yumrepos/base/
gpgcheck=0
enabled=1
[epel]
name=CentOS-$releasever - Base
baseurl=http://172.16.10.17/yumrepos/base/
gpgcheck=0
enabled=1
[updates]
name=CentOS-$releasever - Updates
baseurl=http://172.16.10.17/yumrepos/updates/
gpgcheck=0
enabled=1
[extras]
name=CentOS-$releasever - Extras
baseurl=http://172.16.10.17/yumrepos/extras/
gpgcheck=0
enabled=1
[centos-openstack-train]
name=CentOS-7 - OpenStack train
baseurl=http://172.16.10.17/yumrepos/centos-openstack-train/
gpgcheck=0
enabled=1
[centos-qemu-ev]
name=CentOS-$releasever - QEMU EV
baseurl=http://172.16.10.17/yumrepos/centos-qemu-ev/
gpgcheck=0
enabled=1
[centos-ceph-nautilus]
name=CentOS-7 - Ceph Nautilus
baseurl=http://172.16.10.17/yumrepos/centos-ceph-nautilus/
gpgcheck=0
enabled=1
[centos-nfs-ganesha28]
name=CentOS-7 - NFS Ganesha 2.8
baseurl=http://172.16.10.17/yumrepos/centos-nfs-ganesha28/
gpgcheck=0
enabled=1
[ceph]
name=CentOS-7 - Ceph
baseurl=http://172.16.10.17/yumrepos/ceph/
gpgcheck=0
enabled=1
[ceph-noarch]
name=CentOS-7 - Ceph-noarch
baseurl=http://172.16.10.17/yumrepos/ceph-noarch/
gpgcheck=0
enabled=1
---
然後使用ansible 同步到所有節點上面
ansible nodesrvs -m copy -a "src=/etc/yum.repos.d/openstack-public.repo dest=/etc/yum.repos.d/"
ansible nodesrvs -m command -a "yum clean all"
ansible nodesrvs -m command -a "yum makecache fast"
主機rpm 包的更新
yum update -y
報錯:
--> 正在處理依賴關系 sip(x86-64) = 4.19-1.el7,它被軟體包 sip-devel-4.19-1.el7.x86_64 需要
--> 解決依賴關系完成
錯誤:軟體包:PyQt4-devel-4.12-1.el7.x86_64 (centos-openstack-train)
需要:PyQt4(x86-64) = 4.12-1.el7
已安裝: PyQt4-4.10.1-13.el7.x86_64 (@anaconda)
PyQt4(x86-64) = 4.10.1-13.el7
錯誤:軟體包:sip-devel-4.19-1.el7.x86_64 (centos-openstack-train)
需要:sip(x86-64) = 4.19-1.el7
已安裝: sip-4.14.6-4.el7.x86_64 (@anaconda)
sip(x86-64) = 4.14.6-4.el7
您可以嘗試添加 --skip-broken 選項來解決該問題
yum remove PyQt4-4.10.1-13.el7.x86_64 sip-4.14.6-4.el7.x86_64 -y
yum update -y
安裝 OpenStack 用戶端
yum -y install python-openstackclient
從新啟動 伺服器
reboot
二:主機環境初始化
2.1 主機硬體環境
2.1.1 主機節點增加網卡
ceph01/ceph02/ceph03 此處先不修改,等在後面安裝 ceph 時再根據規劃修改
按照規劃,為 compute01、compute02 添加硬碟50G的硬碟,controller、compute01、compute02 各增加 2 塊網卡,此處以 controller 截圖為例
vmware線上重新整理硬碟指令
echo "- - -" >> /sys/class/scsi_host/host0/scan
echo "- - -" >> /sys/class/scsi_host/host1/scan
echo "- - -" >> /sys/class/scsi_host/host2/scan
編輯 controller 虛拟機,添加 網絡擴充卡
新增加的網卡為ens35 (隧道VXLAN網絡) 與 ens36(ceph 存儲網絡)
controller 主機:
在 controller 節點上執行
# cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-ens35
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
IPV6INIT=no
NAME=ens35
DEVICE=ens35
ONBOOT=yes
IPADDR=10.16.10.11
NETMASK=255.255.255.0
EOF
# cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-ens36
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
IPV6INIT=no
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=20.16.10.11
NETMASK=255.255.255.0
EOF
# systemctl restart network
compter01 主機:
在 compute01 節點上執行
# cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-ens35
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
IPV6INIT=no
NAME=ens35
DEVICE=ens35
ONBOOT=yes
IPADDR=10.16.10.12
NETMASK=255.255.255.0
EOF
# cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-ens36
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
IPV6INIT=no
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=20.16.10.12
NETMASK=255.255.255.0
EOF
# systemctl restart network
compter02 主機:
在 compute02 節點上執行
# cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-ens35
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
IPV6INIT=no
NAME=ens35
DEVICE=ens35
ONBOOT=yes
IPADDR=10.16.10.13
NETMASK=255.255.255.0
EOF
# cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-ens36
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
IPV6INIT=no
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=20.16.10.13
NETMASK=255.255.255.0
EOF
# systemctl restart network
并且網絡必須是通暢
在 controller 節點上執行
ping 10.16.10.12
ping 10.16.10.13
ping 20.16.10.12
ping 20.16.10.13
2.1.2 添加計算節computer點硬碟
vmware線上重新整理硬碟指令
echo "- - -" >> /sys/class/scsi_host/host0/scan
echo "- - -" >> /sys/class/scsi_host/host1/scan
echo "- - -" >> /sys/class/scsi_host/host2/scan