CEPH安装与使用

发布时间 2024-01-02 16:37:33作者: 岁月如歌_九

1.Ceph介绍

Ceph 是高度可靠、易于管理,并免费的分布式存储系统,在一个系统中提供对象存储、块设备存储和文件系统服务

官网文档: https://docs.ceph.com/en/latest/

 

2. Ceph 核心组件及功能介绍

Ceph的核心组件包括Ceph OSDCeph MonitorCeph ManagerCeph MDS

OSD的英文全称是Object Storage Device,它的主要功能是存储数据、复制数据、平衡数据、恢复数据等,并通过检查其他Ceph OSD守护程序的心跳来向 Ceph 监视器和管理器提供一些监视信息。通常至少需要3Ceph OSD才能实现冗余和高可用性。

Monitor 负责监视Ceph集群,维护Ceph集群的健康状态各种Map图,比如当用户需要存储数据到Ceph集群时,OSD需要先通过Monitor获取最新的Map图,然后根据Map图和object id等计算出数据最终存储的位置。

Ceph Manager 守护程序(ceph-mgr)负责跟踪运行时指标和Ceph集群的当前状态,包括存储利用率,当前性能指标和系统负载。Ceph Manager守护程序还托管基于Python的模块来管理和公开Ceph集群信息,包括基于WebCeph仪表板和REST API。高可用性通常至少需要两个管理器。

 MDS全称是Ceph MetaData Server,主要保存的文件系统服务的元数据,但对象存储和块存储设备是不需要使用该服务的。

1、基础架构图

 

 

Ceph最底层、最核心的是RADOSRADOS自身是一个完整的分布式对象存储系统,它具有可靠、智能、分布式特性,主要由OSDMonitor

LIBRADOS是一个库,它允许应用程序通过访问该库来与RADOS系统进行交互,支持多语言。

RADOSGW基于REST协议网关,兼容S3Swift

RBD基于linux内核客户端和QEMU/KVM驱动提供分布式块设备。

CEPHFS提供了POSIX(可移植操作系统接口)接口,直接通过客户端挂载使用,通过内核的net模块与RADOS交互。

2、数据读写图

 

 

3、Cephfs

 

 

2. Ceph安装

ceph分布式文件系统存储使用octopus版本,与以前版本不同的是,octopus是采用了docker容器化的安装方式,并且使用了PrometheusGrafana作为监控管理平台。Ceph安装需要python3环境及docker ce的环境。

2.1安装python3

Python3docker ce环境,每台机器都要进行安装。

1、依赖升级

安装前对本虚拟机各个依赖进行升级,使用yum update -y命令进行更新。

2、安装所需依赖

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel zlib1g-dev zlib*

3、下载python3

wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz

4、解压

tar  -xvf  Python-3.6.8.tar.xz

5、创建编译安装目录

mkdir  -p  /usr/local/python3

6、编译安装

 cd Python-3.6.8 

./configure --prefix=/usr/local/python3 --enable-optimizations --with-ssl

make && make install

7、创建软链接

ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3

ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3

ln -s /usr/local/python3/bin/virtualenv /usr/local/bin/virtualenv

8、检查是否安装成功

python3 -V

pip3 -V

2.2安装ceph

1、配置docker国内镜像源

配置在/etc/docker目录daemon.json文件,配置完毕之后,将docker进行重启,否则镜像有可能会pull不下来。

daemon.json

{

"registry-mirrors": ["https://uyah70su.mirror.aliyuncs.com","https://docker.mirrors.ustc.edu.cn/","https://hub-mirror.c.163.com","https://registry.docker-cn.com"],

"insecure-registries": ["10.0.0.12:5000","10.1.60.194:1180"]

}

2、安装cephadm(主节点):

1使用curl下载最新的cephadm脚本:

curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm

chmod +x cephadm

2)安装cephadm到当前节点

./cephadm add-repo --release octopus

./cephadm install

3使用以下命令确认cephadm已经加入PATH环境变量,可能需要退出命令行界面重新登录:

which cephadm

cephadm --help

3、引导集群(主节点):

1创建ceph目录:

mkdir -p /etc/ceph

2构建主机点:

cephadm bootstrap --mon-ip 10.1.61.151 --ssh-config config

注:由于本公司虚拟机ssh端口非默认22,所以需要在这里指定config文件,否则无法与其他机器建立连接,config文件的简单配置如下:

Host *

  User root

  StrictHostKeyChecking no

  UserKnownHostsFile /dev/null

  ConnectTimeout=30

  Port 19222

该命令执行以下操作:

在本地主机上为新集群创建monitor manager daemon守护程序。

