ceph 部署

news2024/11/23 3:24:07

端口号

NFS 2049

rpcbind 111

NFS 目录越深,写入性能越差

操作简单,

一.前言:存储知识

1、存储基础

单机存储设备

【1】DAS(直接附加存储,是直接接到计算机的主板总线上去的存储)

IDE、SATA、SCSI、SAS、USB 接口的磁盘

所谓接口就是一种存储设备驱动下的磁盘设备,提供块级别的存储

【2】NAS(网络附加存储,是通过网络附加到当前主机文件系统之上的存储)

NFS、CIFS、FTP

文件系统级别的存储,本身就是一个做好的文件系统,通过nfs接口在用户空间输出后,客户端基

于内核模块与远程主机进行网络通信,把它转为好像本地文件系统一样来使用,这种存储服务是没

办法对它再一次格式化创建文件系统块的

【3】SAN(存储区域网络)

SCSI协议(只是用来传输数据的存取操作,物理层使用SCSI线缆来传输)、FCSAN(物理层使用

光纤来传输)、iSCSI(物理层使用以太网来传输)

也是一种网络存储,但不同之处在于SAN提供给客户端主机使用的接口是块级别的存储

2.单机存储的问题

(1)存储处理能力不足

传统的IDE的IO值是100次/秒,SATA固态磁盘500次/秒,固态硬盘达到2000-4000次/秒。即使磁

盘的IO能力再大数十倍,也不够抗住网站访问高峰期数十万、数百万甚至上亿用户的同时访问,这

同时还要受到主机网络IO能力的限制。

(2)存储空间能力不足

单块磁盘的容量再大,也无法满足用户的正常访问所需的数据容量限制。

(3)单点故障问题

单机存储数据存在单点故障问题

3.商业存储解决方法

EMC、NetAPP、IBM、DELL、华为、浪潮

4.分布式存储(软件定义的存储 SDS)

Ceph、TFS、FastDFS、MooseFS(MFS)、HDFS、GlusterFS(GFS)
存储机制会把数据分散存储到多个节点上,具有高扩展性、高性能、高可用性等优点。

(1)分布式存储的类型

【1】块存储(例如硬盘,一般是一个存储被一个服务器挂载使用,适用于容器或虚拟机存储卷分

配、日志存储、文件存储)

就是一个裸设备,用于提供没有被组织过的存储空间,底层以分块的方式来存储数据

【2】文件存储(例如NFS,解决块存储无法共享问题,可以一个存储被多个服务器同时挂载,适

用于目录结构的存储、日志存储)

是一种数据的组织存放接口,一般是建立在块级别的存储结构之上,以文件形式来存储数据,而文

件的元数据和实际数据是分开存储的

【3】对象存储(例如OSS,一个存储可以被多服务同时访问,具备块存储的高速读写能力,也具

备文件存储共享的特性,适用图片存储、视频存储)

基于API接口提供的文件存储,每一个文件都是一个对象,且文件大小各不相同的,文件的元数据

和实际数据是存放在一起的

二.、Ceph 概述

1.Ceph 简介

Ceph使用C++语言开发,是一个开放、自我修复和自我管理的开源分布式存储系统。具有高扩展

性、高性能、高可靠性的优点。

Ceph目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack,Kubernetes都可与

Ceph整合以支持虚拟机镜像的后端存储。

粗略估计,我国70%—80%的云平台都将Ceph作为底层的存储平台,由此可见Ceph俨然成为了开

源云平台的标配。目前国内使用Ceph搭建分布式存储系统较为成功的企业有华为、阿里、中兴、

华三、浪潮、中国移动、网易、乐视、360、星辰天合存储、杉岩数据等。 

2.Ceph 优势

(1)高扩展性:去中心化,支持使用普通X86服务器,支持上千个存储节点的规模,支持TB到EB

级的扩展。

(2)高可靠性:没有单点故障,多数据副本,自动管理,自动修复。

(3)高性能:摒弃了传统的集中式存储元数据寻址的方案,采用 CRUSH 算法,数据分布均衡,

并行度高。

(4)功能强大:Ceph是个大一统的存储系统,集块存储接口(RBD)、文件存储接口

