当前位置: 首页 > news >正文

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

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

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

在这里插入图片描述

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::Domainproperties:name: chinaskillsenabled: trueKeystoneProject:type: OS::Keystone::Projectproperties:name: beijing_groupdomain: { get_resource: chinaskills }KeystoneUser:type: OS::Keystone::Userproperties:name: clouddomain: { 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: trueKeystoneProject:type: OS::Keystone::Projectproperties:name: beijing_group# 指明属于哪个域# 注意这里的chinaskillsa是上面的【资源定义】字段# 不是上面的name属性domain: { get_resource: chinaskills }KeystoneUser:type: OS::Keystone::Userproperties: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::Domainproperties:name: chinaskillsenabled: truemy_project:type: OS::Keystone:Projectproperties:name: beijing_group# 就是这里错误,get_resource 没有sdomain: {get_resources: my_domain}enabled: truemy_user:type: OS::Keystone::Userproperties:name: chinaskills# 就是这里错误,get_resource 没有sdomain: {get_resources: my_domain}# 就是这里错误,get_resource 没有sdefault_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-listUUID                                  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  cephcinder \
--os-username admin \
--os-tenant-name admin type-key ceph set volume_backend_name=cephopenstack volume create ceph-test --type ceph --size 1openstack 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

相关文章:

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

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

影像组学+病理组学+深度学习人工智能应用

影像组学 基础学习内容&#xff1a; 特征提取&#xff1a;使用pyradiomics进行形状、纹理、小波变换等特征提取。特征筛选&#xff1a;应用ICC、相关系数、mRMR、Lasso等方法。建模&#xff1a;使用LR、SVM、RF、XGBoost、LightGBM等机器学习算法。模型评估&#xff1a;通过A…...

how to write 述职pptx as a tech manager

As a technical manager, crafting an effective 述职 (performance review) PPT requires you to highlight your leadership, team accomplishments, technical contributions, challenges faced, and future plans. Heres a structured approach to design your PPT: 1. Cov…...

用户发送请求后服务端i/o工作过程

华子目录 服务端i/o介绍磁盘i/o机械磁盘的寻道时间、旋转延迟和数据传输时间常见的机械磁盘平均寻道时间值常见磁盘的平均延迟时间每秒最大IOPS的计算方法 网络i/o网络I/O处理过程磁盘和网络i/o 一次完整的请求在内部的执行过程 服务端i/o介绍 i/o在计算机中指Input/Output&am…...

功能篇:springboot实现防盗链功能

防盗链&#xff08;Hotlink Protection&#xff09;是一种防止其他网站直接链接到你网站的资源&#xff08;如图片、视频等&#xff09;&#xff0c;从而节省带宽和保护内容的有效手段。在Spring Boot应用程序中实现防盗链功能&#xff0c;可以通过多种方式来达成&#xff0c;例…...

MySQL迁移SQLite

将 MySQL 的表结构和数据迁移到 SQLite&#xff0c;可以通过以下步骤实现。这个过程主要包括导出 MySQL 数据库到 SQL 文件&#xff0c;然后将其导入到 SQLite 数据库中。 步骤 1: 导出 MySQL 数据库 首先&#xff0c;需要将 MySQL 数据库导出为一个 SQL 文件。可以使用 mysq…...

嵌入式面试知识点总结 -- 面试篇

1、请你做个简单的自我介绍 把所有工作内容&#xff0c;分类整理出和岗位匹配的能力关键字&#xff0c;然后围绕关键字展开讲。每段经历要用数据来支撑。 例如&#xff1a; 面试官你好&#xff0c;我叫XXX&#xff0c;毕业于XXX&#xff0c;很荣幸参加此次面试。 围绕面试岗位…...

华为OD机试真题---观看文艺汇演问题

华为OD机试中的“观看文艺汇演问题”是一道考察算法与数据结构能力的题目。以下是对该题目的详细解析&#xff1a; 一、题目描述 为了庆祝某个重要节日&#xff08;如中国共产党成立100周年&#xff09;&#xff0c;某公园将举行多场文艺表演。很多演出都是同时进行的&#x…...

类OCSP靶场-Kioptrix系列-Kioptrix Level 2

一、前情提要 二、实战打靶 1. 信息收集 1.1. 主机发现 1.2. 端口扫描 1.3.目录遍历 2.漏洞发现 2.1. 登录框测试 2.2. 发现命令执行 2.3 构造命令执行利用payload 3.提权 3.1. 搜索提权exp 3.2. 查看exp信息 3.3. Privilege Escalation的exp利用 exp_9542 一、前…...

openlane

openlane数据集&#xff0c;lane3d_1000里训练集157807张图片&#xff0c;测试集39981张图&#xff0c;md太多了...

修改vscode设置的原理

转载请标明出处&#xff1a;小帆的帆的专栏 修改vscode设置 首先需要理解的是&#xff0c;vscode的系统设置和插件设置都是通过settings.json文件管理的。 vscode中有三个Settings&#xff0c;三个Settings分别对应三个settings.json文件 Default Settings&#xff1a;默认…...

解决docker环境下aspose-words转换word成pdf后乱码问题

描述 环境&#xff1a;docker 部署工具&#xff1a;Jenkins 需求&#xff1a;本地上传的word文档需要转换成pdf 问题&#xff1a;转换之后的pdf文档出现小框框&#xff08;乱码&#xff09; 转换成PDF的操作 pom&#xff1a; <dependency><groupId>org.apach…...

2024年12月16日Github流行趋势

项目名称&#xff1a;PDFMathTranslate 项目维护者&#xff1a;Byaidu reycn hellofinch Wybxc YadominJinta项目介绍&#xff1a;基于 AI 完整保留排版的 PDF 文档全文双语翻译&#xff0c;支持 Google/DeepL/Ollama/OpenAI 等服务&#xff0c;提供 CLI/GUI/Docker。项目star数…...

ElasticSearch 常见故障解析与修复秘籍

文章目录 一、ElasticSearch启动服务提示无法使用root用户二、ElasticSearch启动提示进程可拥有的虚拟内存少三、ElasticSearch提示用户拥有的可创建文件描述符太少四、ElasticSearch集群yellow状态分析五、ElasticSearch节点磁盘使用率过高&#xff0c;read_only状态问题解决六…...

用 Python Turtle 绘制经典汤姆猫:重温卡通角色的经典魅力

用 Python Turtle 绘制经典汤姆猫&#xff1a;重温卡通角色的经典魅力 &#x1f438; 前言 &#x1f438;&#x1f41e;往期绘画>>点击进所有绘画&#x1f41e;&#x1f40b; 效果图 &#x1f40b;&#x1f409; 代码 &#x1f409; &#x1f438; 前言 &#x1f438; 汤…...

数据结构Day4: 链表函数封装 ; 思维导图

目录 作业&#xff1a;实现链表剩下的操作&#xff1a; 任意位置删除 按位置修改 按值查找返回地址 反转 销毁 运行结果 思维导图 作业&#xff1a;实现链表剩下的操作&#xff1a; 1>任意位置删除 2>按位置修改 3>按值查找返回地址 4>反转 5>销毁 任意…...

用 Python Turtle 绘制一只可爱的小狗:用代码捕捉狗狗的萌态

用 Python Turtle 绘制一只可爱的小狗&#xff1a;用代码捕捉狗狗的萌态 &#x1f438; 前言 &#x1f438;&#x1f41e;往期绘画>>点击进所有绘画&#x1f41e;&#x1f40b; 效果图 &#x1f40b;&#x1f409; 代码 &#x1f409; &#x1f438; 前言 &#x1f438; …...

人工智能浪潮来袭:2024年技术革命与产业变革深度解析@附64页PDF文件下载

随着2024年的到来&#xff0c;人工智能&#xff08;AI&#xff09;技术正以前所未有的速度、广度和深度改变着我们的生产和生活方式。在这篇深度解析中&#xff0c;我们将带您一探AI技术的最新发展、产业应用的现状以及未来的安全治理趋势。 技术革命&#xff1a;AI技术的新范…...

python 下载 b站视频 和音频

video_bvid&#xff1a; import os import requests import json import re from bs4 import BeautifulSoup import subprocess # from detail_video import video_bvid# video_bvid 是一个从外部得到的单个视频ID video_bvid BV1cx421Q7veclass BilibiliVideoAudio:def __in…...

【蓝桥杯选拔赛真题93】Scratch青蛙过河 第十五届蓝桥杯scratch图形化编程 少儿编程创意编程选拔赛真题解析

目录 Scratch青蛙过河 一、题目要求 编程实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、python资料 Scr…...

flink sink kafka的事务提交现象猜想

现象 查看flink源码时 sink kafka有事务提交机制&#xff0c;查看源码发现是使用两阶段提交策略&#xff0c;而事务提交是checkpoint完成后才执行&#xff0c;那么如果checkpoint设置间隔时间比较长时&#xff0c;事务未提交之前&#xff0c;后端应该消费不到数据&#xff0c…...

Oracle 临时表空间管理与最佳实践

Oracle 临时表空间管理与最佳实践 内容摘要 本文深入探讨了Oracle数据库中临时表空间的管理和最佳实践。主要内容包括&#xff1a; 临时表空间的概述及其在Oracle 19c多租户架构中的特点临时表空间组的优势及其创建方法非临时表空间组的临时表空间日常维护操作命令临时表空间…...

Java转C之继承和多态

在C/C中&#xff0c;继承和多态是面向对象编程&#xff08;OOP&#xff09;的两个重要特性。以下将详细讲解C/C中如何实现继承与多态&#xff0c;同时结合Java的对比&#xff0c;帮助理解两者的异同。 继承的实现 C/C中的继承 继承允许一个类&#xff08;派生类/子类&#xf…...

【密码学】ZUC祖冲之算法

一、ZUC算法简介 ZUC算法&#xff08;祖冲之算法&#xff09;是中国自主研发的一种流密码算法&#xff0c;2011年被3GPP批准成为4G国际标准&#xff0c;主要用于无线通信的加密和完整性保护。ZUC算法在逻辑上采用三层结构设计&#xff0c;包括线性反馈移位寄存器&#xff08;L…...

MacOS系统 快速安装appium 步骤详解

在macOS系统上&#xff0c;你可以通过使用nvm&#xff08;Node Version Manager&#xff09;来管理Node.js的版本&#xff0c;并基于nvm安装的Node.js环境来快捷地安装Appium。以下是具体步骤&#xff1a; 一、安装nvm 下载nvm 访问nvm的GitHub仓库&#xff08;nvm GitHub&…...

SEGGER | 基于STM32F405 + Keil - RTT组件07 - J-Scope数据可视化,RTT方式 + DWT定时器时间戳

导言 在上一章节SEGGER | 基于STM32F405 Keil - RTT组件06 - J-Scope数据可视化&#xff0c;使用RTT方式的第4.3章节提到&#xff0c;如果消息包不包含时间戳的话&#xff0c;那么J-Scope的横坐标的单位时间默认是100us&#xff0c;说白了时间戳是假的。会导致如下问题&#x…...

机器学习支持向量机(SVM)算法

一、引言 在当今数据驱动的时代&#xff0c;机器学习算法在各个领域发挥着至关重要的作用。支持向量机&#xff08;Support Vector Machine&#xff0c;SVM&#xff09;作为一种强大的监督学习算法&#xff0c;以其在分类和回归任务中的卓越性能而备受瞩目。SVM 具有良好的泛化…...

浏览器端的 js 包括哪几个部分

一、核心语言部分 1. 变量与数据类型 变量用于存储数据&#xff0c;在 JavaScript 中有多种数据类型&#xff0c;如基本数据类型&#xff08;字符串、数字、布尔值、undefined、null&#xff09;和引用数据类型&#xff08;对象、数组、函数&#xff09;。 let name "…...

【含开题报告+文档+PPT+源码】基于SpringBoot的开放实验管理平台设计与实现

开题报告 设计开放实验管理平台的目的在于促进科学研究与教学的融合。传统实验室常常局限于特定地点和时间&#xff0c;而开放平台可以为学生、教师和研究人员提供一个便捷的交流与共享环境。通过在线平台&#xff0c;他们可以分享实验资源、交流经验&#xff0c;从而促进科学…...

国内可以访问的github地址

国内的IP直接访问github.com官网一般会出现无法访问或者卡顿问题&#xff0c;可以尝试访问下面的国内的代理网站&#xff1a; GitHub Build and ship software on a single, collaborative platform GitHub...

Spring 框架事务管理深度剖析

1.Spring框架的事务管理有哪些优点 pring框架的事务管理具有以下优点&#xff1a; 声明式事务管理&#xff1a;Spring支持声明式事务管理&#xff0c;这使得开发者可以通过配置而不是编程方式来定义事务边界。这种方式简化了事务管理代码&#xff0c;并且可以减少出错的机会。…...

6.1 初探MapReduce

MapReduce是一种分布式计算框架&#xff0c;用于处理大规模数据集。其核心思想是“分而治之”&#xff0c;通过Map阶段将任务分解为多个简单任务并行处理&#xff0c;然后在Reduce阶段汇总结果。MapReduce编程模型包括Map和Reduce两个阶段&#xff0c;数据来源和结果存储通常在…...

SpringBoot - 动态端口切换黑魔法

文章目录 关键技术点核心原理Code 关键技术点 利用 Spring Boot 内嵌 Servlet 容器 和 动态端口切换 的方式实现平滑更新的方案&#xff0c;关键技术点如下&#xff1a; Servlet 容器重新绑定端口&#xff1a;Spring Boot 使用 ServletWebServerFactory 动态设置新端口。零停…...

【Excel】单元格分列

目录 分列&#xff08;新手友好&#xff09; 1. 选中需要分列的单元格后&#xff0c;选择 【数据】选项卡下的【分列】功能。 2. 按照分列向导提示选择适合的分列方式。 3. 分好就是这个样子 智能分列&#xff08;进阶&#xff09; 高级分列 Tips&#xff1a; 新手推荐基…...

Scratch教学作品 | 3D圆柱体俄罗斯方块——旋转视角的全新挑战! ✨

今天为大家推荐一款创意十足的Scratch益智游戏——《3D圆柱体俄罗斯方块》&#xff01;由Ceratophrys制作&#xff0c;这款作品将经典俄罗斯方块与立体圆柱舞台相结合&#xff0c;为玩家带来了前所未有的空间挑战与乐趣。更棒的是&#xff0c;这款游戏的源码可以在小虎鲸Scratc…...

智慧商城:登录页静态布局,axios请求数据切换图形验证

登录页静态布局 在src目录下新建 styles&#xff0c;主要用于 存放公共样式。在该文件夹下新建common.less文件&#xff0c;并将其在main.js中引入 将图片拷贝到src文件夹下的 assets文件夹下 完成静态布局 点击左箭头能返回到首页 所有组件头部返回左箭头颜色都是一样的&#…...

HTML知识点详解教程

文章目录 HTML知识点详解教程1. HTML基本语法2. HTML标签详解2.1 分区标签 <div>2.2 标题标签 <h1> ~ <h6>2.3 段落标签 <p>2.4 图片标签 <img>2.5 列表标签 <ul> 和 <ol>无序列表 <ul>有序列表 <ol> 2.6 超链接标签 &l…...

知识分享第二十八天-数学篇一

组合.二项式定理.常见导数 组合 让我们通过一个具体的例子来理解组合&#xff08;Combinations&#xff09;的概念 假设你有一个装有5个不同颜色球的袋子&#xff1a;红、蓝、绿、黄和紫。你想从中随机抽取3个球&#xff0c; 不考虑顺序&#xff0c;那么你可以有多少种不同的…...

搭建Tomcat(四)---Servlet容器

目录 引入 Servlet容器 一、优化MyTomcat ①先将MyTomcat的main函数搬过来&#xff1a; ②将getClass()函数搬过来 ③创建容器 ④连接ServletConfigMapping和MyTomcat 连接&#xff1a; ⑤完整的ServletConfigMapping和MyTomcat方法&#xff1a; a.ServletConfigMappin…...

P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题

题目描述 输入两个正整数 &#x1d465;0,&#x1d466;0&#xff0c;求出满足下列条件的 &#x1d443;,&#x1d444; 的个数&#xff1a; &#x1d443;,&#x1d444;是正整数。 要求 &#x1d443;,&#x1d444; 以 &#x1d465;0为最大公约数&#xff0c;以 &#x1…...

【泛微系统】自定义报表查看权限

自定义报表查询权限 前言:流程自定义报表,可查看每个报表都有哪些人有权限 --SQLserver写法 select a.id,a.workflowname,自定义报表权限 type,b.reportname,c.typename...

NPM国内镜像源多选择与镜像快速切换工具(nrm)介绍

多镜像源选择 淘宝镜像&#xff08;推荐&#xff09; 镜像地址&#xff1a;https://registry.npmmirror.com 特性&#xff1a;官方推荐&#xff0c;镜像更新速度快&#xff0c;稳定性高。 使用方式&#xff1a; npm config set registry https://registry.npmmirror.com恢复…...

详解负载均衡

什么是负载均衡&#xff1f; 想象一下&#xff0c;你有一家餐厅&#xff0c;当有很多客人同时到来时&#xff0c;如果只有一名服务员接待&#xff0c;可能会导致服务变慢。为了解决这个问题&#xff0c;你可以增加更多的服务员来分担工作&#xff0c;这样每位服务员就可以更快…...

AngularJS 与 SQL 的集成应用

AngularJS 与 SQL 的集成应用 引言 在当今的Web开发领域,AngularJS 和 SQL 是两种非常重要的技术。AngularJS,作为一个强大的前端框架,能够帮助开发者构建复杂且高性能的客户端应用。而SQL(Structured Query Language),作为一种广泛使用的数据库查询语言,是管理关系型…...

ANOMALY BERT 解读

出处&#xff1a; ICLR workshop 2023 代码&#xff1a;Jhryu30/AnomalyBERT 可视化效果&#xff1a; 一 提出动机 动机&#xff1a;无监督 TSAD 领域内&#xff0c;“训练集” 也缺失&#xff1a;真值标签&#xff08;GT&#xff09;&#xff1b;换句话说&#xff0c;一个…...

51c视觉~YOLO~合集6~

我自己的原文哦~ https://blog.51cto.com/whaosoft/12830685 一、其他yolo 1.1 Spiking-YOLO​ 使用常规深度神经网络到脉冲神经网络转换方法应用于脉冲神经网络域时&#xff0c;性能下降的很多&#xff0c;深入分析后提出了可能的解释&#xff1a;一是来自逐层归一化的效率…...

软考高级架构 —— 10.6 大型网站系统架构演化实例 + 软件架构维护

10.6 大型网站系统架构演化实例 大型网站的技术挑战主要来自于庞大的用户&#xff0c;高并发的访问和海量的数据&#xff0c;主要解决这类问题。 1. 单体架构 特点: 所有资源&#xff08;应用程序、数据库、文件&#xff09;集中在一台服务器上。适用场景: 小型网站&am…...

两数之和(Hash表)

优质博文&#xff1a;IT-BLOG-CN 一、题目 给定一个整数数组nums和一个整数目标值target&#xff0c;请你在该数组中找出"和"为目标值target的那两个整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元…...

【问题定位记录】哪些情况可能造成403

起因 403是我们平时在http请求中常见的一种错误码&#xff0c;如果有一天别人问你什么情况下可能造成403&#xff0c;我想大家都能想到的一种就是权限问题&#xff0c;比如鉴权失败会造成403。 但实际上不止这一种原因可能造成403&#xff0c;还有一种可能的原因今天就被我遇…...

SmartX分享:SMTX ZBS的纠删码EC与多副本介绍、对比与其他概念(分布式存储)

目录 背景多副本EC相关概念限制工作方式写入读取编辑故障移除硬盘、节点 EC存储配置EC推荐节点数EC的容错能力EC的数据块数k与m的互相限制 EC和多副本的对比其他涉及到全新存储分层的概念可以参考的原文链接&#xff1a; 背景 近期&#xff0c;SmartX的SMTX ZBS 分布式存储 推…...