侧边栏壁纸
博主头像
尘兮小站博主等级

行动起来,活在当下

  • 累计撰写 8 篇文章
  • 累计创建 4 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

openstack汇总

Administrator
2024-01-19 / 0 评论 / 2 点赞 / 150 阅读 / 51529 字

基础环境配置

1.控制节点主机名为 controller,设置计算节点主机名为 compute;

2.hosts 文件将 IP 地址映射为主机名。

使用提供的用户名密码,登录提供的 OpenStack 私有云平台,在当前租户下,使用 CentOS7.9 镜像,创建两台云主机, 云主机类型使用 4vCPU/12G/100G_50G 类型。当前租户 下默认存在一张网卡,自行创建第二张网卡并连接至 controller 和 compute 节点(第二张 网卡的网段为 10.10.X.0/24,X 为工位号,不需要创建路由)。自行检查安全组策略,以确保网络正常通信与 ssh 连接, 然后按以下要求配置服务器:

(1)设置控制节点主机名为 controller,设置计算节点主机名为 compute;

(2)修改 hosts 文件将 IP 地址映射为主机名;

[root@controller ~]# rm -rf /etc/yum.repos.d/*
[root@controller ~]# vi /etc/hosts
[root@controller ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.150 controller
10.0.0.198 compute

Yum 源配置

使用提供的 http 服务地址,分别设置 controller 节点和 compute 节点的 yum 源文件http.repo。

使用提供的 http 服务地址,在 http 服务下, 存在 centos7.9 和 iaas 的网络 yum 源,

使用该 http 源作为安装 iaas 平台的网络源。分别设置 controller 节点和 compute 节点的yum 源文件 http.repo。完成后提交控制节点的用户名、密码和 IP 地址到答题框。

[root@controller ~]# cat /etc/yum.repos.d/http.repo 
[centos]
name=centos
baseurl=http://172.30.26.138/centos
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=http://172.30.26.138/openstack/iaas-repo
gpgcheck=0
enabled=1

配置无秘钥 ssh

配置 controller 节点可以无秘钥访问 compute 节点。

配置 controller 节点可以无秘钥访问 compute 节点,配置完成后,尝试 ssh 连接 compute 节点的 hostname 进行测试。完成后提交 controller 节点的用户名、密码和 IP 地址到答题框。

[root@controller ~]# ssh-keygen  
[root@controller ~]# ssh-copy-id compute

安装软件包

在控制节点和计算节点上分别安装 openstack-iaas 软件包。

 在控制节点和计算节点上分别安装 openstack-iaas 软件包,根据表 2 配置两个节点脚本文件中的基本变量(配置脚本文件为/etc/openstack/openrc.sh

服务名称

变量

参数/密码

Mysql

root

000000

Keystone

000000

Glance

000000

Nova

000000

Neutron

000000

Heat

000000

Zun

000000

Keystone

DOMAIN_NAME

demo

Admin

000000

Rabbit

000000

Glance

000000

Nova

000000

Neutron

000000

Heat

000000

Zun

000000

[root@controller ~]# yum install -y openstack-iaas
[root@compute ~]# yum install -y openstack-iaas
[root@controller ~]# vim /etc/openstack/openrc.sh
输入替换指令:%s/#/
输入替换指令:%s/PASS=/PASS=000000
修改一下数据
HOST_IP=10.0.0.150
HOST_NAME=controller
HOST_IP_NODE=10.0.0.198
HOST_PASS_NODE=000000
HOST_NAME_NODE=compute
network_segment_IP=10.0.0.0/24
RABBIT_USER=openstack
DOMAIN_NAME=demo
METADATA_SECRET=000000
INTERFACE_NAME=eth1
Physical_NAME=provider
minvlan=1
maxvlan=1000
BLOCK_DISK=vdb1
OBJECT_DISK=vdb2
STORAGE_LOCAL_NET_IP=10.0.0.198
SHARE_DISK=vdb3

将配置文件传输到compute节点
[root@controller ~]# scp /etc/openstack/openrc.sh compute:/etc/openstack/openrc.sh

安装组建

初始化openstack、MYSQL、Keystone、Glance、Nova、Neutron、Dashboard、Heat、Swift、Cinder

安装前,将 compute分盘

umount /mnt
fdisk /dev/vdb
n 回车 回车 +10G
回车 回车 回车 +10G
回车 回车 回车 +10G

w保存

[root@compute ~]# iaas-pre-host.sh
[root@controller ~]# iaas-pre-host.sh
[root@controller ~]# iaas-install-mysql.sh && iaas-install-keystone.sh && iaas-install-glance.sh && iaas-install-placement.sh && iaas-install-nova-controller.sh 
[root@compute ~]# iaas-install-nova-compute.sh 
[root@controller ~]# iaas-install-neutron-controller.sh 
[root@compute ~]# iaas-install-neutron-compute.sh 
[root@controller ~]# iaas-install-dashboard.sh && iaas-install-heat.sh && iaas-install-swift-controller.sh 
[root@compute ~]# iaas-install-swift-compute.sh 
[root@controller ~]# iaas-install-cinder-controller.sh
[root@compute ~]# iaas-install-cinder-compute.sh 

私有云服务搭建

MYSQL

1.设置数据库支持大小写;

2.设置数据库缓存 innodb 表的索引, 数据,插入数据时的缓冲为 4G;

3.设置数据库的 log buffer 为 64MB;

4.设置数据库的 redo log 大小为 256MB;

5.设置数据库的 redo log 文件组为 2。

6.修改Memcached 的相关配置, 将内存占用大小设置为 512MB,调整最大连接数参数为2048;

7.调整 Memcached 的数据摘要算法(hash)为 md5;

[root@controller ~]# vi /etc/my.cnf
lower_case_table_names=1
innodb_buffer_pool_size=4G
innodb_log_buffer_size=64M
innodb_log_file_size=256M
innodb_log_files_in_group=2
[root@controller ~]# vi /etc/sysconfig/memcached 
MAXCONN="2048"
CACHESIZE="512"
hash_algorithm=md5

Keystone

在 controller 节点上使用 iaas-install-keystone.sh 脚本安装 Keystone 服务。

然后创建 OpenStack 域 210Demo,其中包含 Engineering 与 Production 项目,在域210Demo 中创建组 Devops,其中需包含以下用户:

1.Robert 用户是 Engineering 项目的用户(member)与管理员(admin), email 地址为: Robert@lab.example.com。

2.George 用 户 是 Engineering 项 目 的 用 户 (member ) , email 地 址 为 :George@lab.example.com。

3.William 用户是 Production 项目的用户(member)与管理员(admin), email 地址为: William@lab.example.com。

4.John 用 户 是 Production 项 目 的 用 户 (member ) , email 地 址 为 :John@lab.example.com。

完成后提交控制节点的用户名、密码和 IP 地址到答题框。

[root@controller ~]# openstack domain create --description "210Demo domain" 210Demo
[root@controller ~]# openstack project create --domain 210Demo  --description "Engineering project" Engineering
[root@controller ~]# openstack project create --domain 210Demo  --description "Production project" Production
[root@controller ~]# openstack group create --domain 210Demo Devops
[root@controller ~]# openstack user create --project Engineering --email  Robert@lab.example.com --domain 210Demo Robert
[root@controller ~]# openstack user create --project Engineering --email  George@lab.example.com --domain 210Demo George
[root@controller ~]# openstack user create --project Production --email  William@lab.example.com --domain 210Demo William
[root@controller ~]# openstack user create --project Production --email  John@lab.example.com --domain 210Demo John
[root@controller ~]# openstack role add --user Robert --project Engineering  member
[root@controller ~]# openstack role add --user Robert --project Engineering  admin
[root@controller ~]# openstack role add --user George --project Engineering  member
[root@controller ~]# openstack role add --user William --project Production member
[root@controller ~]# openstack role add --user William --project Production admin
[root@controller ~]# openstack role add --user John --project Production member

在controller节点上使用iaas-install-keystone.sh脚本安装Keystone服务。安装完成后,使用相关命令,创建用户chinaskill,密码为000000。

[root@controller ~]# openstack user create --password 000000 chinaskill

Glance

在 controller 节点上使用 iaas-install-glance.sh 脚本安装 glance 服务。然后使 用提供的 coreos_production_pxe.vmlinuz 镜像(该镜像为 Ironic Deploy 镜像, 是一个 AWS 内核格式的镜像,在 OpenStack Ironic 裸金属服务时需要用到)上传到 OpenStack 平台中, 命名为 deploy-vmlinuz。完成后提交控制节点的用户名、密码和 IP 地址到答题框。

[root@controller ~]# openstack image create --file coreos_production_pxe.vmlinuz --disk-format aki --container-format aki --public deploy-vmlinuz

在controller节点上使用iaas-install-glance.sh脚本安装glance 服务。使用命令将提供的cirros-0.3.4-x86_64-disk.img镜像(该镜像在HTTP服务中,可自行下载)上传至平台,命名为cirros,并设置最小启动需要的硬盘为10G,最小启动需要的内存为1G。完成后提交控制节点的用户名、密码和IP地址到答题框。

[root@controller ~]# openstack image create --file cirros-0.3.4-x86_64-disk.img --min-disk 10 --min-ram 1024 --disk-format qcow2   --container-format bare cirros

Nova

在controller节点和compute节点上分别使用iaas-install-placement.sh脚本、iaas-install-nova-controller.sh脚本、iaas-install-nova-compute.sh脚本安装Nova服务。安装完成后,请修改nova相关配置文件,解决因等待时间过长而导致虚拟机启动超时从而获取不到IP地址而报错失败的问题。

[root@controller ~]# vi /etc/nova/nova.conf
vif_plugging_is_fatal false

在 controller 节点和 compute 节点上分别使用 iaas-install-placement.sh 脚本、 iaas-install-nova -controller.sh 脚本、iaas-install-nova-compute.sh 脚本安装 Nova 服务。在 OpenStack 中, 修改相关配置文件,修改调度器规则采用缓存调度器,缓存主机信息, 提升调度时间。

vi /etc/nova/nova.conf
driver=caching_scheduler

Doshboard

在controller节点上使用iaas-install-dashboad.sh脚本安装dashboad服务。安装完成后,将Dashboard中的Djingo数据修改为存储在文件中(此种修改解决了ALL-in-one快照在其他云平台Dashboard不能访问的问题)

[root@controller ~]# vi /etc/openstack-dashboard/local_settings 
SESSION_ENGINE = 'django.contrib.sessions.backends.file'

在控制节点上安装 Dashboard 服务。安装完成后,将 Dashboard 中的 Django 数据修改为存储在文件中。

在 controller 节点上使用 iaas-install-dashboad.sh 脚本安装 Dashboard 服务。

安装完成后,修改相关配置文件,完成下列两个操作:

1.使得登录 Dashboard 平台的时候不需要输入域名;

2.将 Dashboard 中的 Django 数据修改为存储在文件中。

完成后提交控制节点的用户名、密码和 IP 地址到答题框。

[root@controller ~]# vi /etc/openstack-dashboard/local_settings 
ALLOWED_HOSTS = ['*']
SESSION_ENGINE = 'django.contrib.sessions.backends.file'

Swift

在控制节点和计算节点上分别使用iaas-install-swift-controller.sh和iaas-install-swift-compute.sh脚本安装Swift服务。安装完成后,使用命令创建一个名叫examcontainer的容器,将cirros-0.3.4-x86_64-disk.img镜像上传到examcontainer容器中,并设置分段存放,每一段大小为10M。

[root@controller ~]# swift post examcontainer
[root@controller ~]# swift upload examcontainer -S 10000000 cirros-0.3.4-x86_64-disk.img

Cinder

在 控 制 节 点 和 计 算 节 点 分 别 使 用 iaas-install-cinder-controller.sh 、 iaas-install-cinder-compute.sh 脚本安装 Cinder 服务,请在计算节点,对块存储进行扩容操 作,即在计算节点再分出一个 5G 的分区,加入到 cinder 块存储的后端存储中去。

[root@controller ~]# pvcreate /dev/vdb5
[root@controller ~]# vgdisplay
[root@controller ~]# vgextend cinder-volumes /dev/vdb5
[root@controller ~]# vgdisplay

Manila

在控制和计算节点上分别使用iaas-install-manila-controller.sh和iaas-install-manila-compute.sh脚本安装manila服务。安装服务后创建default_share_type共享类型(不使用驱动程序支持),接着创建一个大小为2G的共享存储名为share01并开放share01目录对OpenStack管理网段使用权限。最后提交控制节点的用户名、密码和IP地址到答题框。

[root@controller ~]# manila type-create default_share_type false
[root@controller ~]# manila create NFS 2 --name share01
[root@controller ~]# manila access-allow share01 ip 10.0.0.0/24 --access-level rw

Barbican

使用iaas-install-barbican.sh脚本安装barbican服务,安装服务完毕后,使用openstack命令创建一个名为secret01的密钥,创建完成后提交控制节点的用户名、密码和 IP 地址到答题框。

[root@controller ~]# openstack secret store --name secret01 --payload secretkey
[root@controller ~]# openstack secret list

Cloudkitty

使用iaas-install-cloudkitty.sh脚本安装cloudkitty服务,安装完毕后,启用hashmap评级模块,接着创建volume_thresholds组,创建服务匹配规则volume.size,并设置每GB的价格为0.01。接下来对应大量数据设置应用折扣,在组volume_thresholds中创建阈值,设置若超过50GB的阈值,应用2%的折扣(0.98)。

[root@controller ~]# openstack rating module enable hashmap
[root@controller ~]# openstack rating hashmap service create volume.size
创建hashmap service group
[root@controller ~]# openstack rating hashmap group create volume_thresholds
创建volume单价
[root@controller ~]# openstack rating hashmap mapping create -s 第4步创建的hashmap service的id -g 第5步创建的hashmap service group的id -t flat 0.01
创建service rule
[root@controller ~]# openstack rating hashmap threshold create -s 第4步创建的hashmap service的id -g 第5步创建的hashmap service group的id -t rate 50 0.98

私有云运维

OpenStack 开放镜像权限

使用OpenStack私有云平台,在OpenStack平台的admin项目中使用cirros-0.3.4-x86_64-disk.img镜像文件创建名为glance-cirros的镜像,通过OpenStack命令将glance-cirros镜像指定demo项目进行共享使用。

1.在admin项目中使用cirros-0.3.4-x86_64-disk.img镜像文件创建名为glance-cirros的镜像

[root@controller ~]# openstack image create --file cirros-0.3.4-x86_64-disk.img glance-cirros

2.将glance-cirros镜像指定demo项目

[root@controller ~]# openstack image add project glance-cirros demo

3.共享

[root@controller ~]# openstack image set --share --accept --project demo glance-cirros

OpenStack Nova 清除缓存

在OpenStack平台的一台计算节点创建虚拟机,若是第一次在该节点创建次虚拟机,会先将镜像文件复制到该计算节点目录/var/lib/nova/instances/_base。长期下来,该目录会占用比较大的磁盘空间而要清理。通过修改 nova 的配置文件来实现自动清理该缓存目录。

[root@controller ~]# openstack-config --set /etc/nova/nova.conf  DEFAULT remove_unused_base_images true
[root@controller ~]# systemctl restart openstack-nova-compute

OpenStack 平台内存优化

搭建完 OpenStack 平台后,关闭系统的内存共享,打开透明大页。

1在控制节点关闭系统的内存共享

[root@controller ~]# echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag

Linux 系统调优-脏数据回写

修改系统配置文件, 要求将回写磁盘的时间临时调整为 60 秒。Linux 系统内存中会存在脏数据,一般系统默认脏数据 30 秒后会回写磁盘,修改系统 配置文件, 要求将回写磁盘的时间临时调整为 60 秒。

[root@controller ~]# cat /proc/sys/vm/dirty_expire_centisecs
[root@controller ~]# cat /proc/sys/vm/dirty_writeback_centisecs
echo  修改为6000 (临时生效)
持续生效方法:
修改sysctl.conf添加 sysctl -p
[root@controller ~]# vi /etc/sysctl.conf
vm.dirty_expire_centisecs =6000
vm.dirty_writeback_centisecs = 6000
sysctl -p

Glance 调优

在 OpenStack 平台中,修改相关配置文件,将子进程数量相应的配置修改成 2。

在 OpenStack 平台中,glance-api 处理请求的子进程数量默认是 0,只有一个主进 程,请修改相关配置文件,将子进程数量相应的配置修改成 2,这样的话有一个主进程加 2个子进程来并发处理请求。完成后提交控制节点的用户名、密码和 IP 地址到答题框。

[root@controller ~]# vi + 787 /etc/glance/glance-api.conf
workers = 2

修改文件句柄数

Linux服务器大并发时,往往需要预先调优Linux参数。默认情况下,Linux最大文件句柄数为1024个。当你的服务器在大并发达到极限时,就会报出“too many open files”。创建一台云主机,修改相关配置,将控制节点的最大文件句柄数永久修改为65535。配置完成后提交controller点的用户名、密码和IP地址到答题框。

[root@controller ~]# vi /etc/security/limits.conf
*  soft  nofile  65535
*  hard  nofile  65535

OpenStack消息队列调优

OpenStack各服务内部通信都是通过RPC来交互,各agent都需要去连接RabbitMQ;随着各服务agent增多,MQ的连接数会随之增多,最终可能会到达上限,成为瓶颈。使用自行搭建的OpenStack私有云平台,分别通过用户级别、系统级别、配置文件来设置RabbitMQ服务的最大连接数为 10240。

1进行用户级别修改

[root@controller ~]# vi /etc/security/limits.conf
openstack soft nofile 10240
openstack hard nofile 10240
[root@controller ~]# ulimit -n 10240

2进行系统级别修改

[root@controller ~]# vi /etc/sysctl.conf
fs.file-max=10240
[root@controller ~]# sysctl -p

3进行修改RabbitMQ配置

[root@controller ~]# vi /usr/lib/systemd/system/rabbitmq-server.service
LimitNOFILE=10240            #在[Service]下添加一行

重启RabbitMQ服务

[root@controller ~]# systemctl daemon-reload && systemctl restart rabbitmq-server

OpenStack Glance镜像压缩

使用自行搭建的OpenStack平台。在HTTP服务中存在一个镜像为CentOS7.5-compress.qcow2的镜像,请使用qemu相关命令,对该镜像进行压缩,压缩后的镜像命名为chinaskill-js-compress.qcow2并存放在/root 目录下。

[root@controller ~]# qemu-img convert -c -O qcow2 CentOS7.5-compress.qcow2 chinaskill-compress.qcow2

Ceph 集群部署

使用提供的 ceph-14.2.22.tar.gz 软件包,在 OpenStack 平台上创建三台 CentOS7.9 系统的云主机, 使用这三个节点安装 ceph 服务并完成初始化操作,第一个节点为 mon/osd 节点,第二、三个节点为 osd 节点,部署完 ceph 后,创建 vms、images、volumes 三个pool。完成后提交第一个节点的用户名、密码和 IP 地址到答题框。

创建三台机器设置主机名 ceph1 ceph2 ceph3修改hosts文件 配置ssh免密

三个节点分别安装ceph(三个节点都执行)

yum install -y ceph ceph-deploy

进入ceph文件夹进行操作

cd /etc/ceph

三个节点分别创建ceph集群 ceph-deploy new <主节点主机名> (三个节点都执行)

ceph-deploy new ceph1

ceph1创建mon(ceph1执行)

ceph-deploy mon create ceph1

三个节点收集并分发秘钥(三个节点都执行)

ceph-deploy gatherkeys ceph1

ceph1在对应节点分别擦除分区表和内容:

ceph-deploy disk zap ceph1 /dev/vdb
ceph-deploy disk zap ceph2 /dev/vdb
ceph-deploy disk zap ceph3 /dev/vdb

在各个节点上创建OSD(对象存储守护进程):

ceph1执行:
ceph-deploy osd create ceph1 --data /dev/vdb
ceph2执行:
ceph-deploy osd create ceph2 --data /dev/vdb
ceph3执行:
ceph-deploy osd create ceph3 --data /dev/vdb

在ceph1节点创建mgr(管理器)

ceph-deploy mgr create ceph1

在每个节点都修改ceph配置以解决mon is allowing insecure global_id reclaim警告:

ceph config set mon auth_allow_insecure_global_id_reclaim false

检查ceph集群健康状态

[root@ceph1 ceph]# ceph -s
  cluster:
    id:     5e315643-3f2f-4664-8070-3f49fa336525
    health: HEALTH_OK
 
  services:
    mon: 1 daemons, quorum ceph1 (age 21m)
    mgr: ceph1(active, since 12m)
    osd: 3 osds: 3 up (since 13m), 3 in (since 13m)
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   3.0 GiB used, 147 GiB / 150 GiB avail
    pgs:     

创建资源池

[root@ceph1 ceph]# ceph osd pool create vms 6 6
pool 'vms' created
[root@ceph1 ceph]# ceph osd pool create images 6 6
pool 'images' created
[root@ceph1 ceph]# ceph osd pool create volumes 6 6
pool 'volumes' created

查看资源池

ceph osd lspools

Glance 对接 Ceph 存储

修改 OpenStack 平台中 Glance 服务的配置文件, 将 Glance 后端存储改为 Ceph 存储。在自己搭建的 OpenStack 平台中修改 glance 服务的相关配置文件, 将 glance 后端存储改为 ceph 存储。也就是所以的镜像会上传至 ceph 的 images pool 中。通过命令使用cirros-0.3.4-x86_64-disk.img 镜像文件上传至云平台中,镜像命名为 cirros。完成后提交 controller 节点的用户名、密码和 IP 地址到答题框。

 [root@controller ~]# grep -Ev '^#|^$' /etc/glance/glance-api.conf
[DEFAULT]
show_image_direct_url = True
[glance_store]
stores = rbd
default_store = rbd
rbd_store_chunk_size = 8
rbd_store_pool = images
rbd_store_user = glance
rbd_store_ceph_conf =/etc/ceph/ceph.conf
[root@controller ~]# systemctl restart openstack-glance-*
[root@controller ~]# openstack image create --disk-format qcow2 --public --file cirros-0.3.4-x86_64-disk.img cirros
[root@controller ~]# rbd ls images
356c1d58-5b28-459a-96f7-bea3a095a786
[root@controller ~]# rbd info images/356c1d58-5b28-459a-96f7-bea3a095a786
rbd image '356c1d58-5b28-459a-96f7-bea3a095a786':
	size 13 MiB in 2 objects
	order 23 (8 MiB objects)
	snapshot_count: 1
	id: 106593abc842
	block_name_prefix: rbd_data.106593abc842
	format: 2
	features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
	op_features:
	flags:
	create_timestamp: Wed Aug 30 04:49:30 2023
	access_timestamp: Wed Aug 30 04:49:30 2023
	modify_timestamp: Wed Aug 30 04:49:30 2023

Cinder 对接 Ceph 存储

修改 OpenStack 平台中 cinder 服务的配置文件, 将 cinder 后端存储改为 Ceph 存储。

修改 OpenStack 平台中 cinder 服务的相关配置文件,将 cinder 后端存储改为 ceph 存 储。使创建的 cinder 块存储卷在 ceph 的 volumes pool 中。 配置完成后,在 OpenStack 平 台中使用创建卷 cinder-volume1,大小为 1G。完成后提交 controller 节点的用户名、密码和 IP 地址到答题框。

 [root@controller ~]# ceph auth get-or-create client.cinder mon 'profile rbd' osd 'profile rbd pool=volumes, profile rbd pool=vms, profile rbd pool=images'
[client.cinder]
	key = AQBAS+9kkOmVEBAAt2KxcIBufLOAEhdNLVI4IA==
[root@controller ~]# ceph auth get-or-create client.cinder | ssh root@controller sudo tee /etc/ceph/ceph.client.cinder.keyring
[client.cinder]
	key = AQBAS+9kkOmVEBAAt2KxcIBufLOAEhdNLVI4IA==
[root@controller ~]# ceph auth get-or-create client.cinder | ssh root@compute sudo tee /etc/ceph/ceph.client.cinder.keyring
[client.cinder]
	key = AQBAS+9kkOmVEBAAt2KxcIBufLOAEhdNLVI4IA==
[root@controller ~]# chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
[root@controller ~]# ceph auth get-key client.cinder | ssh root@controller tee /etc/ceph/client.cinder.key
AQBAS+9kkOmVEBAAt2Kxc
[root@controller ~]# ceph auth get-key client.cinder | ssh root@compute tee /etc/ceph/client.cinder.key
AQBAS+9kkOmVEBAAt2KxcIBufLOAEhdNLVI4IA==
[root@compute ~]# uuidgen
2bedcc3d-5c8f-4372-8c3c-37f46026e085
[root@compute ~]# vi /etc/ceph/secret.xml
<secret ephemeral='no' private='no'>
  <uuid>7c2abd23-6ab5-454b-998c-5c7ce699f138</uuid>
  <usage type='ceph'>
    <name>client.cinder secret</name>
  </usage>
</secret>
[root@compute ~]# sudo virsh secret-define --file /etc/ceph/secret.xml
Secret 19823e0b-0766-4818-90ea-776ed7c682a8 created

[root@compute ~]# sudo virsh secret-set-value --secret 19823e0b-0766-4818-90ea-776ed7c682a8 --base64 $(cat /etc/ceph/client.cinder.key)
Secret value set

[root@compute ~]# sudo virsh secret-list
 UUID                                  Usage
--------------------------------------------------------------------------------
 19823e0b-0766-4818-90ea-776ed7c682a8  ceph client.cinder secret
 [root@compute ~]# vi /etc/cinder/cinder.conf
[DEFAULT]
...
enabled_backends = ceph
glance_api_version = 2
glance_api_servers = http://controller:9292

#[lvm]  #注释掉默认的
#volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
#volume_backend_name = lvm
#volume_group = cinder-volumes
#iscsi_protocol = iscsi
#iscsi_helper = lioadm

[ceph]需要自行添加
volume_driver = cinder.volume.drivers.rbd.RBDDriver
volume_backend_name = ceph
rbd_pool = volumes
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = -1
#用于cephx的身份验证
rbd_user = cinder
#cinder用户访问ceph集群所使用的Secret UUID
rbd_secret_uuid = 19823e0b-0766-4818-90ea-776ed7c682a8
[root@compute ~]# systemctl restart openstack-cinder-volume
[root@controller ~]# systemctl restart openstack-cinder-api.service openstack-cinder-scheduler.service httpd
[root@controller ~]# openstack volume service list
+------------------+--------------+------+---------+-------+----------------------------+
| Binary           | Host         | Zone | Status  | State | Updated At                 |
+------------------+--------------+------+---------+-------+----------------------------+
| cinder-scheduler | controller   | nova | enabled | up    | 2023-08-30T14:04:36.000000 |
| cinder-volume    | compute@lvm  | nova | enabled | down  | 2023-08-30T14:03:51.000000 |
| cinder-volume    | compute@ceph | nova | enabled | up    | 2023-08-30T14:05:14.000000 |
+------------------+--------------+------+---------+-------+----------------------------+
[root@controller ~]# openstack volume type create --public --property volume_backend_name="ceph" ceph_rbd
+-------------+--------------------------------------+
| Field       | Value                                |
+-------------+--------------------------------------+
| description | None                                 |
| id          | 09cd8be4-51ea-4c9f-b6a5-3f8489d1a90f |
| is_public   | True                                 |
| name        | ceph_rbd                             |
| properties  | volume_backend_name='ceph'           |
+-------------+--------------------------------------+
[root@controller ~]# openstack volume create --type ceph_rbd --size 1 ceph_rbd_volume1
+---------------------+--------------------------------------+
| Field               | Value                                |
+---------------------+--------------------------------------+
| attachments         | []                                   |
| availability_zone   | nova                                 |
| bootable            | false                                |
| consistencygroup_id | None                                 |
| created_at          | 2023-08-30T14:06:02.000000           |
| description         | None                                 |
| encrypted           | False                                |
| id                  | 50ba069a-00f8-4bef-94e0-3589a924b2de |
| migration_status    | None                                 |
| multiattach         | False                                |
| name                | ceph_rbd_volume1                     |
| properties          |                                      |
| replication_status  | None                                 |
| size                | 1                                    |
| snapshot_id         | None                                 |
| source_volid        | None                                 |
| status              | creating                             |
| type                | ceph_rbd                             |
| updated_at          | None                                 |
| user_id             | 897bd12eb08749bbb2127facfea9d4a1     |
+---------------------+--------------------------------------+
[root@controller ~]# openstack volume list
+--------------------------------------+------------------+-----------+------+-------------+
| ID                                   | Name             | Status    | Size | Attached to |
+--------------------------------------+------------------+-----------+------+-------------+
| 50ba069a-00f8-4bef-94e0-3589a924b2de | ceph_rbd_volume1 | available |    1 |             |
+--------------------------------------+------------------+-----------+------+-------------+
[root@controller ~]# rbd ls volumes
volume-50ba069a-00f8-4bef-94e0-3589a924b2de
[root@controller ~]# rbd info volumes/volume-50ba069a-00f8-4bef-94e0-3589a924b2de
rbd image 'volume-50ba069a-00f8-4bef-94e0-3589a924b2de':
	size 1 GiB in 256 objects
	order 22 (4 MiB objects)
	snapshot_count: 0
	id: 10ba1d5aa1df
	block_name_prefix: rbd_data.10ba1d5aa1df
	format: 2
	features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
	op_features:
	flags:
	create_timestamp: Wed Aug 30 14:06:03 2023
	access_timestamp: Wed Aug 30 14:06:03 2023
	modify_timestamp: Wed Aug 30 14:06:03 2023

Nova 对接 Ceph 存储

 修改 OpenStack 平台中 Nova 服务的配置文件,将 Nova 后端存储改为 Ceph 存储。

修改 OpenStack 平台中 nova 服务的相关配置文件,将 nova 后端存储改为 ceph 存储。 使 nova 所创建的虚拟机都存储在 ceph 的 vms pool 中。配置完成后在 OpenStack 平台中使 用命令创建云主机 server1。完成后提交 controller 节点的用户名、密码和 IP 地址到答题框。

[root@compute ~]# mkdir -p /var/run/ceph/guests/ /var/log/qemu/
[root@compute ~]# chown qemu:libvirt /var/run/ceph/guests /var/log/qemu/
[root@compute ~]# vi /etc/ceph/ceph.conf
[root@compute ~]# cat /etc/ceph/ceph.conf
[global]
fsid = 8d253039-7c95-41fe-b80a-3d4676213e05
mon_initial_members = controller
mon_host = 172.29.20.102
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
mon_max_pg_per_osd = 300
rbd cache = true
rbd cache writethrough until flush = true
admin socket = /var/run/ceph/guests/$cluster-$type.$id.$pid.$cctid.asok
log file = /var/log/qemu/qemu-guest-$pid.log
rbd concurrent management ops = 20
[root@compute ~]# systemctl restart ceph*
[root@controller ~]# grep -Ev '^#|^$' /etc/nova/nova.conf
[libvirt]
virt_type = qemu
images_type = rbd
images_rbd_pool = vms
images_rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_user = cinder
rbd_secret_uuid = 7c2abd23-6ab5-454b-998c-5c7ce699f138
disk_cachemodes="network=writeback"
inject_password = false
inject_key = false
inject_partition = -2
live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST"
[root@compute ~]# grep -Ev '^#|^$' /etc/nova/nova.conf
[libvirt]
virt_type = qemu
images_type = rbd
images_rbd_pool = vms
images_rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_user = cinder
rbd_secret_uuid = 7c2abd23-6ab5-454b-998c-5c7ce699f138
disk_cachemodes="network=writeback"
inject_password = false
inject_key = false
inject_partition = -2
live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST"
[root@controller ~]# systemctl restart openstack-nova-*
[root@compute ~]# systemctl restart openstack-nova-compute.service
[root@controller ~]# openstack server add volume test ceph_rbd_volume1
[root@controller ~]# rbd ls vms
dd6e9037-cde2-4917-a62d-defa8821dd0a_disk
[root@controller ~]# rbd info vms/dd6e9037-cde2-4917-a62d-defa8821dd0a_disk
rbd image 'dd6e9037-cde2-4917-a62d-defa8821dd0a_disk':
	size 20 GiB in 5120 objects
	order 22 (4 MiB objects)
	snapshot_count: 0
	id: 11b399136f08
	block_name_prefix: rbd_data.11b399136f08
	format: 2
	features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
	op_features:
	flags:
	create_timestamp: Wed Aug 30 14:21:10 2023
	access_timestamp: Wed Aug 30 14:21:10 2023
	modify_timestamp: Wed Aug 30 14:25:35 2023

glance对接cinder后端存储

在自行搭建的OpenStack平台中修改相关参数,使glance可以使用cinder作为后端存储,将镜像存储于cinder卷中。使用cirros-0.3.4-x86_64-disk.img文件创建 cirros-image 镜像存储于cirros-cinder卷中,通过cirros-image镜像使用cinder卷启动盘的方式进行创建虚拟机。

1.修改glance配置文件/etc/glance/glance-api.conf

[root@controller ~]# openstack-config --set /etc/glance/glance-api.conf  DEFAULT show_multiple_locations true
[root@controller ~]# vi + 3349 /etc/glance/glance-api.conf
[glance_store]
#stores = file,http
#demo_store = file
#filesystem_store_datadir = /var/lib/glance/images/
default_store = cinder
stores = cinder

2修改/etc/cinder/cinder.conf

[root@controller ~]# openstack-config --set /etc/cinder/cinder.conf DEFAULT allowed_direct_url_schemes cinder
[root@controller ~]# openstack-config --set /etc/cinder/cinder.conf DEFAULT glance_api_version 2
[root@controller ~]# openstack-config --set /etc/cinder/cinder.conf DEFAULT image_upload_use_cinder_backend true
[root@controller ~]# openstack-config --set /etc/cinder/cinder.conf DEFAULT image_upload_use_internal_tenant true

3重启相应的服务

[root@controller ~]# systemctl restart openstack-cinder-api.service openstack-cinder-scheduler.service httpd
[root@controller ~]# systemctl restart openstack-glance-api.service

4创建cirros-cinder卷

[root@controller ~]# openstack volume create --size 5 cirros-cinder

5使用cirros-0.3.4-x86_64-disk.img文件创建cirros-image镜像存储于cirros-cinder卷中

[root@controller ~]# glance image-create --container-format bare --disk-format qcow2 --file cirros-0.3.4-x86_64-disk.img --name cirros-image --store cinder://cirros-cinder卷的ID

OpenStack Heat运维:创建容器

在自行搭建的OpenStack私有云平台上 , 在/root目录下编写Heat模板create_container.yaml,要求执行yaml文件可以创建名为heat-swift的容器。

[root@controller ~]# vi create_container.yaml
heat_template_version: "2018-08-31"
resources:
  Container_1:
    type: "OS::Swift::Container"
    properties:
      name: heat_swift

NFS 对接 Glance 后端存储

使用 OpenStack 私有云平台,创建一台云主机,安装 NFS 服务, 然后对接 Glance 后端

存储。

使用赛项提供的 OpenStack 私有云平台, 创建一台云主机(镜像使用 CentOS7.9,flavor 使用带临时磁盘 50G 的) ,配置该主机为 nfs 的 server 端,将该云主机中的 50G 磁盘通过/mnt/test 目录进行共享(目录不存在可自行创建) 。然后配置 controller 节点 为 nfs 的 client 端,要求将/mnt/test 目录作为 glance 后端存储的挂载目录。配置完成

后提交 controller 控制节点的用户名、密码和 IP 地址到答题框。

 

nfs-server:
[root@nfs-server ~]# mkdir /mnt/test
[root@nfs-server ~]# vi /etc/exports
/mnt/test *(rw,sync,no_root_squash)
[root@nfs-server ~]# systemctl enable nfs-server
[root@nfs-server ~]# systemctl start nfs-server
[root@controller ~]# mount nfs-server-ip:/mnt/test /var/lib/glance/images
[root@controller ~]# df -Th

OpenStack Heat运维:创建硬盘

在自行搭建的OpenStack私有云平台上,在/root目录下编写Heat模板heat_cinder.yaml,要求执行yaml文件可以创建名为heat-cinder,大小为2G的云硬盘。

heat_template_version: 2016-04-08

resources:
  cinder_volume:
    type: OS::Cinder::Volume
    properties:
      name: heat-cinder
      size: 2

OpenStack Heat运维:创建用户

编写 Heat 模板 create_user.yaml,创建名为 heat-user 的用户。

使用自己搭建的OpenStack私有云平台, 使用heat编写摸板(heat_template_version: 2016-04-08)创建名为”chinaskills”的 domain,在此 domain 下创建名为 beijing_group 的 租 户 , 在 此 租 户 下 创 建 名 为 cloud 的 用 户 , 将 此 文 件 命 名 及 保 存 在 /root/user_create.yml,完成后提交 controller 点的用户名、密码和 IP 地址到答题框。

[root@controller ~]# vi create_user.yaml
heat_template_version: "2016-04-08"
resources:
  domain:
    type: OS::Keystone::Domain
    properties:
      name: "chinaskills"
  project:
    type: OS::Keystone::Project
    properties:
      name: "beijing_group"
      domain: { get_resource: domain}
  user:
    type: OS::Keystone::User
    properties:
      name: "cloud"
      password: "000000"
      domain: { get_resource: domain}
      default_project: { get_resource: project}

OpenStack Nova优化

OpenStack平台若意外断电,在电力系统恢复后,OpenStack平台可以自启动,但是运行的云主机需要管理员手动开启,在OpenStack平台中配置虚拟机自启动,当宿主机启动后,把虚拟机恢复到之前的状态,如果虚拟机之前是关机,则宿主机启动后,虚拟机也是关机状态;如果虚拟机之前是开机状态,则宿主机启动后,虚拟机还是开机状态中运行的虚拟机。配置完成后提交改动节点的用户名、密码和IP地址到答题框。

[root@controller ~]# vi /etc/nova/nova.conf
resume_guests_state_on_host_boot=true

OpenStack Nova清除缓存

在OpenStack平台的一台计算节点创建虚拟机,若是第一次在该节点创建次虚拟机,会先将镜像文件复制到该计算节点目录/var/lib/nova/instances/_base。长期下来,该目录会占用比较大的磁盘空间而要清理。可以通过修改nova的配置文件来自动清理该缓存目录,即在该节点没有使用某镜像启动的云主机,那么这个镜像在过一定的时间后会被自动删除。

[root@controller ~]# vi /etc/nova/nova.conf
remove_unused_base_images=true

KVM 优化

在 OpenStack 平台上修改相关配置文件, 启用-device virtio-net-pci in kvm。

在自行搭建的 OpenStack 私有云平台或赛项提供的 all-in-one 平台上,修改相关配置 文件, 启用-device virtio-net-pci in kvm,配置完成后提交控制节点的用户名、密码和IP 地址到答题框。

[root@controller ~]# vi /etc/nova/nova.conf
libvirt_use_virtio_for_bridges=true

Redis主从

使用提供的OpenStack私有云平台,申请三台CentOS7.9系统的云主机,使用提供的http源,在三个节点自行安装Redis服务并启动,配置Redis的访问需要密码,密码设置为123456。然后将这三个Redis节点配置为Redis的一主二从三哨兵架构,即一个Redis主节点,两个从节点,三个节点均为哨兵节点

主节点:
修改redis.conf
搜索requirepass 设置密码为123456
搜索protected-mode 设置为no
搜索bind 改为0.0.0.0
设置开机自启动

从节点:
修改redis.conf
搜索protected-mode 设置为no
搜索bind 改为0.0.0.0
搜索slave 改为主节点ip和端口6379
搜索masterauth 改为主节点密码
设置开机自启动
vi /etc/redis.conf
主机配置:
	# 所有ip均可访问,第61行
	bind 0.0.0.0
	# 是否开启保护模式,默认开启。要是配置里没有指定bind和密码,开启该参数后,redis只会本地进行访问,拒绝外部访问。要是开启了密码和bind,可以开启。否则最好关闭设置为no,第80行
	protected-mode no
# 启动端口6379,第84行,一般不用设置
	port 6379
	# redis进程是否以守护进程的方式运行,yes为是,no为否(不以守护进程的方式运行会占用一个终端),第128行
daemonize yes
	# 当master设置了密码保护时,slave服务连接master的密码(主从配置时,必须要设置此密码),第272行
	masterauth 123456
# 设置redis连接密码,如果配置了连接密码,客户端在连接redis是需要通过auth <password>命令提供密码,默认关闭,第480行
	requirepass 123456
从机配置:
	bind 0.0.0.0(第61行)
	protected-mode no (第80行)
port 6379(第84行,一般不用设置)
	daemonize yes(第128行)
	# 指定当本机为slave 服务时,设置master服务的IP地址及端口,在redis启动的时候会自动跟master进行数据同步,所以两台从机同样配置。第265行,(主从配置时,必须要设置此密码)
	slaveof <主节点IP> 6379(第265行)
masterauth 123456(第272行)

requirepass 123456(第480行)
注意:老版本使用slaveof指定主机的IP和端口,新版本使用replicaof指定主机的IP和端口
启动redis服务
systemctl start redis
检验是否成功
redis-cli -a 123456 info replication

哨兵模式,三台主机编辑/etc/redis-sentinel.conf,启动哨兵模式
vi /etc/redis-sentinel.conf
# 关闭保护模式,可以外部访问。第17行
protected-mode no
# 端口默认为26379。第21行,可以忽略
port 26379
# 设置为后台启动。添加此行
daemonize yes
# 指定主机IP地址和端口(三台配置均为指定主机ip),并且指定当有2台哨兵认为主机宕机,则对主机进行容灾切换。第69行
sentinel monitor mymaster <主节点IP> 6379 2
# 当在Redis实例中开启了requirepass,这里就需要提供密码。第88行
sentinel auth-pass mymaster 123456
# 这里设置了主机多少秒无响应,则认为挂了。此处30秒,第98行,此行可忽略
sentinel down-after-milliseconds mymaster 30000
# 主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1。第106行,此行可忽略
snetinel parallel-syncs mymaster 1
# 故障转移的超时时间,这里设置为3分钟。第131行,此行可忽略
sentinel failover-timeout mymaster 180000
启动哨兵模式
redis-sentinel /etc/redis-sentinel.conf
检验是否成功
redis-cli -h 127.0.0.1 -p 26379 INFO Sentinel

OpenStack Glance存储限制

在OpenStack平台上,请修改glance后端配置文件,将用户的镜像存储配额限制为20GB。完成后提交控制节点的用户名、密码和IP地址到答题框

[root@controller ~]# vi /etc/glance/glance-api.conf
image_size_cap = 20GB
user_storage_quota = 20GB

Linux内核优化

在使用Linux服务器的时候,TCP协议规定,对于已经建立的连接,网络双方要进行四次挥手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不会被释放。因为服务器程序要同时管理大量连接,所以很有必要保证无用的连接完全断开,否则大量僵死的连接会浪费许多服务器资源。使用一台CentOS7.9云主机,修改相应的配置文件,要求如下:

(1)NAT 开启 IP 转发支持;

(2)FIN-WAIT-2 状态的时间设置为 30s;

完成后提交修改节点的用户名、密码和IP地址到答题框。

[root@controller ~]# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.tcp_fin_timeout = 30

配置主机禁 ping

修改 controller 节点的相关配置文件,配置 controller 节点禁止其他节点可以 ping它。

[root@controller ~]#  vi /etc/sysctl.conf
net.ipv4.icmp_echo_ignore_all = 1

私有云平台优化:系统网络优化

使用自行创建的 OpenStack 云计算平台,配置控制节点的网络缓存,使得每个 UDP连接(发送、接受)保证能有最小 358 KiB 最大 460 KiB 的 buffer,重启后仍然生效。配置完成后提交 controller 控制节点的用户名、密码和 IP 地址到答题框

vim /etc/sysctl.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.core.rmem_default = 358400
net.core.rmem_max = 460800
net.core.wmem_default = 358400
net.core.wmem_max = 460800

2
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
博主关闭了所有页面的评论