(CephFS)、对象存储接口(RadosGW)于一身,因而适用于不同的应用场景。

3.Ceph 架构

自下向上,可以将Ceph系统分为四个层次:

(1)RADOS 基础存储系统(Reliab1e,Autonomic,Distributed object store,即可靠的、自动

化的、分布式的对象存储)

RADOS是Ceph最底层的功能模块,是一个无限可扩容的对象存储服务,能将文件拆解成无数个对

象(碎片)存放在硬盘中,大大提高了数据的稳定性。它主要由OSD和Monitor两个组件组成,

OSD和Monitor都可以部署在多台服务器中,这就是ceph分布式的由来,高扩展性的由来。

(2)LIBRADOS 基础库

Librados提供了与RADOS进行交互的方式,并向上层应用提供Ceph服务的API接口,因此上层的

RBD、RGW和CephFS都是通过Librados访问的,目前提供PHP、Ruby、Java、Python、Go、C

和C++支持,以便直接基于RADOS(而不是整个Ceph)进行客户端应用开发。

(3)高层应用接口:包括了三个部分

【1】对象存储接口 RGW(RADOS Gateway)

网关接口,基于Librados开发的对象存储系统,提供S3和Swift兼容的RESTful API接口。

【2】块存储接口 RBD(Reliable Block Device)

基于Librados提供块设备接口,主要用于Host/VM。

【3】文件存储接口 CephFS(Ceph File System)

Ceph文件系统,提供了一个符合POSIX标准的文件系统,它使用Ceph存储集群在文件系统上存储

用户数据。基于Librados提供的分布式文件系统接口。

(4)应用层:基于高层接口或者基础库Librados开发出来的各种APP,或者Host、VM等诸多客户

端;

4.Ceph 核心组件

Ceph是一个对象式存储系统,它把每一个待管理的数据流(如文件等数据)切分为一到多个固定

大小(默认4兆)的对象数据(Object),并以其为原子单元(原子是构成元素的最小单元)完成

数据的读写。

(1)OSD(Object Storage Daemon,守护进程 ceph-osd)

是负责物理存储的进程,一般配置成和磁盘一一对应,一块磁盘启动一个OSD进程。主要功能是

存储数据、复制数据、平衡数据、恢复数据,以及与其它OSD间进行心跳检查,负责响应客户端

请求返回具体数据的进程等。通常至少需要3个OSD来实现冗余和高可用性。

(2)PG(Placement Group 归置组)

PG 是一个虚拟的概念而已,物理上不真实存在。它在数据寻址时类似于数据库中的索引:Ceph

先将每个对象数据通过HASH算法固定映射到一个 PG 中,然后将 PG 通过 CRUSH 算法映射到

OSD。

(3)Pool

Pool 是存储对象的逻辑分区,它起到 namespace 的作用。每个 Pool 包含一定数量(可配置)的

PG。Pool 可以做故障隔离域,根据不同的用户场景统一进行隔离。

(4)Pool中数据保存方式支持两种类型:

【1】多副本(replicated):类似 raid1,一个对象数据默认保存 3 个副本,放在不同的 OSD

【2】纠删码(Erasure Code):类似 raid5,对 CPU 消耗稍大,但是节约磁盘空间,对象数据保

存只有 1 个副本。由于Ceph部分功能不支持纠删码池,此类型存储池使用不多

(5)Pool、PG 和 OSD 的关系:

一个Pool里有很多个PG;一个PG里包含一堆对象,一个对象只能属于一个PG;PG有主从之分,

一个PG分布在不同的OSD上(针对多副本类型)

【1】Monitor(守护进程 ceph-mon)

用来保存OSD的元数据。负责维护集群状态的映射视图(Cluster Map:OSD Map、Monitor

Map、PG Map 和 CRUSH Map),维护展示集群状态的各种图表, 管理集群客户端认证与授

权。一个Ceph集群通常至少需要 3 或 5 个(奇数个)Monitor 节点才能实现冗余和高可用性,它

们通过 Paxos 协议实现节点间的同步数据。

【2】Manager(守护进程 ceph-mgr)

负责跟踪运行时指标和 Ceph 集群的当前状态,包括存储利用率、当前性能指标和系统负载。为外