Ceph集群生成一个新的SSH密钥,并将其添加到root用户的/root/.ssh/authorized_keys文件中。

将与新群集进行通信所需的配置文件保存到/etc/ceph/ceph.conf

/etc/ceph/ceph.client.admin.keyring写入client.admin管理secret key的副本。

public key的副本写入/etc/ceph/ceph.pub

注:安装完毕后,下面会有个网址及密码,第一次登录,使用提供的密码登录,然后修改密码即可,如下:

 

 

修改密码后登录到ceph dashboard

 

 

 

安装完毕查看/etc/ceph下的目录文件结构及文件内容:

 

 

查看镜像和拉取的容器docker images

 

 

docker ps

 

 

此时已经运行了以下组件

l ceph-mgr ceph管理程序

l ceph-monitor ceph监视器

l ceph-crash 崩溃数据收集模块

l prometheus监控组件

l grafana 监控数据展示dashboard

l alertmanager prometheus告警组件

l node_exporter prometheus节点数据收集组件

4、安装ceph工具包(主节点)

安装ceph-common包,里面包含了所有的ceph命令,其中包括cephrbdmount.ceph(用于安装CephFS文件系统)等:

cephadm add-repo --release octopus

cephadm install ceph-common

安装完毕后确认该命令(ceph -v)是否能够使用:

 

 

5、将其他主机添加到集群中(主节点)

要将新主机添加到群集,请执行两个步骤:

1)在新主机的根用户authorized_keys文件中安装集群的公共SSH密钥:

ssh-copy-id -f -i /etc/ceph/ceph.pub root@eb61152

ssh-copy-id -f -i /etc/ceph/ceph.pub root@eb61153

ssh-copy-id -f -i /etc/ceph/ceph.pub root@eb61154

2告诉Ceph,新节点是集群的一部分:

ceph orch host add eb61151

ceph orch host add eb61152

ceph orch host add eb61153

ceph orch host add eb61154

3)查看ceph纳管的所有节点

 

 

注意执行完该步骤后,需要等待其他机器下载镜像及启动ceph进程,通过前面的ceph dashboard查看节点是否已经加入进来。

添加完成后ceph会自动扩展monitor到另外的节点,mgr节点会在第二个自动扩展,作为备用节点

 

 

 

6、部署 OSD(主节点)

所有群集主机上的存储设备清单可以显示为:

ceph orch device ls

如果满足以下所有条件,则认为存储设备可用:

l 设备必须没有分区。

设备不得具有任何LVM状态。

l 不得安装设备。

l 该设备不得包含文件系统。

该设备不得包含Ceph BlueStore OSD

设备必须大于5 GB

Ceph拒绝在不可用的设备上配置OSD

1)告诉Ceph使用任何可用和未使用的存储设备:

ceph orch apply osd --all-available-devices

2)也可手动添加(手动添加每台主机都要执行)

ceph orch daemon add osd eb61151:/dev/sdb

ceph orch daemon add osd eb61152:/dev/sdb

...

添加完毕后,每台节点都会启动一个osddocker进程

 

 

7、部署MDS

要使用CephFS文件系统,需要一个或多个MDS守护程序。如果使用较新的版本来创建新的文件系统,则会自动创建这些文件。

部署元数据服务器:

两个64的数字代表了pg_num数和pgp_num数,新版本会自动根据当前集群的配置自动配置,不需要指定只使用 ceph osd pool create cephfs_data,后面的cephfs_data为创建的池名称,可以自行更改

1存储池cephfs_data

[root@eb61151~]# ceph osd pool create cephfs_data 64 64

pool 'cephfs_data' created

2元数据存储池cephfs_metadata

[root@eb61151~]# ceph osd pool create cephfs_metadata 64 64

pool 'cephfs_metadata' created

3创建cephfs文件系统(一个元数据存储池和一个数据存储池作为cephfs文件系统):

[root@eb61151~]# ceph fs new cephfs cephfs_metadata cephfs_data

new fs with metadata pool 3 and data pool 2

4查看创建的文件系统:

[root@eb61151~]# ceph fs ls

name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

5启动部署mds进程:

[root@eb61151~]# ceph orch apply mds cephfs --placement="4 eb61151 eb61152 eb61153 eb61154 "

注:由于ceph的存储池默认是3副本机制,为了节省空间,我们可以改为2副本即一份主文件、一份备份文件。

6查看存储池副本数:

ceph osd pool get cephfs_data size

7设置存储池副本数:

ceph osd pool set cephfs_data size2

同理可将其他池也设置为2副本节省空间。

8、创建挂载目录

