CentOS8安装与配置Ceph Octopus版
1. Ceph介绍
https://www.cnblogs.com/kevingrace/p/8387999.html
1.1 为什么要用Ceph
Ceph是当前非常流行的开源分布式存储系统,具有高扩展性、高性能、高可靠性等优点,同时提供块存储服务(rbd)、对象存储服务(rgw)以及文件系统存储服务(cephfs),Ceph在存储的时候充分利用存储节点的计算能力,在存储每一个数据时都会通过计算得出该数据的位置,尽量的分布均衡。。目前也是OpenStack的主流后端存储,随着OpenStack在云计算领域的广泛使用,ceph也变得更加炙手可热。国内目前使用ceph搭建分布式存储系统较为成功的企业有x-sky,深圳元核云,上海UCloud等三家企业。
分布式存储 | Ceph | GFS | HDFS | Swift | Lustre |
---|---|---|---|---|---|
平台属性 | 开源 | 闭源 | 开源 | 开源 | 开源 |
系统架构 | 去中心化架构 | 中心化架构 | 中心化架构 | 去中心化架构 | 中心化架构 |
数据存储方式 | 块、文件对象 | 文件 | 文件 | 对象 | 文件 |
元数据节点数量 | 多个 | 1个 | 1个(主备) | 多个 | 1个 |
数据冗余 | 多副本/纠删码 | 多副本/纠删码 | 多副本/纠删码 | 多副本/纠删码 | 无 |
数据一致性 | 强一致性 | 最终一致性 | 过程一致性 | 弱一致性 | 无 |
分块大小 | 4MB | 64MB | 128MB | 视对象大小 | 1MB |
适用场景 | 频繁读写场景/IaaS | 大文件连续读写 | 大数据场景 | 云的对象存储 | 大型集群/超算 |
1.2 Ceph架构介绍
Ceph使用RADOS提供对象存储,通过librados封装库提供多种存储方式的文件和对象转换。外层通过RGW(Object,有原生的API,而且也兼容Swift和S3的API,适合单客户端使用)、RBD(Block,支持精简配置、快照、克隆,适合多客户端有目录结构)、CephFS(File,Posix接口,支持快照,社会和更新变动少的数据,没有目录结构不能直接打开)将数据写入存储。
- 高性能
a. 摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高
b.考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等
c. 能够支持上千个存储节点的规模,支持TB到PB级的数据- 高可扩展性
a. 去中心化
b. 扩展灵活
c. 随着节点增加而线性增长- 特性丰富
a. 支持三种存储接口:块存储、文件存储、对象存储
b. 支持自定义接口,支持多种语言驱动
目前来说,ceph在开源社区还是比较热门的,但是更多的是应用于云计算的后端存储。官方推荐使用ceph的对象式存储,速度和效率都比较高,而cephfs官方并不推荐直接在生产中使用。以上介绍的只是ceph的沧海一粟,ceph远比上面介绍的要复杂,而且支持很多特性,比如使用纠删码就行寻址,所以大多数在生产环境中使用ceph的公司都会有专门的团队对ceph进行二次开发,ceph的运维难度也比较大。但是经过合理的优化之后,ceph的性能和稳定性都是值得期待的。
1.3 Ceph核心概念
==RADOS==
全称Reliable Autonomic Distributed Object Store
,即可靠的、自动化的、分布式对象存储系统。RADOS是Ceph集群的精华,用户实现数据分配、Failover等集群操作。
==Librados==
Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFS都是通过librados访问的,目前提供PHP、Ruby、Java、Python、C和C++支持。
==Crush==
Crush算法是Ceph的两大创新之一,通过Crush算法的寻址操作,Ceph得以摒弃了传统的集中式存储元数据寻址方案。而Crush算法在一致性哈希基础上很好的考虑了容灾域的隔离,使得Ceph能够实现各类负载的副本放置规则,例如跨机房、机架感知等。同时,Crush算法有相当强大的扩展性,理论上可以支持数千个存储节点,这为Ceph在大规模云环境中的应用提供了先天的便利。
==Pool==
Pool是存储对象的逻辑分区,它规定了数据冗余的类型和对应的副本分布策略,默认存储3份副本;支持两种类型:副本(replicated)和 纠删码( Erasure Code);
==PG==
PG( placement group)是一个放置策略组,它是对象的集合,该集合里的所有对象都具有相同的放置策略,简单点说就是相同PG内的对象都会放到相同的硬盘上,PG是 ceph的逻辑概念,服务端数据均衡和恢复的最小粒度就是PG,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据;
==Object==
简单来说块存储读写快,不利于共享,文件存储读写慢,利于共享。能否弄一个读写快,利于共享的出来呢。于是就有了对象存储。最底层的存储单元,包含元数据和原始数据。
1.4 Ceph核心组件
OSD
是负责物理存储的进程,一般配置成和磁盘一一对应,一块磁盘启动一个OSD进程。主要功能是存储数据、复制数据、平衡数据、恢复数据,以及与其它OSD间进行心跳检查,负责响应客户端请求返回具体数据的进程等;
Pool、PG和OSD的关系:
- 一个Pool里有很多PG;
- 一个PG里包含一堆对象,一个对象只能属于一个PG;
- PG有主从之分,一个PG分布在不同的OSD上(针对三副本类型);
Monitor
一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据。负责监视整个Ceph集群运行的Map视图(如OSD Map、Monitor Map、PG Map和CRUSH Map),维护集群的健康状态,维护展示集群状态的各种图表,管理集群客户端认证与授权;生产中建议最少要用3个Monitor,基数个的Monitor组成组件来做高可用。
MDS
MDS全称Ceph Metadata Server,是CephFS
服务依赖的元数据服务。负责保存文件系统的元数据,管理目录结构。对象存储和块设备存储不需要元数据服务;
Mgr
ceph 官方开发了 ceph-mgr,主要目标实现 ceph 集群的管理,为外界提供统一的入口。例如cephmetrics、zabbix、calamari、promethus
RGW
RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容。
Admin
Ceph常用管理接口通常都是命令行工具,如rados、ceph、rbd等命令,另外Ceph还有可以有一个专用的管理节点,在此节点上面部署专用的管理工具来实现近乎集群的一些管理工作,如集群部署,集群组件管理等。
1.5 Ceph三种存储类型
块存储(RBD)
优点:
- 通过Raid与LVM等手段,对数据提供了保护;
- 多块廉价的硬盘组合起来,提高容量;
- 多块磁盘组合出来的逻辑盘,提升读写效率;
缺点:
- 采用SAN架构组网时,光纤交换机,造价成本高;
- 主机之间无法共享数据;
使用场景
- docker容器、虚拟机磁盘存储分配;
- 日志存储;
- 文件存储;
如果满足以下所有条件,则认为存储设备可用
- 硬盘设备必须没有分区。
- 设备不得具有任何LVM状态。
- 不得安装设备。
- 该设备不得包含文件系统。
- 该设备不得包含Ceph BlueStore OSD。
- 设备必须大于5 GB。
注意:Ceph拒绝在不可用的设备上配置OSD;也就是说配置OSD时,要保证挂载的硬盘设备是没有分区过的空盘
文件存储(CephFS)
优点:
- 造价低,随便一台机器就可以了;
- 方便文件共享;
缺点:
- 读写速率低;
- 传输速率慢;
使用场景
- 日志存储;
- FTP、NFS;
- 其它有目录结构的文件存储
对象存储(Object)
适合更新变动较少的数据
优点:
- 具备块存储的读写高速;
- 具备文件存储的共享等特性;
使用场景
- 图片存储;
- 视频存储;
2. 安装与配置
2.1 环境介绍
IP地址 | 配置 | 主机名 | Ceph版本 |
---|---|---|---|
10.15.253.161 | c2m8h300 | cephnode01 | Octopus 15.2.4 |
10.15.253.193 | c2m8h300 | cephnode02 | Octopus 15.2.4 |
10.15.253.225 | c2m8h300 | cephnode03 | Octopus 15.2.4 |
#Linux系统版本
[root@cephnode01 ~]# cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)
[root@cephnode01 ~]# uname -r
4.18.0-193.14.2.el8_2.x86_64
#网络设计:建议各网络单独分开
10.15.253.0/24 #Public Network 公共网络
172.31.253.0/24 #Cluster Network 集群网络
#每台ceph节点下除系统盘外,最少挂载两块相同的大容量硬盘,不需要进行分区
[root@cephnode01 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 1G 0 part [SWAP]
└─sda3 8:3 0 18.8G 0 part /
sdb 8:16 0 20G 0 disk
2.1.1 Ceph安装与版本选择
https://docs.ceph.com/docs/master/install/
ceph-deploy
是用于快速部署群集的工具;社区不再积极维护ceph-deploy。仅支持Nautilus版之前的Ceph版本上进行。它不支持RHEL8,CentOS 8或更新的操作系统。
这里的系统环境是centos8系统,所以需要使用cephadm部署工具部署octopus版的ceph
2.1.2 基础环境准备
全部Ceph节点上操作;以cephnode01节点为例;
#(1)关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
#(2)关闭selinux:
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
#(3)在cephnode01上配置免密登录到cephnode02、cephnode03
dnf install sshpass -y
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
for ip in 161 193 225 ;do sshpass -pZxzn@2020 ssh-copy-id -o StrictHostKeyChecking=no 10.15.253.$ip ;done
#(4)在cephnode01上添加主机名:已经配置过则不需要再次添加
cat >>/etc/hosts <<EOF
10.15.253.161 cephnode01
10.15.253.193 cephnode02
10.15.253.225 cephnode03
EOF
for ip in 193 225 ;do scp -rp /etc/hosts root@10.15.253.$ip:/etc/hosts ;done
#(5)设置文件连接数最大值
echo "ulimit -SHn 102400" >> /etc/rc.local
cat >> /etc/security/limits.conf << EOF
* soft nofile 65535
* hard nofile 65535
EOF
#(6)内核参数优化
echo 'net.ipv4.ip_forward = 1' >>/etc/sysctl.conf
echo 'kernel.pid_max = 4194303' >>/etc/sysctl.conf
#内存不足时低于此值,使用交换空间
echo "vm.swappiness = 0" >>/etc/sysctl.conf
sysctl -p
#(7)同步网络时间和修改时区;已经添加不需要配置
安装chrony时间同步 同步cephnode01节点
yum install chrony -y
vim /etc/chrony.conf
server cephnode01 iburst
---
systemctl restart chronyd.service
systemctl enable chronyd.service
chronyc sources
#(8)read_ahead,通过数据预读并且记载到随机访问内存方式提高磁盘读操作
echo "8192" > /sys/block/sda/queue/read_ahead_kb
#(9) I/O Scheduler,SSD要用noop(电梯式调度程序),SATA/SAS使用deadline(截止时间调度程序)
#https://blog.csdn.net/shipeng1022/article/details/78604910
echo "deadline" >/sys/block/sda/queue/scheduler
echo "deadline" >/sys/block/sdb/queue/scheduler
#echo "noop" >/sys/block/sd[x]/queue/scheduler
3. 添加Octopus版yum源
cat >>/etc/yum.repos.d/ceph.repo <<EOF
[Ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.aliyun.com/ceph/rpm-octopus/el8/$basearch
enabled=1
gpgcheck=0
type=rpm-md
[Ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-octopus/el8/noarch
enabled=1
gpgcheck=0
type=rpm-md
[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-octopus/el8/SRPMS
enabled=1
gpgcheck=0
type=rpm-md
EOF
yum clean all && yum makecache
#安装基础软件
yum install net-tools wget vim bash-completion lrzsz unzip zip -y
4. cephadm工具部署
https://docs.ceph.com/docs/master/cephadm/install/
- 在15版本,支持使用cephadm工具部署,ceph-deploy在14版本前都支持
4.1 拉取最新的cephadm并赋权
在cephnode01节点配置;
[root@cephnode01 ~]# curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm
[root@cephnode01 ~]# chmod +x cephadm
[root@cephnode01 ~]#ll
-rwxr-xr-x. 1 root root 184653 Sep 10 12:01 cephadm
4.2 使用cephadm获取octopus最新版本并安装
已手动配置为国内yum源,不需要按官方文档的步骤再进行添加yum源
#全部ceph节点安装
[root@cephnode01 ~]# dnf install python3 podman -y
[root@cephnode01 ~]# ./cephadm install
...
[root@cephnode01 ~]# which cephadm
/usr/sbin/cephadm
5. 创建ceph新集群
5.1 指定管理节点
创建一个可以被任何访问Ceph集群的主机访问的网络,指定mon-ip,并将生成的配置文件写进/etc/ceph目录里
[root@cephnode01 ~]# mkdir -p /etc/ceph
[root@cephnode01 ~]# cephadm bootstrap --mon-ip 10.15.253.161
...
URL: https://cephnode01:8443/
User: admin
Password: 9wttzehse1
...
可登陆URL: https://cephnode01:8443/,首次登陆要修改密码,进行验证
5.2 将ceph命令映射到本地
- Cephadm不需要在主机上安装任何Ceph包。但是,建议启用对ceph命令的简单访问。
- cephadm shell命令在安装了所有Ceph包的容器中启动一个bash shell。默认情况下,如果在主机上的/etc/ceph中找到配置和keyring文件,它们将被传递到容器环境中,这样就可以完全正常工作了。
[root@cephnode01 ~]# cephadm shell
[root@cephnode01 ~]# alias ceph='cephadm shell -- ceph'
[root@cephnode01 ~]# exit
#安装ceph-common包;包括ceph,rbd,mount.ceph的命令
[root@cephnode01 ~]# cephadm install ceph-common
#查看版本
[root@cephnode01 ~]# ceph -v
ceph version 15.2.4 (7447c15c6ff58d7fce91843b705a268a1917325c) octopus (stable)
查看状态
[root@cephnode01 ~]# ceph status
cluster:
id: 5579576a-f41b-11ea-b2da-000c296e8d32
health: HEALTH_WARN
Reduced data availability: 1 pg inactive
OSD count 0 < osd_pool_default_size 3
services:
mon: 1 daemons, quorum cephnode01 (age 11m)
mgr: cephnode01.doawzr(active, since 10m)
osd: 0 osds: 0 up, 0 in
data:
pools: 1 pools, 1 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 B / 0 B avail
pgs: 100.000% pgs unknown
1 unknown
5.3 添加新节点进ceph集群
[root@cephnode01 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub root@cephnode02
[root@cephnode01 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub root@cephnode03
[root@cephnode01 ~]# ceph orch host add cephnode02
Added host 'cephnode02'
[root@cephnode01 ~]# ceph orch host add cephnode03
Added host 'cephnode03'
5.4 部署添加 monitor
选择需要设置mon的节点,全选
[root@cephnode01 ~]# ceph orch host label add cephnode01 mon
Added label mon to host cephnode01
[root@cephnode01 ~]# ceph orch host label add cephnode02 mon
Added label mon to host cephnode02
[root@cephnode01 ~]# ceph orch host label add cephnode03 mon
Added label mon to host cephnode03
[root@cephnode01 ~]# ceph orch host ls
HOST ADDR LABELS STATUS
cephnode01 cephnode01 mon
cephnode02 cephnode02 mon
cephnode03 cephnode03 mon
告诉cephadm根据标签部署mon,这步需要等待各节点拉取images并启动容器
[root@cephnode01 ~]# ceph orch apply mon label:mon
具体验证是否安装完成,其他两台节点可查看下
[root@cephnode02 ~]# podman ps -a
...
[root@cephnode02 ~]# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/ceph/ceph v15 852b28cb10de 3 weeks ago 1 GB
docker.io/prom/node-exporter v0.18.1 e5a616e4b9cf 15 months ago 24.3 MB
6. 部署OSD
6.1 查看可使用的硬盘
[root@cephnode01 ~]# ceph orch device ls
HOST PATH TYPE SIZE DEVICE AVAIL REJECT REASONS
ceph01 /dev/sda hdd 20.0G False locked, Insufficient space (<5GB) on vgs, LVM detected
ceph01 /dev/sdb hdd 20.0G True
ceph02 /dev/sda hdd 20.0G False Insufficient space (<5GB) on vgs, LVM detected, locked
ceph02 /dev/sdb hdd 20.0G True
ceph03 /dev/sda hdd 20.0G False locked, Insufficient space (<5GB) on vgs, LVM detected
ceph03 /dev/sdb hdd 20.0G True
6.2 使用所有可用硬盘
[root@cephnode01 ~]# ceph orch apply osd --all-available-devices
添加单块盘的方式
[root@cephnode01 ~]# ceph orch daemon add osd cephnode02:/dev/sdc
6.3 验证部署情况
[root@cephnode01 ~]# ceph osd df
ID CLASS WEIGHT REWEIGHT SIZE RAW USE DATA OMAP META AVAIL %USE VAR PGS STATUS
0 hdd 0.01949 1.00000 20 GiB 1.0 GiB 3.8 MiB 1 KiB 1024 MiB 19 GiB 5.02 1.00 1 up
1 hdd 0.01949 1.00000 20 GiB 1.0 GiB 3.8 MiB 1 KiB 1024 MiB 19 GiB 5.02 1.00 1 up
2 hdd 0.01949 1.00000 20 GiB 1.0 GiB 3.8 MiB 1 KiB 1024 MiB 19 GiB 5.02 1.00 1 up
TOTAL 60 GiB 3.0 GiB 11 MiB 4.2 KiB 3.0 GiB 57 GiB 5.02
MIN/MAX VAR: 1.00/1.00 STDDEV: 0
7. 存储部署
7.1 CephFS部署
部署cephfs的mds服务,指定集群名及mds的数量
[root@cephnode01 ~]# ceph orch apply mds fs-cluster --placement=3
[root@cephnode01 ~]# ceph -s
cluster:
id: 8a4fdb4e-f31c-11ea-be33-000c29358c7a
health: HEALTH_OK
services:
mon: 3 daemons, quorum cephnode01,cephnode02,cephnode03 (age 1m)
mgr: cephnode01.oesega(active, since 49m), standbys: cephnode02.lphrtb, cephnode03.wkthtb
mds: 3 up:standby
osd: 3 osds: 3 up (since 51m), 3 in (since 30m)
data:
pools: 1 pools, 1 pgs
objects: 0 objects, 0 B
usage: 3.0 GiB used, 57 GiB / 60 GiB avail
pgs: 1 active+clean
7.2 部署RGW
创建一个领域
[root@cephnode01 ~]# radosgw-admin realm create --rgw-realm=rgw-org --default
{
"id": "43dc34c0-6b5b-411c-9e23-687a29c8bd00",
"name": "rgw-org",
"current_period": "ea3dd54c-2dfe-4180-bf11-4415be6ccafd",
"epoch": 1
}
创建一个zonegroup区域组
[root@cephnode01 ~]# radosgw-admin zonegroup create --rgw-zonegroup=rgwgroup --master --default
{
"id": "1878ecaa-216b-4c99-ad4e-b72f4fa9193f",
"name": "rgwgroup",
"api_name": "rgwgroup",
"is_master": "true",
"endpoints": [],
"hostnames": [],
"hostnames_s3website": [],
"master_zone": "",
"zones": [],
"placement_targets": [],
"default_placement": "",
"realm_id": "43dc34c0-6b5b-411c-9e23-687a29c8bd00",
"sync_policy": {
"groups": []
}
}
创建一个区域
[root@cephnode01 ~]# radosgw-admin zone create --rgw-zonegroup=rgwgroup --rgw-zone=zone-dc1 --master --default
{
"id": "fbdc5f83-9022-4675-b98e-39738920bb57",
"name": "zone-dc1",
"domain_root": "zone-dc1.rgw.meta:root",
"control_pool": "zone-dc1.rgw.control",
"gc_pool": "zone-dc1.rgw.log:gc",
"lc_pool": "zone-dc1.rgw.log:lc",
"log_pool": "zone-dc1.rgw.log",
"intent_log_pool": "zone-dc1.rgw.log:intent",
"usage_log_pool": "zone-dc1.rgw.log:usage",
"roles_pool": "zone-dc1.rgw.meta:roles",
"reshard_pool": "zone-dc1.rgw.log:reshard",
"user_keys_pool": "zone-dc1.rgw.meta:users.keys",
"user_email_pool": "zone-dc1.rgw.meta:users.email",
"user_swift_pool": "zone-dc1.rgw.meta:users.swift",
"user_uid_pool": "zone-dc1.rgw.meta:users.uid",
"otp_pool": "zone-dc1.rgw.otp",
"system_key": {
"access_key": "",
"secret_key": ""
},
"placement_pools": [
{
"key": "default-placement",
"val": {
"index_pool": "zone-dc1.rgw.buckets.index",
"storage_classes": {
"STANDARD": {
"data_pool": "zone-dc1.rgw.buckets.data"
}
},
"data_extra_pool": "zone-dc1.rgw.buckets.non-ec",
"index_type": 0
}
}
],
"realm_id": "43dc34c0-6b5b-411c-9e23-687a29c8bd00"
}
为特定领域和区域部署一组radosgw守护进程,这里只指定了两个节点开启rgw
[root@cephnode01 ~]# ceph orch apply rgw rgw-org zone-dc1 --placement="2 cephnode02 cephnode03"
验证
[root@cephnode01 ~]# ceph -s
cluster:
id: 8a4fdb4e-f31c-11ea-be33-000c29358c7a
health: HEALTH_OK
services:
mon: 3 daemons, quorum cephnode01,cephnode02,cephnode03 (age 1m)
mgr: cephnode01.oesega(active, since 49m), standbys: cephnode02.lphrtb, cephnode03.wkthtb
mds: 3 up:standby
osd: 3 osds: 3 up (since 51m), 3 in (since 30m)
rgw: 2 daemons active (rgw-org.zone-dc1.cephnode02.cdgjsi, rgw-org.zone-dc1.cephnode03.nmbbsz)
data:
pools: 1 pools, 1 pgs
objects: 0 objects, 0 B
usage: 3.0 GiB used, 57 GiB / 60 GiB avail
pgs: 1 active+clean
为RGW开启dashborad
#创建rgw的管理用户
[root@cephnode01 ~]# radosgw-admin user create --uid=admin --display-name=admin --system
{
"user_id": "admin",
"display_name": "admin",
"email": "",
"suspended": 0,
"max_buckets": 1000,
"subusers": [],
"keys": [
{
"user": "admin",
"access_key": "WG9W5O9O11TGGOLU6OD2",
"secret_key": "h2DfrWvlS4NMkdgGin4g6OB6Z50F1VNmhRCRQo3W"
}
],
"swift_keys": [],
"caps": [],
"op_mask": "read, write, delete",
"system": "true",
"default_placement": "",
"default_storage_class": "",
"placement_tags": [],
"bucket_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": -1,
"max_size_kb": 0,
"max_objects": -1
},
"user_quota": {
"enabled": false,
"check_on_raw": false,
"max_size": -1,
"max_size_kb": 0,
"max_objects": -1
},
"temp_url_keys": [],
"type": "rgw",
"mfa_ids": []
}
设置dashboard凭证
[root@cephnode01 ~]# ceph dashboard set-rgw-api-access-key WG9W5O9O11TGGOLU6OD2
Option RGW_API_ACCESS_KEY updated
[root@cephnode01 ~]# ceph dashboard set-rgw-api-secret-key h2DfrWvlS4NMkdgGin4g6OB6Z50F1VNmhRCRQo3W
Option RGW_API_SECRET_KEY updated
设置禁用证书验证、http访问方式及使用admin账号
ceph dashboard set-rgw-api-ssl-verify False
ceph dashboard set-rgw-api-scheme http
ceph dashboard set-rgw-api-host 10.15.253.225
ceph dashboard set-rgw-api-port 80
ceph dashboard set-rgw-api-user-id admin
重启RGW
[root@cephnode01 ~]# ceph orch restart rgw
restart rgw.rgw-org.zone-dc1.cephnode02.ubzrtp from host 'cephnode02'
restart rgw.rgw-org.zone-dc1.cephnode03.mlcbmr from host 'cephnode03'
3. ceph的监控
1. 安装grafana
部署到cephnode03上;生产环境建议单独分离
1、清华源下载
wget https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/grafana-6.7.4-1.x86_64.rpm
2.安装grafana
rpm -ivh grafana-6.7.4-1.x86_64.rpm
或
yum localinstall grafana-6.7.4-1.x86_64.rpm
3.启动grafana并设为开机自启
systemctl restart grafana-server.service
systemctl enable grafana-server.service
systemctl status grafana-server.service
4.grafana的默认端口为3000
netstat -lntup|grep 3000
2. 安装prometheus
#1、下载安装包,下载地址
wget https://mirrors.tuna.tsinghua.edu.cn/github-release/prometheus/prometheus/LatestRelease/prometheus-2.21.0.linux-amd64.tar.gz
#2、解压压缩包
tar xf prometheus-2.21.0.linux-amd64.tar.gz
#3、将解压后的目录改名
mv prometheus-2.21.0.linux-amd64 /opt/prometheus
#4、查看prometheus版本
cd /opt/prometheus/
./prometheus --version
prometheus, version 2.21.0
#5、配置系统服务启动
vim /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Monitoring System
Documentation=Prometheus Monitoring System
[Service]
ExecStart=/opt/prometheus/prometheus \
--config.file /opt/prometheus/prometheus.yml \
--web.listen-address=:9090
[Install]
WantedBy=multi-user.target
#6、加载系统服务
systemctl daemon-reload
#7、启动服务和添加开机自启动
systemctl restart prometheus
systemctl enable prometheus
systemctl status prometheus
#8、访问
curl http://10.15.253.225:9090
3. mgr、prometheus插件配置
在cephnode01上配置;
#启动prometheus模块
ceph mgr module enable prometheus
#检查端口
netstat -nltp | grep mgr
ceph -s (mgr在cephnode01上)
#测试返回值
curl 10.15.253.225:9283/metrics
#访问
http://10.15.253.225:9283/metrics
4. 配置prometheus
4.1 在scrape_configs:
配置项下添加
#每个job_name要分开
[root@cephnode03 prometheus]# vim prometheus.yml
- job_name: 'ceph_cluster'
honor_labels: true
scrape_interval: 5s
static_configs:
- targets: ['10.15.253.161:9283']
labels:
instance: ceph
4.2 重启prometheus服务
systemctl restart prometheus
4.3 检查prometheus服务器中是否添加成功
浏览器访问-》 http://10.15.253.225:9090 -》status -》Targets
5. 配置grafana监控ceph集群
5.1 浏览器登录 grafana 管理界面
http://10.15.253.225:3000/ 登陆admin/admin
5.2 添加Data Sources
点击configuration
--》data sources
添加prometheus
设置prometheus的访问地址
5.3 添加ceph监控模板
添加dashboard
,点击HOME
--》find dashboard on grafana.com
搜索ceph的dashboard模板
点击HOME
--》Import dashboard
, 选择合适的dashboard
,记录编号
检测成功