部监视和管理系统提供额外的监视和接口,例如 zabbix、prometheus、 cephmetrics 等。一个

Ceph 集群通常至少需要 2 个 mgr 节点实现高可用性,基于 raft 协议实现节点间的信息同步。

【3】MDS(Metadata Server,守护进程 ceph-mds)

是 CephFS 服务依赖的元数据服务。负责保存文件系统的元数据,管理目录结构。对象存储和块

设备存储不需要元数据服务;如果不使用 CephFS 可以不安装。

5.OSD 存储引擎

OSD 有两种方式管理它们存储的数据。在 Luminous 12.2.z 及以后的发行版中,默认(也是推荐

的)后端是 BlueStore。在 Luminous 发布之前, 默认是 FileStore, 也是唯一的选项。

(1)Filestore

FileStore是在Ceph中存储对象的一个遗留方法。它依赖于一个标准文件系统(只能是XFS),并结

合一个键/值数据库(传统上是LevelDB,现在BlueStore是RocksDB),用于保存和管理元数据。

FileStore经过了良好的测试,在生产中得到了广泛的应用。然而,由于它的总体设计和对传统文件

系统的依赖,使得它在性能上存在许多不足。

(2)Bluestore

从 Ceph 12.2.0(Luminous) 版本开始的。在 Luminous 版本中,BlueStore 被引入作为一种新

的、高性能的 OSD 存储引擎,以替代旧的 FileStore 引擎。

在 Ceph 中,BlueStore 可以提供更快的响应时间和更高的数据吞吐量,同时也具有更好的可靠性

和稳定性。相比之下,旧的 FileStore 存储引擎通常需要更多的 CPU 和内存资源,对 IO 延迟的敏

感度也较高。

FileStore 将对象存储为块设备基础上的文件系统(通常是 XFS)中的文件。

BlueStore 将对象直接存储在原始块设备上,免除了对文件系统层的需要,提高了读写操作速度,

通过直接操作底层块设备来管理数据,而不是传统的文件系统。

这种方法提供了更好的性能和可靠性,因为可以将数据划分为较小的块并使用校验和来检测错误。

此外,BlueStore可以直接与Solid State Drive(SSD)交互,并利用其快速读写速度。

BlueStore还具有可扩展性,可以处理数百万个物理盘和千亿个对象。它实现了动态负载平衡和自

动恢复机制,以确保高可用性和数据可靠性。

6.Ceph 数据的存储过程

(1)客户端从 mon 获取最新的 Cluster Map

(2)在 Ceph 中,一切皆对象。Ceph 存储的数据都会被切分成为一到多个固定大小的对象

(Object)。Object size 大小可以由管理员调整,通常为 2M 或 4M。

每个对象都会有一个唯一的 OID,由 ino 与 ono 组成:

  • ino :即是文件的 FileID,用于在全局唯一标识每一个文件
  • ono :则是分片的编号

比如:一个文件 FileID 为 A,它被切成了两个对象,一个对象编号0,另一个编号1,那么这两个

文件的 oid 则为 A0 与 A1。

OID 的好处是可以唯一标示每个不同的对象,并且存储了对象与文件的从属关系。由于 Ceph 的所

有数据都虚拟成了整齐划一的对象,所以在读写时效率都会比较高。

(3)通过对 OID 使用 HASH 算法得到一个16进制的特征码,用特征码与 Pool 中的 PG 总数取

余,得到的序号则是 PGID 。

即 Pool_ID + HASH(OID) % PG_NUM 得到 PGID

(4)PG 会根据设置的副本数量进行复制,通过对 PGID 使用 CRUSH 算法算出 PG 中目标主和

次 OSD 的 ID,存储到不同的 OSD 节点上(其实是把 PG 中的所有对象存储到 OSD 上)。

即通过 CRUSH(PGID) 得到将 PG 中的数据存储到各个 OSD 组中

CRUSH 是 Ceph 使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。

7.Ceph 版本发行生命周期

(1)Ceph从Nautilus版本(14.2.0)开始,每年都会有一个新的稳定版发行,预计是每年的3月份