1)挂载设置

在主节点上/mnt下创建cephfs目录,需要将其他机器的根目录挂载到当前目录下,修改ip地址,port,挂载路径,secret,根据实际生成的修改,secret/etc/ceph下之前生成的ceph.client.admin.kerying,执行下面的命令,所有的机器上都需要执行。

mount -t ceph 10.1.61.151:6789,10.1.61.152:6789,10.1.61.153:6789,10.1.61.154:6789:/     /mnt/cephfs  -o name=admin,secret=AQDm/nlhapeJBxAAVB+mrpPCSliGvzerc6aD1w==

2配置开机自启动挂载

在所有机器的/etc/fstab文件末尾,添加下面的文本。

10.1.61.151:6789,10.1.61.152:6789,10.1.61.153:6789,10.1.61.154:6789:/     /mnt/cephfs  ceph name=admin,secret=AQDm/nlhapeJBxAAVB+mrpPCSliGvzerc6aD1w==,noatime,_netdev    0       2

2.3 常见问题

1、重启失败

docker重启后,ceph有时会重启失败此时需要重新启动所有的机器上的ceph,在每台机器上执行systemctl restart ceph.target。

出现warning,有时候可以查看免密登录是否配置的有问题。

2、配置ceph集群免密(举例主节点免密登录其他节点)

1 主节点)上执行命令:ssh-keygen -t rsa

[root@iZ23f31fmtgZ ~]# ssh-keygen -t rsa

然后一直回车,就可以在 /root/.ssh目录下看到公钥id_rsa.pub和私钥id_rsa

[root@iZ23f31fmtgZ ~]# cd /root/.ssh

[root@iZ23f31fmtgZ .ssh]# ls

id_rsa  id_rsa.pub  known_hosts

2同样的操作在 其他节点 中执行一遍。

3)依次在其他节点的/root/.ssh目录下新建文件authorized_keys

[root@iZ23f31fmtgZ ~]# cd /root/.ssh/

[root@iZ23f31fmtgZ .ssh]# ls

id_rsa  id_rsa.pub  known_hosts

[root@iZ23f31fmtgZ .ssh]# touch authorized_keys

[root@iZ23f31fmtgZ .ssh]# ls

authorized_keys  id_rsa  id_rsa.pub  known_hosts

[root@iZ23f31fmtgZ .ssh]#

4然后将主节点机器中的公钥放到其他节点机器的authorized_keys

可以使用复制命令 scp /root/.ssh/id_rsa.pub root@10.1.35.52:/root/.ssh/authorized_keys(如果复制报错就手动将公钥依次加入到其他节点authorized_keys

[root@iZ23f31fmtgZ .ssh]# cat authorized_keys

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTtp1CHV1D0TwuSLmiOOpmaxanI40SFNEjM2PVnmlwOMYIezABwnO4OcpyV7J04c9Tc+FKDADClWZRu0iG3SlX+8v5EIujfkf9RszO6hcCeYGp55mBhJ7dwfE0WTS19j6yTNksILtM60TcNk0Z/zG6vZI1gGW/XFs5s78Bk0pPuMmV8fUEF3bZXI5yJ9iqqtNvOX4KqN8O60JV7UAPg0NAW6lyutw7+1xJ7gvfeh8C2Vkzi5czyE7m+nlJ3oddvmKJF7wHLxN3kKqWMHEte9izZ9KC/unIB2MD44XUEypCSHeAsl4MEefe/SV5iCoAHdR18VoF4gENuAbsr3diqRQh root@localhost.localdomain

[root@iZ23f31fmtgZ .ssh]#

5执行命令ssh [B机器ip] (默认22端口),测试配置是否成功

[root@localhost .ssh]# ssh [ip]

Last login: Tue Apr 25 19:1:47 2017 from 60.190.237.82

 

Welcome to aliyun Elastic Compute Service!

见下图,说明主节点机器免密登录其他节点机器成功。

 

Ps:如果其他节点登录主节点免密也是一样的操作。

3、安装cephadm到当前节点报错

解决办法卸载pywin32包,重新安装即可

./cephadm add-repo --release octopus

4.Ceph使用

1、资源监控

Ceph Dashboard: https://10.1.61.152:8443/#/dashboard

Ceph Grafana : https://10.1.61.151:3000

 

 

 

 

 

 

 

2、告警处理

 

1)mon c is low on available space节点根目录空间不足

查看节点空间情况

释放空间

 

解除告警

或者修改配置ceph.conf把容忍值调低mon_data_avail_warn = 10

3、常用命令

https://tool.4xseo.com/a/15737.html