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

news2024/12/15 9:18:48

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

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

在这里插入图片描述

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决MAC装win系统投屏失败问题(AMD显卡)

一、问题描述 电脑接上HDMI线后&#xff0c;电脑上能显示有外部显示器接入&#xff0c;但是外接显示器无投屏画面 二、已测试的方法 1 更改电脑分辨&#xff0c;结果无效 2 删除BootCamp&#xff0c;结果无效 3更新电脑系统&#xff0c;结果无效 4 在设备管理器中&#…

huggingface NLP -Transformers库

1 特点 1.1 易于使用&#xff1a;下载、加载和使用最先进的NLP模型进行推理只需两行代码即可完成。 1.2 灵活&#xff1a;所有型号的核心都是简单的PyTorch nn.Module 或者 TensorFlow tf.kears.Model&#xff0c;可以像它们各自的机器学习&#xff08;ML&#xff09;框架中的…

1. 机器学习基本知识(2)——机器学习分类

1.4 机器学习分类 1.4.1 训练监督 1. 监督学习&#xff1a;已对训练数据完成标记 分类&#xff1a;根据数据及其分类信息来进行训练&#xff0c;使模型能够对新的数据进行分类 回归&#xff1a;给出一组特征值来预测目标数值 2. 无监督学习&#xff1a;没有对训练数据进行任…