发布,每年的新版本都会起一个新的名称(例如,“Mimic”)和一个主版本号(例如,13代表

Mimic,因为“M”是字母表的第13个字母)。

(2)版本号的格式为 x.y.z,x 表示发布周期(例如,13 代表 Mimic,17 代表 Quincy),y 表示

发布版本类型,即

  • x.0.z :y等于 0,表示开发版本
  • x.1.z :y等于 1,表示发布候选版本(用于测试集群)
  •  x.2.z :y等于 2,表示稳定/错误修复版本(针对用户)

8. Ceph 集群部署

目前 Ceph 官方提供很多种部署 Ceph 集群的方法,常用的分别是 ceph-deploy,cephadm 和 二

进制:
(1)ceph-deploy :一个集群自动化部署工具,使用较久,成熟稳定,被很多自动化工具所集

成,可用于生产部署。

(2)cephadm :从 Octopus 和较新的版本版本后使用 cephadm 来部署 ceph 集群,使用容器和

systemd 安装和管理 Ceph 集群。目前不建议用于生产环境。

(3)二进制:手动部署,一步步部署 Ceph 集群,支持较多定制化和了解部署细节,安装难度较

大。

三.基于 ceph-deploy 部署 Ceph 集群

Ceph 生产环境推荐:
1、存储集群全采用万兆网络
2、集群网络(cluster-network,用于集群内部通讯)与公共网络(public-network,用于外部访问Ceph集群)分离
3、mon、mds 与 osd 分离部署在不同主机上(测试环境中可以让一台主机节点运行多个组件)
4、OSD 使用 SATA 亦可
5、根据容量规划集群
6、至强E5 2620 V3或以上 CPU,64GB或更高内存
7、集群主机分散部署,避免机柜的电源或者网络故障

Ceph 环境规划

主机名	Public网络		Cluster网络		  角色
admin	192.168.10.10					  admin(管理节点负责集群整体部署)、client
node01	192.168.10.20	192.168.100.20	  mon、mgr、osd(/dev/sdb、/dev/sdc、/dev/sdd)
node02	192.168.10.30	192.168.100.30	  mon、mgr、osd(/dev/sdb、/dev/sdc、/dev/sdd)
node03	192.168.10.40	192.168.100.40	  mon、osd(/dev/sdb、/dev/sdc、/dev/sdd)
client	192.168.10.50									client

1、关闭 selinux 与防火墙

systemctl disable --now firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config

2、根据规划设置主机名

hostnamectl set-hostname admin
hostnamectl set-hostname node01
hostnamectl set-hostname node02
hostnamectl set-hostname node03
hostnamectl set-hostname client
bash

3、配置 hosts 解析

cat >> /etc/hosts << EOF
192.168.10.10 admin
192.168.10.20 node01
192.168.10.30 node02
192.168.10.40 node03
192.168.10.50 client
EOF

cat /etc/hosts        #查看信息是否配置上去

4、安装常用软件和依赖包

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum -y install epel-release

yum -y install yum-plugin-priorities yum-utils ntpdate python-setuptools python-pip gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel zip unzip ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssh openssl-devel nss_ldap openldap openldap-devel openldap-clients openldap-servers libxslt-devel libevent-devel ntp libtool-ltdl bison libtool vim-enhanced python wget lsof iptraf strace lrzsz kernel-devel kernel-headers pam-devel tcl tk cmake ncurses-devel bison setuptool popt-devel net-snmp screen perl-devel pcre-devel net-snmp screen tcpdump rsync sysstat man iptables sudo libconfig git bind-utils tmux elinks numactl iftop bwm-ng net-tools expect snappy leveldb gdisk python-argparse gperftools-libs conntrack ipset jq libseccomp socat chrony sshpass

5.在 admin 管理节点配置 ssh 免密登录所有节点

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

sshpass -p 'abc1234' ssh-copy-id -o StrictHostKeyChecking=no root@admin
sshpass -p 'abc1234' ssh-copy-id -o StrictHostKeyChecking=no root@node01
sshpass -p 'abc1234' ssh-copy-id -o StrictHostKeyChecking=no root@node02
sshpass -p 'abc1234' ssh-copy-id -o StrictHostKeyChecking=no root@node03

6、配置时间同步

