【经验分享】私有云运维的知识点

最近忙于备考没关注,有次点进某小黄鱼发现首页出现了我的笔记还被人收费了
虽然我也卖了一些资源,但我以交流、交换为主,笔记都是免费给别人看的
由于当时刚刚接触写的并不成熟,为了避免更多人花没必要的钱,所以决定公开出来

欢迎各位大佬指正文章内容

在这里插入图片描述

1,Heat编排

这部分当时写的有点麻烦了,等有空了我在评论区贴上新的办法

(看完这一部分,就能独立写出符合题目要求的yaml)

Heat 是一套业务流程平台,旨在帮助更轻松地配置以 OpenStack 为基础的云体系,也就是云上自动化

我们需要知道的heat中的一些重要概念

在之前的Keystone的安装和使用中,我们使用命令完成创建了一个域并逐级向下创建了每一个资源

本次题目:

使用Heat创建chinaskills的域、再创建一个beijing_group的项目,在这个项目下创建一个名为cloud的用户

根据之前的步骤

1,域可以直接创建

2,项目创建要指明【名字、隶属域】

3,用户创建要指明【名字、隶属项目、隶属域】

接下来,以我们要保存的参数为例解析:

heat_template_version: 2013-05-23	
description: >
  Initial template of KeystoneDomain, Project, and User.

resources:
  chinaskills:
    type: OS::Keystone::Domain
    properties:
      name: chinaskills
      enabled: true

  KeystoneProject:
    type: OS::Keystone::Project
    properties:
      name: beijing_group
      domain: { get_resource: chinaskills }

  KeystoneUser:
    type: OS::Keystone::User
    properties:
      name: cloud
      domain: { get_resource: chinaskills }
      default_project: { get_resource: KeystoneProject }
      enabled: true

开始解析:

(我们这个模板总共两个部分:描述部分resources部分

描述部分

heat_template_version: 2013-05-23	
description: >
  Initial template of KeystoneDomain, Project, and User.

resources部分(资源定义字段,定义了模板中的各个资源项)

resources: # 下面那 3 坨都属于这个字段
# chinaskills 资源定义
  chinaskills:
  # type,Keystone 中的域资源
    type: OS::Keystone::Domain
    # properties,用于设置资源属性
    properties:
    # 设置名字【也就是题目要求的】
      name: chinaskills
    # 表示启用这个资源
      enabled: true

  KeystoneProject:
    type: OS::Keystone::Project
    properties:
      name: beijing_group
      # 指明属于哪个域
      # 注意这里的chinaskillsa是上面的【资源定义】字段
      # 不是上面的name属性
      domain: { get_resource: chinaskills }

  KeystoneUser:
    type: OS::Keystone::User
    properties:
      name: cloud
      # 指明属于哪个域
      domain: { get_resource: chinaskills }
      # 指明属于哪个项目
      default_project: { get_resource: KeystoneProject }
      enabled: true

总结:

在步骤上,同样是从域、项目、用户上往下逐级创建,并且越下级要指明的上级资源越多

在模板上,每个资源的基本字段都差不多

比如:

type: OS::Keystone::$name

一般是首字母大小就可以了,比如创建domain类型就是OS::Keystone::Domain,如果报错了再去查看资源类型也行

properties下面有名字、要指明的域

只是下级资源需要指明上级资源时,会用到要指明的上级资源类型,

比如:

要指明域【domain :{ get_resource: $my_domain}

要指明项目【default_project: { get_resource: $my_project }

手搓模板思路:

首先,需要着重记下以下几个字段:

resources

type 获取 Heat 中可用资源类型:heat resource-type-list

properties

注意:下面这个手搓模板是错误的,但是保留用来对比加深印象,正确的在本题上面

heat_template_version: 2013-05-23	
resources:
  my_domain:
    type: OS::Keystone::Domain
    properties:
      name: chinaskills
      enabled: true
  my_project:
    type: OS::Keystone:Project
    properties:
      name: beijing_group
      # 就是这里错误,get_resource 没有s
      domain: {get_resources: my_domain}
      enabled: true
  my_user:
    type: OS::Keystone::User
    properties:
      name: chinaskills
      # 就是这里错误,get_resource 没有s
      domain: {get_resources: my_domain}
      # 就是这里错误,get_resource 没有s
      default_project: {get_resources: my_project}
      enabled: true

模板也是可以直接拉下来的

(拉下来的参数非常多,需要选择性删除,保留我们上面【手搓模板】的内容即可)

heat resources-type-template [资源类型] > /root/heat_create.yaml

这里注意 >重定向至文件 >>追加重定向至文件中(重定向就是输出到文件中)

heat resource-type-template OS::Keystone::Domain > /root/heat_create.yaml
heat resource-type-template OS::Keystone::Project >> /root/heat_create,yaml
heat resource-type-template OS::Keystone::User >> /root/heat_create.yaml

提一下怎么快速删除:

大面积删除:

在命令模式下

先输入【:set nu】,显示出行数

:1,21d】表示删除第1行至第21行(包括第1行和第21行)根据实际情况更改数字

删除当前光标所在行:

命令模式下:光标移动至要删除的行,直接按两下d,【dd】注意没有冒号

使用模板创建资源:

heat stack-create user_create \
-f user_create.yml 

这里面的user_create是stack的名字

2,KVM优化

概念:

KVM(Kernel-based Virtual Machine)是一种虚拟化技术,它允许在一台物理服务器上同时运行多个虚拟机,我们用的虚拟机、云平台主要就是它的功劳

启用 -device virtio-net-pci 选项可以在 KVM 虚拟机中使用 VirtIO 网络设备。VirtIO 是一种基于虚拟化的高性能网络设备模型,它通过与虚拟机内的驱动程序进行交互,提供了更好的网络性能和更低的 CPU 使用率

**为什么不默认启动?**因为不是所有客户端操作系统都对VirtIO设备兼容,默认开启在有些系统上可能会出现未知错误

配置文件位于/etc/nova/nova.conf

修改(进入配置文件使用搜索功能)搜索:命令模式下/user_virtio_for

use_virtio_for_bridges=true 

重启服务,(要等好久)

#systemctl restart openstack-nova-* 	# 这样是对nova服务生效
sudo systemctl restart libvirtd 			# 使 use_virtio_for_bridges=true 生效
验证:
sudo systemctl restart network     重启网卡
ifconfig -a   

如果看到类似 ensX 或 ethX 的网络接口名称,且类型为 VirtIO,则表示虚拟机正在使用 VirtIO 网络设备

3,NFS 对接 Glance 后端存储

概念:

NFS(Network File System)是一种网络文件系统协议,允许在网络上共享文件和目录。

通过使用NFS,计算机可以像访问本地文件系统一样访问远程计算机上的文件。

NFS允许多台计算机之间共享文件,并提供了一种简单且有效的方法来在不同计算机之间共享资源。

NFS通常用于UNIX和类UNIX操作系统之间的文件共享,允许用户通过网络透明地访问和管理文件。

它基于客户端-服务器模型,其中NFS服务器主机共享其文件系统,而NFS客户端主机可以挂载(mount)这些共享文件系统并访问其中的文件和目录。

1,首先创建/克隆一台主机

2,配置yum源安装nfs服务器

和compute的一样(可直接把compute的通过scp发送过来)

yum install -y nfs*		

3,配置用户组

id glance
如下:
uid=161(glance) gid=161(glance) groups=161(glance)

去nfs服务器上创建对应ID和用户组

groupadd -g 161 glance				# -g 用于指定新用户组的组ID 
useradd glance -g 161 -u 161	# -u由用于指定新用户的id
id glance		# 查看
如下:
uid=161(glance) gid=161(glance) groups=161(glance)

4,在nfs服务器上配置共享目录

将/mnt/test/目录的所有权(owner)和所属组(group)都修改为glance用户和glance组

mkdir /mnt/test
chown glance:glance /mnt/test/

5,配置NFS服务器配置文件

vi /etc/exports(是一个空白文件)
添加如下内容:
/mnt/test *(rw,anongid=161,anonuid=161)
systemctl restart nfs-serve

检查共享是否正常

showmount -e命令用于显示NFS服务器上当前导出(export)的共享目录列表及其访问权限

这样就是成功:

showmount -e
Export list for nsf-server:
 /mnt/test *
systemctl enable nfs-server

6,回到controller测试

[root@controller ~]# ll /var/lib/glance/images/ -d
drwxr-x--- 2 glance glance 50 Feb 25 17:59 /var/lib/glance/images/
[root@controller ~]# mount 192.168.25.210:/mnt/test /var/lib/glance/images/
[root@controller ~]# ll /var/lib/glance/images/ -d
drwxr-xr-x 2 glance glance 6 Feb 26  2023 /var/lib/glance/images/

拓展解释:

关于这个权限怎么看的问题:文件或目录权限的符号表示法

有10个字符,----------

第一个字符:如果是文件,则仍然为 - ,如果是文件夹/目录,则为 d

剩下的9个字符

在这9个字符中,前三个表示属主的权限,中间三个表示属组的权限,最后三个表示其它用户的权限

字符表示:读取(r)、写入(w)、执行(x),-表示没有权限

可以看到

挂载前,我们的属主权限为rwx(所有权限),属组权限为r-x(读取、执行)

挂载后,我们的属主权限为rwx(所有权限),属组权限为r-x(读取、执行),其它用户权限为r-x(读取、执行)

openstack image create test-glance --file cirros-0.3.4-x86_64-disk.img

查看目录下有没有刚刚创建的镜像的id

ls /var/lib/glance/images
ls /mnt/test

4,Redis主从

概念:

redis是一个存储数据的系统,主要用于数据库这种比较重要的数据环境中,而主从就是指多个redis系统同时工作,并且相互检测,当当前主redis出现故障停止后,其它redis顶岗工作

它可以用作数据库、缓存和消息中间件。Redis支持多种数据结构

包括字符串(String)、哈希表(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)等

这些数据结构使得Redis具有丰富的数据操作能力

在 Redis 中,数据存储在内存中,并且可以选择将数据异步地持久化到磁盘上,以便在重启时能够恢复数据

1,上传软件包、配置主机映射(双节点都搞)

2,解压软件包,安装里面的RPM离线包(双节点都搞)

install -y /root/redis/*.rpm

3,修改配置文件,然后启动redis(双节点都搞)

以下所有修改都是这个配置文件:/etc/redis.conf

3.1,绑定所有ip地址以便从节点链接

修改内容:

bind 0.0.0.0   

直接注释掉也有同样的效果

3.2,关闭保护模式

修改内容:

protected-mode no

解释:

protected-mode 设置为 yes 时

Redis 只会接受来自本地环回地址 (127.0.0.1) 的连接请求,拒绝外部网络的连接请求,防止未经授权的访问。

protected-mode 设置为 no 时,允许 Redis 接受来自任何网络接口的连接请求。

3.3,开启appendonly

修改内容:

appendonly yes

解释:

appendonly 是一种持久化选项,在 Redis 服务器关闭时将数据以追加的方式写入到磁盘上的持久化文件中。

开启 appendonly 模式后,Redis 会将所有接收到的写命令(包括插入、更新和删除操作)追加到一个只能追加的日志文件中,这样可以确保即使在服务器出现意外宕机或停机的情况下,数据也不会丢失

3.4,设置 Redis 服务器的密码

修改内容:

requirepass 123456

注意:

设置了密码后,客户端连接 Redis 服务器时需要使用 AUTH 命令提供密码进行认证

输入AUTH 123456 登陆redis服务器

3.5,启动redis并设置自启动

(还要继续配置从节点,所以这一步只有主节点做)

systemctl start redis
systemctl enable redis

3.6,连接一下本地的redis服务器(下面这种情况说明正确) 跟验证数据库那些服务一样的

[root@node ~]# redis-cli -a 123456 
127.0.0.1:6379>

4,从节点配置

以下所有修改都是这个配置文件:/etc/redis.conf

4.1,配置当前主机为node的从节点

修改内容:

slaveof node 6379

(刚开始配置hosts文件就是为了这里,当然也可以填ip)

解释:

连接到名为 “node” 的 Redis 主节点,并监听主节点的默认端口 6379

4.2.配置主节点连接密码

masterauth 123456

解释:

从节点会自动使用配置文件中指定的密码进行主节点的身份验证,而不需要再手动输入 AUTH 命令来进行认证

4.3,启动并设置自启动

systemctl start redis
systemctl enable redis

5,主节点检查

登陆本机redis服务器

[root@node ~]# redis-cli -a 123456 
127.0.0.1:6379> info replication
role:master
connected_slaves:1     #《《《《《发现这里为1,表示有一个连接
#下面一行也正好是我们的node-2的ip
slave0:ip=192.168.25.152,port=6379,state=online,offset=127,lag=0
master_repl_offset:127
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:126

至此redis主从完成

如果有三台主机一起做的话,可以主动关闭redis主节点,然后查看其它两个有没有自动成为主节点

5,Linux 系统调优-脏数据回写

在计算机系统中,数据在硬盘上是持久存储的,而内存则用于临时存储数据以便快速访问和处理。

数据通常从硬盘读取到内存中进行处理,然后在需要时再写回到硬盘上

什么是脏数据

在一些情况下,比如我们编辑一个文本内容,内容会首先被读取到内存,修改也是在内存,在修改了没保存的情况下,就会出现内存中数据与硬盘中数据不一致的数据,这些数据就是脏数据

修改配置文件: /etc/sysctl.conf

修改内容:

vm.dirty_expire_centisecs = 6000       

这个参数设置了脏数据在内存中的过期时间,超过这个时间后系统会将脏数据写回磁盘

6,Glance 调优

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

修改内容:

workers = 2

7,Ceph部署

Ceph(Ceph是一个开源分布式存储系统)是一个强大且灵活的分布式存储系统。

适用于需要大规模存储的场景,例如云计算、大数据分析、虚拟化环境等。通过其弹性、可扩展性和高度可靠的特性,Ceph 已成为许多组织选择的存储解决方案之一

1,准备三台主机,分别改名为node1、node2、node3 (略)

2,配置主机映射 (略)

3,配置yum源 (略)

4,对节点进行分盘 (略)

使用fdisk /dev/sdb,创建OSD要用

5,配置ssh免密钥登陆 (略)

以上步骤和之前的都是一样的,最重要的是三个节点都要做,全部都用本地源即可

这里有个小技巧,可以在一台设备上做完前四步,然后克隆就好了

在这里,本地缺少了一些环境,跟着文章补充环境在centos7的Python2.7.5环境中安装部署ceph集群所需的一些Python依赖_requires: python-prettytable-CSDN博客

5,使用ceph-deploy部署ceph集群

5.1,安装ceph-deploy

ceph-deploy是一个用于快速部署和管理Ceph存储集群的工具

安装命令:

yum install -y ceph-deploy 

5.2,使用ceph-deploy命令创建一个新的Ceph集群配置文件

mkdir /etc/ceph
cd /etc/ceph

进入这个文件夹,执行以下命令生成Ceph集群配置文件

ceph-deploy new ceph-node1

执行后会生成:

ceph.conf、ceph-deploy-ceph.log、ceph.mon.keyring【集群配置文件和密钥文件】

注意:后面所有操作,都需要在存放这三个文件的文件夹下执行

5.3,使用ceph-deploy在所有节点上安装Ceph软件包

这里解释一个参数:

–no-adjust-repos告诉 ceph-deploy 在安装过程中不要调整软件源的设置,也就是只用我们本地源

ceph-deploy install ceph-node1 ceph-node2 ceph-node3 --no-adjust-repos

5.4,结束后,去各个节点检查

输入:

ceph -v

显示版本号就算成功

5.5,在ceph-node1上创建初始的 Ceph Monitor节点

在Ceph分布式存储集群中,Monitor节点负责监控集群中的其他节点状态、数据分布情况以及一致性等信息

输入:创建

ceph-deploy mon create-initial

此时通过 ceph -s查看集群状态为HEALTH_WARN,现在是警告状态,因为还没有osdmgr

6,创建OSD

首先要确保分盘已经完成,

6.1,将这些分区添加至osd

全部在ceph-node1上执行

如果一开始配置了ssh免密钥,这里就只需要等着执行,没有配置需要等着输密码

osd是资源类型,create是创建,–data 指明用的分区,ceph-node1,2,3指定操作的节点

ceph-deploy osd  create  --data /dev/sdb1 ceph-node1
ceph-deploy osd  create  --data /dev/sdb1 ceph-node2
ceph-deploy osd  create  --data /dev/sdb1 ceph-node3

此时通过 ceph -s 查看集群状态依然为HEALTH_WARN,因为还没有mgr

7,安装mgr

如果一开始配置了ssh免密钥,这里就只需要等着执行,没有配置需要等着输密码

ceph-deploy mgr create ceph-node1 ceph-node2 ceph-node3

此时通过 ceph -s 查看集群状态依然为HEALTH_WARN,因为还没有禁用不安全模式

8,禁用不安全模式

当集群处于安全模式时,它会发出警告并限制某些操作,以防止可能导致数据丢失或破坏的情况。

输入下面命令禁用:

ceph config set mon \
auth_allow_insecure_global_id_reclaim false

此时集群状态就变成了HEALTH_OK

9,给其它节点开发权限,进行灾备处理

指针对灾难性事件而设计的一系列措施和流程,旨在确保组织可以在灾难发生时迅速恢复业务运作,并最大程度地减少损失

ceph-deploy admin ceph-node{1,2,3}

至此部署结束

10,创建pool

pool是ceph 存储集群中用于存储数据的基本单元,用于存储对象、块设备或文件系统。对于不同类型的数据(如虚拟机磁盘、镜像或卷),创建独立的 pool 可以提供更好的组织和性能调优

OSD 是 Ceph 存储集群中存储节点的基本单元

3 个 Ceph 节点,每个节点上有 3 个分区,这意味着总共有 9 个 OSD

PG 是 Ceph 存储集群中数据分布的基本单位

OSD * 100至300之间的数字得出PG数量

我们的测试环境中,只需要将pg数量定位32或64即可

ceph osd pool create vms 64
ceph osd pool create images 64
ceph osd pool create volumes 64
ceph osd lspools

8,Glance 对接 Ceph 存储

修改这个配置文件:/etc/glance/glance-api.conf

# 指定 Glance 支持的存储后端类型
# 包括rbd(Rados Block Device)、file(本地文件)和http(HTTP 存储)
stores = rbd,file,http

# 指定默认的存储后端类型为 rbd,即使用 Ceph RBD 作为默认存储后端。
default_store = rbd

# 指定RBD存储时每个对象(chunk)的大小,单位为MB。在这里设置为8MB。
rbd_store_chunk_size = 8

# 指定 Ceph 集群中用于存储 Glance 镜像的 RBD 存储池名称为 "images"。
rbd_store_pool = images

# 指定连接 Ceph 集群时使用的用户身份为 "glance"。
rbd_store_user = glance

# 指定 Ceph 集群的配置文件路径
# Glance 将使用此配置文件来连接到 Ceph 存储集群。
rbd_store_ceph_conf = /etc/ceph/ceph.conf

# 设置为 True 时,允许通过 API 直接访问镜像的 URL
# 而不是重定向到 Swift 或 S3 存储等,默认为 False。
show_image_direct_url = True
systemctl restart openstack-glance*
openstack image create \
--min-disk 10 \
--min-ram 1024 \
--file cirros-0.3.4-x86_64-disk.img cirros1
rbd ls images

如果有刚刚在controller创建的镜像id,说明成功

后续两题在本地训练需要准备工作

需要环境为

①完整搭建的OpenStack平台

②完整部署的ceph集群

在ceph集群

1,创建并初始化存储池

ceph osd pool create vms 32
ceph osd pool create images 32
ceph osd pool create volumes 32
rbd pool init vms
rbd pool init images
rbd pool init volumes

2,创建用户,并为客户端赋予权限、创建密钥并发送【发送过程需要输入密码】

tee用于将执行命令的输出结果写入指定文件中,下面的命令是直接将生成的密钥写道controller和compute的文件中,不用我们再去手写了

ceph auth get-or-create client.glance \
mon 'allow *' \
osd 'allow *' \
mgr 'allow *' \
| ssh 192.168.25.100 \
tee /etc/ceph/ceph.client.glance.keyring
# 给controller节点发
ceph auth get-or-create client.cinder \
mon 'allow *' \
osd 'allow *' \
mgr 'allow *' \
|ssh 192.168.25.100 \
tee /etc/ceph/ceph.client.cinder.keyring

# 给compute节点发
ceph auth get-or-create client.cinder \
mon 'allow *' \
osd 'allow *' \
mgr 'allow *' \
|ssh 192.168.25.200 \
tee /etc/ceph/ceph.client.cinder.keyring

3,发送主配置文件**【发送过程需要输入密码】**

scp ceph.conf 192.168.25.100:/etc/ceph/                                                                                                                                     100%  202   224.6KB/s   00:00    
scp ceph.conf 192.168.25.200:/etc/ceph/

在OpenStack双节点中

这里是compute节点配置libvirt

误区:这个UUID是用来标记秘密对象的

秘密对象(secret object)是一种用于存储敏感信息(如密码、密钥等)的机制,用于对虚拟机实例进行认证和加密

[root@compute ceph]# ID=$(uuidgen)
[root@compute ceph]# echo $ID
674e1fe8-23f9-4ada-a2f9-2aac2f01e69c
[root@compute ceph]# cat >> secret.xml << EOF
# 这俩参数,依次为:表示secret不临时,表示secret不私有
> <secret ephemeral='no' private='no'>
# 引用ID
>  <uuid>$ID</uuid>
# 指明secret用途为ceph
>  <usage type='ceph'>
# 定义 secret名称
>   <name>client.cinder secret</name>
>  </usage>
> </secret>
> EOF
# virsh secret-define 
# 这是一个用于定义秘密对象的 virsh 命令
[root@compute ceph]# virsh secret-define --file secret.xml 
Secret 674e1fe8-23f9-4ada-a2f9-2aac2f01e69c created
# virsh secret-set-value
# 这是用于设置秘密对象的值的 virsh 命令
[root@compute ceph]# virsh secret-set-value \
# --secret ${ID}
# 这个选项指定了要设置值的秘密对象的 UUID,${ID} 是之前生成的 UUID。
> --secret ${ID} \
# --base64:这个选项表示后面提供的值是经过 Base64 编码的。
# awk是文本处理工具
> --base64 $(cat ceph.client.cinder.keyring |grep key |awk -F ' ' '{print $3}')  
Secret value set

awk -F ' ' '{print $3}' 这部分命令中的 -F ' ' 表示使用空格作为字段的分隔符,'{print $3}' 表示打印出每行的第三个字段

这里留有疑问,随后单独运行cat ceph.client.cinder.keyring |grep key |awk -F ' ' '{print $3}'看看效果

[root@compute ceph]# virsh secret-list
 UUID                                  Usage
--------------------------------------------------------------------------------
 674e1fe8-23f9-4ada-a2f9-2aac2f01e69c  ceph client.cinder secret

接下来,为OpenStack双节点新增ceph的yum源(略)

配置好yum源后:

[root@compute ceph]# yum install -y ceph-common python-rbd
[root@controller ceph]# yum install -y ceph-common python-rbd
## 计算节点
[root@compute ceph]# ll
total 16
-rw-r--r-- 1 cinder cinder  64 Feb 17 01:04 ceph.client.cinder.keyring
-rw-r--r-- 1 root   root   202 Feb 17 01:11 ceph.conf
-rw-r--r-- 1 root   root    92 Jun 30  2021 rbdmap
-rw-r--r-- 1 root   root   165 Feb 17 01:19 secret.xml
[root@compute ceph]# chown -R cinder:cinder ceph.client.cinder.keyring
## 控制节点
[root@controller ceph]# ll
total 16
-rw-r--r-- 1 root root  64 Feb 17 01:02 ceph.client.cinder.keyring
-rw-r--r-- 1 root root  64 Feb 17 00:58 ceph.client.glance.keyring
-rw-r--r-- 1 root root 202 Feb 17 01:11 ceph.conf
-rw-r--r-- 1 root root  92 Jun 30  2021 rbdmap
[root@controller ceph]# chown -R glance:glance ceph.client.glance.keyring 
[root@controller ceph]# chown -R cinder:cinder ceph.client.cinder.keyring 

总结刚刚做的操作:

1,通过 ceph auth get-or-create 命令直接为用户生成认证密钥并设置权限(这个认证密钥是用于访问 Ceph 存储集群的)

2,发送至双节点

3,发送主配置文件

4,在compute节点中

4.1,生成一个uuid(用于标识密钥文件)

4.2,编写secret.xml,并用它创建一个秘密对象(为了在 compute 节点上存储和管理认证密钥)

4.3,关联秘密对象和密钥文件

5,接下来,在相应服务的配置文件中修改uuid,在需要认证的时候,libvirt就会自动找存放认证密钥的秘密对象,并用它认证

接下来的操作(除了最后验证的那一步),都是在OpenStack集群种做

9,Cinder 对接 Ceph 存储

修改这个配置文件:/etc/cinder/cinder.conf

[ceph]	# 这一块是手动添加的,也可以在文件中找

volume_driver = cinder.volume.drivers.rbd.RBDDriver

# 定了该后端存储的名称为 "ceph"
# 这个名称将在 Cinder 配置中用于标识这个后端存储。
volume_backend_name = ceph

# 指定在 Ceph 集群中用于存储 Cinder 卷的 RBD 存储池的名称为 "volumes"
rbd_pool = volumes

# 定连接 Ceph 集群时使用的用户身份为 "cinder"。
rbd_user = cinder

# 指定连接 Ceph 集群所需的配置文件路径为 "/etc/ceph/ceph.conf"。
rbd_ceph_conf = /etc/ceph/ceph.conf

# 设置是否从快照中创建卷时展平卷,即删除快照的关联。
# 在这里设置为 false,表示不展平卷
rbd_flatten_volume_from_snapshot = false

# 指定用于加密和认证的 UUID,提供安全访问 Ceph 存储的凭证。
# 这个UUID对应的是之前创建并设置的用于存储 Ceph 客户端密钥的 libvirt secret 的标识符。
rbd_secret_uuid = 674e1fe8-23f9-4ada-a2f9-2aac2f01e69c

# 指定卷克隆的最大深度,默认为 5,限制了卷克隆的次数。
rbd_max_clone_depth = 5

# 指定 RBD 存储时每个对象(chunk)的大小,单位为 MB。在这里设置为 4MB。
rbd_store_chunk_size = 4

# 指定连接 Ceph 集群的超时时间,-1 表示无超时限制。
rados_connect_timeout = -1

# 指定与 Glance 服务交互时使用的 API 版本号。
glance_api_version = 2
systemctl restart openstack-cinder*
openstack volume type create  ceph

cinder \
--os-username admin \
--os-tenant-name admin type-key ceph set volume_backend_name=ceph

openstack volume create ceph-test --type ceph --size 1

openstack volume listopenstack volume list
[root@ceph-node1 ceph]# rbd ls volumes
volume-5a7f3b00-89fa-43d7-8942-c56414575d76

10,Nova 对接 Ceph 存储

修改配置文件:/etc/nova/nova.conf

[libvirt]
# 指定使用 RBD(Rados Block Device)作为镜像存储类型
# 表示 Nova 使用 Ceph 的 RBD 驱动来管理镜像
images_type = rbd
# 指定了在 Ceph 集群中用于存储 Nova 镜像的 RBD 存储池的名称为 "vms"
images_rbd_pool = vms
# 指定连接 Ceph 集群时使用的 Ceph 配置文件的路径为 "/etc/ceph/ceph.conf"
# 该配置文件包含了连接到 Ceph 存储集群所需的配置信息。
images_rbd_ceph_conf = /etc/ceph/ceph.conf
# 指定连接 Ceph 集群时使用的用户身份为 "cinder"
# 即在 Ceph 集群中具有访问权限的用户
rbd_user = cinder
# 指定用于认证和访问 Ceph 存储集群的 UUID。
# 这个UUID对应之前创建并设置的 libvirt secret
# 包含用于访问 Ceph 存储集群的安全凭据。
rbd_secret_uuid = 674e1fe8-23f9-4ada-a2f9-2aac2f01e69c
[root@compute ~]# systemctl restart openstack-cinder*
# 命令创建一个镜像
openstack image create \
--disk-format qcow2  \
--file /opt/iaas/images/cirros-0.3.4-x86_64-disk.img  cirros_nova

# 命令创建一个云主机实例
openstack server create \
--image cirros_nova \
--flavor m1.tiny server1
[root@ceph-node1 ceph]# rbd ls vms
ffa9407b-db2d-4141-bbde-d5411d05af9f_disk

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

修改这个配置文件:/etc/sysctl.conf

# 表示 Linux 内核中套接字接收缓冲区的默认大小(以字节为单位
net.core.rmem_default=358400

# 表示 Linux 内核中套接字接收缓冲区的最大大小(以字节为单位)
net.core.rmem_max=460800

# 表示 Linux 内核中套接字发送缓冲区的默认大小(以字节为单位)
net.core.wmem_defult=358400

# 表示 Linux 内核中套接字发送缓冲区的最大大小(以字节为单位)
net.core.wmem_max=460800

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/936447.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Please activate LaTeX Workshop sidebar item to render the thumbnail of a PDF

Latex代码中使用pdf图片&#xff0c;无法预览&#xff0c;提示&#xff1a; Please activate LaTeX Workshop sidebar item to render the thumbnail of a PDF 解决办法&#xff1a; 点击左边这个刷新下即可

QT:Widgets中的事件

事件的处理 (1)重新实现部件的paintEvent()、mousePressEvent()等事件处理函数。这是最常用的一种方法&#xff0c;不过它只能用来处理特定部件的特定事件。 (2)重新实现notify()函数。这个函数功能强大&#xff0c;提供了完全的控制&#xff0c;可以在事件过滤器得到事件之前…

Windows如何安装go环境,离线安装beego

一、安装go 1、下载go All releases - The Go Programming Language 通过网盘分享的文件&#xff1a;分享的文件 链接: https://pan.baidu.com/s/1MCbo3k3otSoVdmIR4mpPiQ 提取码: hxgf 下载amd64.zip文件&#xff0c;然后解压到指定的路径 2、配置环境变量 需要新建两个环境…

AI Agent:重塑业务流程自动化的未来力量(2/30)

《AI Agent&#xff1a;重塑业务流程自动化的未来力量》 摘要&#xff1a;整体思路是先介绍 AI Agent 的基本情况&#xff0c;再深入阐述其实现业务流程自动化的方法和在不同领域的应用&#xff0c;接着分析其价值和面临的挑战&#xff0c;最后得出结论&#xff0c;为读者全面…

R语言的数据结构-矩阵

【图书推荐】《R语言医学数据分析实践》-CSDN博客 《R语言医学数据分析实践 李丹 宋立桓 蔡伟祺 清华大学出版社9787302673484》【摘要 书评 试读】- 京东图书 (jd.com) R语言医学数据分析实践-R语言的数据结构-CSDN博客 矩阵是一个二维数组&#xff0c;矩阵中的元素都具有相…

springboot+javafx使用aop切面导致的fx:id不能被注入问题

记录一个我遇到得问题 问题描述 我本来使用AOP切面来进行全局异常管理&#xff0c;但是使用AOP之后fxml中通过fx:id绑定得参数无法被注入 Slf4j Component Aspect public class GlobalExceptionAspect {AfterThrowing(pointcut "execution(* com.shkj.videoclassifica…

STM32 HAL库 + LM2904运算放大器 + ADC + 4-20ma液位传感器:电路设计及代码实现

4-20ma液位传感器在工业自动化和日常应用中非常常见&#xff0c;例如水位监测、液体储罐管理等。本文将结合STM32 HAL库&#xff0c;带你实现一个简单的液位监测demo&#xff0c;从电路设计到代码实现&#xff0c;实现通过单通道ADC采集4-20ma液位传感器的信号&#xff0c;并通…

MongoDB-固定集合(Capped Collection)

在 MongoDB 中&#xff0c;固定集合&#xff08;Capped Collection&#xff09;是一种具有特殊属性的集合。固定集合具有一个固定的最大大小&#xff0c;并且一旦达到该大小时&#xff0c;最早插入的文档将会被自动删除&#xff0c;以便为新的文档腾出空间。固定集合的这种特性…

Vue2 基础

Vue 2 是 Vue.js 的第二个主要版本&#xff0c;于 2016 年发布。它是一个渐进式的 JavaScript 框架&#xff0c;以其简单、灵活、易用性高而广受欢迎。Vue 2 主要专注于构建用户界面&#xff08;UI&#xff09;&#xff0c;并且非常适合用于构建单页应用&#xff08;SPA&#x…

2450.学习周刊-2024年50周

封面 人生五个球 ✍优秀博文 面对老板安排的工作&#xff0c;事事有回应&#xff0c;有必要吗&#xff1f; 职场精英进阶手册&#xff1a;工作推进五原则&#xff0c;让你合理高效地利用时间 上个班而已&#xff0c;千万别畏手畏脚 理解了雷军说的SU7要守正出奇&#xff0…

基于Llamaindex的网页内容爬取实战

目的 本文不关注如何解析网页 html 元素和各种 python 爬虫技术&#xff0c;仅作为一种网页数据的预处理手段进行研究。Llamaindex 也并不是爬虫技术的集大成者&#xff0c;使用它是为了后续的存查一体化。 安装依赖 pip install llama-index-readers-web # pip install llam…

Excel拆分脚本

Excel拆分 工作表按行拆分为工作薄 工作表按行拆分为工作薄 打开要拆分的Excel文件&#xff0c;使用快捷键&#xff08;AltF11&#xff09;打开脚本界面&#xff0c;选择要拆分的sheet&#xff0c;打开Module&#xff0c;在Module中输入脚本代码&#xff0c;然后运行脚本 Su…

go语言zero项目通过Supervisor启动与停用的管理

为了让Go项目通过 Supervisor 启动与重启&#xff0c;您需要确保已经正确安装和配置了 Supervisor。接下来是详细的步骤来配置您的 Go 项目&#xff0c;使其可以通过 Supervisor 管理。 ### 配置 Go 项目 首先&#xff0c;确保您的 Go 项目可以编译成一个可执行文件&#xff…

【ABAP SAP】开发-BUG修补记录_采购申请打印时品名规格品牌为空

项目场景&#xff1a; TCODE:自开发程序ZMMF004 采购申请打印 问题描述 ZMMF004打印的时候&#xff0c;有的采购申请的品名、规格、品牌为空 原因分析&#xff1a; 1、首先我通过写SQL语句查底表来看这几条采购申请本身有无品名、规格、品牌 SQL语句如下&#xff0c;只需修…

汽车租赁系统数据库 E-R 图设计

文章目录 汽车租赁系统数据库 E-R 图设计一、实体&#xff08;Entities&#xff09;二、实体间关系&#xff08;Relationships&#xff09;三、数据表&#xff08;Tables&#xff09; 汽车租赁系统数据库 E-R 图设计 一、实体&#xff08;Entities&#xff09; 用户&#xff0…

【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、glfw、glut、QT)第三期

&#x1f37a;三维数字地球系列相关文章如下&#x1f37a;&#xff1a;1【小沐学GIS】基于C绘制三维数字地球Earth&#xff08;456:OpenGL、glfw、glut&#xff09;第一期2【小沐学GIS】基于C绘制三维数字地球Earth&#xff08;456:OpenGL、glfw、glut&#xff09;第二期3【小沐…

Vizcom:AI驱动的草图到3D设计革命

Vizcom是一家领先的AI技术公司,专注于为工业设计师提供工具,将手绘草图快速转化为可制造的3D模型,从而加速产品迭代和创新。 公司背景与愿景 成立于2021年的Vizcom由前Nvidia工业设计师Jordan Taylor创立。Taylor凭借其深厚的创意设计背景和技术敏锐度,看到了生成对抗网络…

【开源免费】基于SpringBoot+Vue.JS课程智能组卷系统(JAVA毕业设计)

本文项目编号 T 009 &#xff0c;文末自助获取源码 \color{red}{T009&#xff0c;文末自助获取源码} T009&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 老…

Linux常用指令-----下

Linux常用指令------上 Linux常用指令------中 Linux系列 文章目录 Linux系列前言一、more指令二、less指令三、head指令和tail指令四、grep指令五、zip指令和unzip指令六、tar指令1、打包压缩2. 预览3. 解压解包 前言 在上一篇博客中&#xff0c;我給大家介绍了cat指令&#…

【安全研究】某黑产网站后台滲透与逆向分析

文章目录 x01. 前言x02. 分析 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python与爬虫领域研究与…