标签(空测试用例格分隔):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 体系涉及架构

image.png

1.1.4 openstack 组件交互架构

image.png

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 环境 虚机配置如下

image.png

安装方式可以采用虚机方式先一台虚机模板然后克隆,
产线机房可以采用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

image.png

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

image.png

tail -f /etc/security/limits.conf

image.png

cat /etc/security/limits.d/20-nproc.conf

image.png

设置 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 型号过旧,导致创建云主机故障的问题
*/

image.png

所有机器设置这些完成之后重启系统

reboot

1.2.4 制作 本地yum 服务器 机器

1.2.4.1 修改本地yum 源

上述机器使用yum.ops(172.16.10.17) 机器 
Login:
   172.16.10.17

image.png

使用阿里云的配置源
# 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

image.png
image.png
image.png
image.png

image.png

1.2.4.2 安装同步源的需要的依赖包

# yum -y install createrepo yum-utils httpd reposync
# systemctl enable httpd && systemctl start httpd

image.png
image.png
image.png

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 包全部下载到本地

image.png

image.png

私有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 虚拟机,添加 网络适配器

image.png
image.png

新增加的网卡为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

image.png
image.png

2.1.2 添加计算节computer点硬盘

image.png

vmware在线刷新硬盘命令
echo "- - -" >> /sys/class/scsi_host/host0/scan
echo "- - -" >> /sys/class/scsi_host/host1/scan
echo "- - -" >> /sys/class/scsi_host/host2/scan 

image.png