rpm -q chrony
systemctl enable --now chronyd

vim /etc/chrony.conf

server ntp.aliyun.com iburst

timedatectl set-ntp true					#开启 NTP
timedatectl set-timezone Asia/Shanghai		#设置时区
chronyc -a makestep							#强制同步下系统时钟
timedatectl status							#查看时间同步状态
chronyc sources -v							#查看 ntp 源服务器信息
timedatectl set-local-rtc 0					#将当前的UTC时间写入硬件时钟

#重启依赖于系统时间的服务
systemctl restart rsyslog 
systemctl restart crond

#关闭无关服务
systemctl disable --now postfix

7、配置 Ceph yum源

wget https://download.ceph.com/rpm-nautilus/el7/noarch/ceph-release-1-1.el7.noarch.rpm --no-check-certificate

rpm -ivh ceph-release-1-1.el7.noarch.rpm --force

8、执行完上面所有的操作之后重启所有主机(可选)

sync
reboot

部署 Ceph 集群

1、为所有节点都创建一个 Ceph 工作目录,后续的工作都在该目录下进行

mkdir -p /etc/ceph

2、安装 ceph-deploy 部署工具(只在admin节点)

cd /etc/ceph

yum install -y ceph-deploy

ceph-deploy --version

3、在管理节点为其它节点安装 Ceph 软件包

ceph-deploy 2.0.1 默认部署的是 mimic 版的 Ceph,若想安装其他版本的 Ceph,可以用 --release 手动指定版本
cd /etc/ceph
ceph-deploy install --release nautilus node0{1..3} admin

#ceph-deploy install 本质就是在执行下面的命令:
yum clean all
yum -y install epel-release
yum -y install yum-plugin-priorities
yum -y install ceph-release ceph ceph-radosgw

我们执行下面这几条命令

也可采用手动安装 Ceph 包方式,在其它节点上执行下面的命令将 Ceph 的安装包都部署上:(不用再client上安装)

sed -i 's#download.ceph.com#mirrors.tuna.tsinghua.edu.cn/ceph#' /etc/yum.repos.d/ceph.repo
yum install -y ceph-mon ceph-radosgw ceph-mds ceph-mgr ceph-osd ceph-common ceph

4、生成初始配置

(1)关机给admin、node01、node02、node03添加网卡并进行配置;四台机器同样的操作;

cd /etc/sysconfig/network-scripts/

cp ifcfg-ens33 ifcfg-ens36

vim ifcfg-ens36

systemctl restart network

(2)在管理节点运行下述命令,告诉 ceph-deploy 哪些是 mon 监控节点;(只在admin节点)

cd /etc/ceph

ceph-deploy new --public-network 192.168.10.0/24 --cluster-network 192.168.100.0/24 node01 node02 node03

命令执行成功后会在 /etc/ceph 下生成配置文件

ceph.conf                    #ceph的配置文件
ceph-deploy-ceph.log        #monitor的日志
ceph.mon.keyring            #monitor的密钥环文件

5、在管理节点初始化 mon 节点(只在admin节点)

cd /etc/ceph

ceph-deploy mon create node01 node02 node03			
#创建 mon 节点,由于 monitor 使用 Paxos 算法,其高可用集群节点数量要求为大于等于 3 的奇数台

systemctl status ceph-mon@node01.service  (会在其他node节点上启动这个服务)
systemctl status ceph-mon@node02.service
systemctl status ceph-mon@node03.service

ceph-deploy --overwrite-conf mon create-initial		
#配置初始化 mon 节点,并向所有节点同步配置
#将admin的ceph.conf同步到其他几个节点上去
#还会在本机生成一些文件
													
# --overwrite-conf 参数用于表示强制覆盖配置文件
ceph.bootstrap-mds.keyring            #引导启动 mds 的密钥文件
ceph.bootstrap-mgr.keyring            #引导启动 mgr 的密钥文件
ceph.bootstrap-osd.keyring            #引导启动 osd 的密钥文件
ceph.bootstrap-rgw.keyring            #引导启动 rgw 的密钥文件
ceph.client.admin.keyring             #ceph客户端和管理端通信的认证密钥,拥有ceph集群的所有权限 