[C#]使用winform部署ddddocr的onnx模型进行验证码识别文字识别文字检测

【算法介绍】 ddddocr是一个强大的Python OCR&#xff08;光学字符识别&#xff09;库&#xff0c;特别适用于验证码识别。它利用深度学习技术&#xff0c;如卷积神经网络&#xff08;CNN&#xff09;和循环神经网络&#xff08;RNN&#xff09;&#xff0c;对图像中的文字进行…

day10 电商系统后台API——接口测试(使用postman)

【没有所谓的运气&#x1f36c;&#xff0c;只有绝对的努力✊】 目录 实战项目简介&#xff1a; 1、用户管理&#xff08;8个&#xff09; 1.1 登录 1.2 获取用户数据列表 1.3 创建用户 1.4 修改用户状态 1.5 根据id查询用户 1.6 修改用户信息 1.7 删除单个用户 1.8 …

云服务器搭建lamp的wordpress

Ubuntu系统搭建过程目录 一、检查环境1.1 检查是否安装Apache1.2 检查是否安装Mysql1.3 检查是否安装PHP 二、安装Apache截图 三、安装Mysql3.1 安全安装配置3.2 修改权限和密码3.3 重启MySQL服务 四、安装PHP4.1 测试截图 五、下载并安装wordpress以及配置5.1 下载并解压移动5…

C#速成(GID+图形编程)

常用类 类说明Brush填充图形形状,画刷GraphicsGDI绘图画面&#xff0c;无法继承Pen定义绘制的对象直线等&#xff08;颜色&#xff0c;粗细&#xff09;Font定义文本格式&#xff08;字体&#xff0c;字号&#xff09; 常用结构 结构说明Color颜色Point在平面中定义点Rectan…

babeltrace与CTF相关学习笔记-4

babeltrace与CTF相关学习笔记-4 写在前面metadata_string 重头开始定位&#xff0c;操作meta的位置bt_ctf_trace_get_metadata_string stream部分内存的问题 写在前面 正在并行做几件事。 在编译过程中&#xff0c;突然想到&#xff0c;还是再详细研究一下之前的例程。 一是详…

多旋翼无人机 :桨叶设计—跷跷板结构

多旋翼无人机 &#xff1a;桨叶设计——跷跷板结构 前言跷跷板结构 前言 2024年11月&#xff0c;大疆发布了最新的农业无人机T70和T100。其中T70不同于以往的机型&#xff0c;在桨夹处采用了翘翘板结构&#xff0c;大疆将其命名为“挥舞桨叶”。 T70 无人机如下 放大其中螺旋…

低通滤波器,高通滤波器,公式

1 低通滤波器 &#xff1a;输出的是电容的电压 1 低通滤波器可以把低频信号上面的高频信号给滤掉 2 100hz正常通过 3 经过低通滤波器后&#xff0c;波形光滑&#xff0c;绿色波形。一致 4 电容充电速度跟不上输入信号的速度&#xff08;因为加了电阻&#xff0c;限制了电流&…

如何打造个人知识体系?

第一&#xff0c;每个人的基本情况不同。比如我有一个类别跟「设计」相关&#xff0c;这是自己的个人爱好&#xff0c;但不一定适合其他人。再比如我还有一个类别跟「广告文案」相关&#xff0c;因为里面很多表达可以借用到演讲或写作中&#xff0c;这也不适合所有人。 第二&am…

5G中的ATG Band

Air to Ground Networks for NR是R18 NR引入的。ATG很多部分和NTN类似中的内容类似。比较明显不同的是&#xff0c;NTN的RF内容有TS 38.101-5单独去讲&#xff0c;而ATG则会和地面网络共用某些band&#xff0c;这部分在38.101-1中有描述。 所以会存在ATG与地面网络之间的相邻信…

《自动驾驶技术的深度思考:安全与伦理的挑战》

内容概要 在当今这个自动驾驶技术飞速发展的时代&#xff0c;我们生活的节奏恰似一场疾驰的赛车&#xff0c;然而&#xff0c;赛道上并非总是平坦。在这场技术革命中&#xff0c;安全与伦理问题像是潜伏在阴影中的幽灵&#xff0c;轮番考验着我们的道德底线与法律界限。 随着…

hbuilder 安卓app手机调试中基座如何设置

app端使用基座 手机在线预览功能 1.点击运行 2.点击运行到手机或者模拟器 3.制作自定义调试基座 4.先生成证书【可以看我上一篇文档写的有】&#xff0c;点击打包 5.打包出android自定义调试基座【android_debug.apk】,【就跟app打包一样需要等个几分钟】 6.点击运行到手…

【AIGC】如何高效使用ChatGPT挖掘AI最大潜能?26个Prompt提问秘诀帮你提升300%效率的!

还记得第一次使用ChatGPT时&#xff0c;那种既兴奋又困惑的心情吗&#xff1f;我是从一个对AI一知半解的普通用户&#xff0c;逐步成长为现在的“ChatGPT大神”。这一过程并非一蹴而就&#xff0c;而是通过不断的探索和实践&#xff0c;掌握了一系列高效使用的技巧。今天&#…

汽车免拆诊断案例 | 2014款保时捷卡宴车发动机偶尔无法起动

故障现象 一辆2014款保时捷卡宴车&#xff0c;搭载3.0T 发动机&#xff0c;累计行驶里程约为18万km。车主反映&#xff0c;发动机偶尔无法起动。 故障诊断 接车后试车&#xff0c;发动机起动及运转均正常。用故障检测仪检测&#xff0c;发动机控制单元&#xff08;DME&#x…

aippt:AI 智能生成 PPT 的开源项目

aippt&#xff1a;AI 智能生成 PPT 的开源项目 在现代办公和学习中&#xff0c;PPT&#xff08;PowerPoint Presentation&#xff09;是一种非常重要的展示工具。然而&#xff0c;制作一份高质量的PPT往往需要花费大量的时间和精力。为了解决这一问题&#xff0c;aippt项目应运…

【泛微系统】流程发起次数报表

流程发起次数报表 应用场景: 查询所有发起过业务流程的员工的信息,可作为绩效考核、系统使用情况等依据; 如何使用该SQL生成系统在线报表,实时查询最新的发起数据? 1、数据库创建视图,并定义一个视图名称如;view_test1 2、系统后台建模引擎-表单-右键创建一个虚拟表单…

【电子元器件】电感基础知识

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时&#xff0c;也能帮助其他需要参考的朋友。如有谬误&#xff0c;欢迎大家进行指正。 一、 电感的基本工作原理 1. 电感的基本工作原理如下&#xff1a; &#xff08;1&#xff09; 当线圈中有电流通过时&#…

IDEA 修改格式化仅格式化本次改动代码

最近总是发现格式化的时候会格式化文件所有代码&#xff0c;提交Git 后再看提交日志&#xff0c;就很不清晰。修改方式如下 中文&#xff1a; 格式化代码快捷键[中文配置]&#xff1a; 英文&#xff1a; 格式化代码快捷键[英文配置]&#xff1a;