在 mon 节点上查看自动开启的 mon 进程(node节点)

ps aux | grep ceph

在管理节点查看 Ceph 集群状态(admin)

cd /etc/ceph

ceph -s

查看 mon 集群选举的情况(admin)

ceph quorum_status --format json-pretty | grep leader

扩容 mon 节点
ceph-deploy mon add <节点名称>

6、部署能够管理 Ceph 集群的节点(可选)

注意:一般只有在admin节点上才能使用 ceph -s ;因为只有admin节点才有密钥文件;如果想要其他节点,可通过下面的命令

可实现在各个节点执行 ceph 命令管理集群

cd /etc/ceph
ceph-deploy --overwrite-conf config push node01 node02 node03		
#向所有 mon 节点同步配置,确保所有 mon 节点上的 ceph.conf 内容必须一致;如果一致可省略

ceph-deploy admin node01 node02 node03			
#本质就是把 ceph.client.admin.keyring 集群认证文件拷贝到各个节点

使用后,其他node节点会出现密钥文件;之后就可以使用 ceph -s 的命令

7、部署 osd 存储节点

(1)先给 node节点添加硬盘;三台node节点相同操作

添加完成后,使用命令刷新

echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan

lsblk  查看

(2)如果是利旧的硬盘,则需要先擦净(删除分区表)磁盘(可选,无数据的新硬盘可不做)

cd /etc/ceph
ceph-deploy disk zap node01 /dev/sdb
ceph-deploy disk zap node02 /dev/sdb
ceph-deploy disk zap node03 /dev/sdb

(3)添加 osd 节点(admin节点执行)

ceph-deploy --overwrite-conf osd create node01 --data /dev/sdb
ceph-deploy --overwrite-conf osd create node02 --data /dev/sdb
ceph-deploy --overwrite-conf osd create node03 --data /dev/sdb


ceph-deploy --overwrite-conf osd create node01 --data /dev/sdc
ceph-deploy --overwrite-conf osd create node02 --data /dev/sdc
ceph-deploy --overwrite-conf osd create node03 --data /dev/sdc


ceph-deploy --overwrite-conf osd create node01 --data /dev/sdd
ceph-deploy --overwrite-conf osd create node02 --data /dev/sdd
ceph-deploy --overwrite-conf osd create node03 --data /dev/sdd

(4)查看 ceph 集群状态

lsblk

ceph -s

ceph osd stat   查看osd的进程

ceph osd tree  查看每个osd的状态信息

rados df

8、部署 mgr 节点

ceph osd status    #查看 osd 状态,需部署 mgr 后才能执行

ceph osd df    #查看 osd 容量,需部署 mgr 后才能执行

ceph-mgr守护进程以Active/Standby模式运行,可确保在Active节点或其ceph-mgr守护进程故障时,其中的一个Standby实例可以在不中断服务的情况下接管其任务。根据官方的架构原则,mgr至少要有两个节点来进行工作

cd /etc/ceph

ceph-deploy mgr create node01 node02

之后, 就能 查看 osd 状态和查看 osd 容量

解决 HEALTH_WARN 问题:mons are allowing insecure global_id reclaim问题:

禁用不安全模式:
ceph config set mon auth_allow_insecure_global_id_reclaim false

9、开启监控模块

在 ceph-mgr Active节点执行命令开启

ceph -s | grep mgr

yum install -y ceph-mgr-dashboard

cd /etc/ceph

ceph mgr module ls | grep dashboard

#开启 dashboard 模块
ceph mgr module enable dashboard --force

#禁用 dashboard 的 ssl 功能
ceph config set mgr mgr/dashboard/ssl false

#配置 dashboard 监听的地址和端口
ceph config set mgr mgr/dashboard/server_addr 0.0.0.0
ceph config set mgr mgr/dashboard/server_port 8000

#重启 dashboard
ceph mgr module disable dashboard
ceph mgr module enable dashboard --force

#确认访问 dashboard 的 url
ceph mgr services

#设置 dashboard 账户以及密码
echo "12345678" > dashboard_passwd.txt
ceph dashboard set-login-credentials admin -i dashboard_passwd.txt
  或
ceph dashboard ac-user-create admin administrator -i dashboard_passwd.txt

浏览器访问:http://192.168.10.20:8000 ,账号密码为 admin/12345678

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

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

相关文章

springsecurity 身份认证

Spring Security简介 是一个功能强大且高度可定制的安全框架&#xff0c;它主要为Java程序提供声明式的身份验证&#xff08;认证&#xff09;和访问控制&#xff08;授权&#xff09;功能为基于Spring的企业应用系统提供了全面的安全解决方案&#xff0c;通过声明式的方式管理…

Windows中安装python/cmd中执行python命令无效

1、问题阐述? 本文章提供非常详细的安装教程。 本文章适合于不会安装python或者安装了python后,在cmd中执行python命令无效的情况。 2、下载python python下载官网地址:Download Python | Python.org 在下面的框子中选择你需要的版本 如果是windows选择如下包 如下版本…

基于Jetpack Compose实现的Android Preference

基于Jetpack Compose实现的Android Preference Jetpack Compose实现的Android偏好Preference实现,实现了CheckBoxPreference、EditTextPreference、SingleChoicePreference、SliderPreference等常见的 Preference 类型, 代码如下: 基类Preference :@Composable fun Prefer…

JMeter中进行JDBC协议压测

在使用Jmeter进行性能测试的时候,不仅是需要对业务的接口进行性能并发测试,有的时候还需要专门对服务器进行压测,比如本次给大家介绍的对数据库进行压测. 在JMeter中进行JDBC协议压测&#xff0c;你需要做以下几个步骤&#xff1a; 如何选择JDBC驱动程序 (1).掌握项目所采用…

泉盛UV-K5扩容2Mbit EEPROM

泉盛UV-K5扩容2Mbit EEPROM 步骤 分离前面板与背板。 拆下电池&#xff0c;底部有个空隙&#xff0c;从缝隙撬开背板。分离前面板时注意喇叭连接线&#xff0c;不要扯断了。 分离屏幕。 先从箭头位置向上挑起&#xff0c;屏幕稍微松动即可左右晃动&#xff0c;直至完全取出。注…

记一次docker容器安装MySQL,navicat无法连接报错(10060错误)

今天在云服务器上使用docker部署mysql 8.0.11时&#xff0c;遇到了一个诡异的问题&#xff0c;在云服务器的docker容器内可以连接上mysql&#xff0c;然而在自己电脑上连接mysql时报错&#xff1a;Can‘t connect to MySQL server on localhost (10060) 下面是网上搜寻的几种可…

知识图谱与LLMs:实时图分析(通过其关系的上下文理解数据点)

大型语言模型 (LLM) 极大地改变了普通人获取数据的方式。不到一年前&#xff0c;访问公司数据需要具备技术技能&#xff0c;包括熟练掌握各种仪表板工具&#xff0c;甚至深入研究数据库查询语言的复杂性。然而&#xff0c;随着 ChatGPT 等 LLM 的兴起&#xff0c;随着所谓的检索…

第17集《修习止观坐禅法要》

请大家打开讲义第四十二面&#xff0c;丁六、正修行第六。 这个是我们小止观正宗分的第六科&#xff0c;前面的五科是一个方便&#xff0c;是我们在修习止观的一个前方便&#xff0c;这一科是说明修习止观的正式的方法。 这个方便跟正修的关系&#xff0c;我们可以讲一个譬喻…

keepalive:

keepalive&#xff1a; 调度器的高可用 vip地址在主备之间的切换&#xff0c;主在工作时&#xff0c;vip地址只在主上&#xff0c;主停止工作&#xff0c;vip漂移到备服务器。 在主备的优先级不变的情况下&#xff0c;主恢复工作&#xff0c;vip会飘回到主服务器。 1、配优…

音视频开发—使用FFmpeg将YUV文件编码成H264裸流文件 C语言实现

文章目录 1.准备工作2.压缩编码工作流程3.详细步骤1. 初始化日志和参数检查2. 输入/输出文件的打开3. 查找和初始化编码器4. 打开编码器5. 帧内存的分配和初始化6. 设置转换上下文&#xff08;SWS&#xff09;7. 读取和转换数据8. 编码过程9. 资源清理 4.完整示例代码 1.准备工…

AI大模型探索之旅:深潜大语言模型的训练秘境

在人工智能的浩瀚星空中&#xff0c;大语言模型无疑是最耀眼的星辰之一&#xff0c;它们以无与伦比的语言理解与生成能力&#xff0c;引领着智能交互的新纪元。本文将带您踏上一场探索之旅&#xff0c;深入大语言模型的训练秘境&#xff0c;揭开其背后复杂而精妙的全景画卷。 …

Qt Quick qml自定义控件:qml实现电池控件

qml入门进阶专栏地址:https://blog.csdn.net/yao_hou/category_9951228.html?spm=1001.2014.3001.5482 本篇博客介绍如何使用qml来实现电池控件,效果图如下: 下面给出实现代码 Battery.qml /*电池组件*/import QtQuick 2.15 import QtQuick.Controls 2.15Rectangle {id: b…

Maven学习笔记——如何在pom.xml中通过坐标为项目导入jar包

注意&#xff1a;我们只导入了一个jar包坐标&#xff0c;但右边项目中确多出来了好几个jar包&#xff0c;这是因为我们导入的该jar包所依赖其他jar包&#xff0c;maven自动帮我们导入了进来

Android-- 集成谷歌地图

引言 项目需求需要在谷歌地图&#xff1a; 地图展示&#xff0c;设备点聚合&#xff0c;设备站点&#xff0c;绘制点和区域等功能。 我只针对我涉及到的技术做一下总结&#xff0c;希望能帮到开始接触谷歌地图的伙伴们。 集成步骤 1、在项目的modle的build.gradle中添加依赖如…

Java软件设计模式-单例设计模式

目录 1.软件设计模式的概念 2.设计模式分类 2.1 创建型模式 2.2 结构型模式 2.3 行为型模式 3.单例设计模式 3.1 单例模式的结构 3.2 单例模式的实现 3.2.1 饿汉式-方式1&#xff08;静态变量方式&#xff09; 3.2.2 懒汉式-方式1&#xff08;线程不安全&#xff09; 3.…

【linux】安装cuda11.0、cuDNN教程,简单易懂,包教包会

【linux】安装cuda11.0、cuDNN教程&#xff0c;简单易懂&#xff0c;包教包会 【创作不易&#xff0c;求点赞关注收藏】 文章目录 【linux】安装cuda11.0、cuDNN教程&#xff0c;简单易懂&#xff0c;包教包会一、版本情况介绍二、安装cuda1、到官网找到对应版本进行安装2、对…

【openwrt】Openwrt系统新增普通用户指南

文章目录 1 如何新增普通用户2 如何以普通用户权限运行服务3 普通用户如何访问root账户的ubus服务4 其他权限控制5 参考 Openwrt系统在默认情况下只提供一个 root账户&#xff0c;所有的服务都是以 root权限运行的&#xff0c;包括 WebUI也是通过root账户访问的&#xff0c;…

使用EndNote添加参考文献,如何区分中英文文献的et al和等?

一、背景 我们在用EndNote添加参考文献时&#xff0c;如遇到超过3个作者&#xff0c;需列出前三位作者&#xff0c;其余用“et al”代替。 但中文文献用“et al”显示不合适&#xff0c;如下图所示&#xff0c;需要用“等”代替。 二、中文参考文献大于3个作者&#xff0c;用等…

5G数字化转型redcap助您“轻”装上阵

RedCap&#xff08;Reduced Capability&#xff09;技术&#xff0c;也称为NR-Light&#xff0c;是针对5G网络的一种轻量化技术规范&#xff0c;旨在为具有较低性能要求的设备提供5G连接。 RedCap技术特点 低成本 降低芯片组和设备成本&#xff1a;RedCap通过减少终端带宽、收…

【Playwright+Python】系列 Pytest 插件在Playwright中的使用

一、命令行使用详解 使用 Pytest 插件在Playwright 中来编写端到端的测试。 1、命令行执行测试 pytest --browser webkit --headed 2、使用 pytest.ini 文件配置 内容如下&#xff1a; [pytest] # Run firefox with UIaddopts --headed --browser firefox效果&#xff1…