1. Ceph Mimic部署

一、Ceph架构及实验环境

1. Ceph 各组件解释

Ceph monitors(MON)Ceph监视器通过跟踪保存集群状态的映射来跟踪整个集群的健康
状况 , 它们为每个组件维护单独的信息映射, 其中包括OSD映射, MON映射, PG映射和CRUSH
映射。 所有群集节点都报告监视节点并共享有关其状态的每个更改的信息。 监视器不存储实际数
据; 这是OSD的工作。

Ceph对象存储设备(OSD) : 一旦应用程序向Ceph集群发出写操作, 数据就以对象的形式存
储在OSD中。 这是Ceph集群中存储实际用户数据的惟一组件, 通常, 一个OSD守护进程绑定到
集群中的一个物理磁盘。 因此, 通常来说, Ceph集群中物理磁盘的总数与在每个物理磁盘上存储
用户数据的OSD守护进程的总数相同。

Ceph metadata server (MDS) : MDS跟踪文件层次结构, 仅为Ceph FS文件系统存储元
数据,Ceph块设备和RADOS网关不需要元数据; 因此, 他们不需要Ceph MDS守护进程。 MDS
直接向客户端提供数据, 从而从系统中删除单点故障。

RADOS : 可靠的自主分布式对象存储(RADOS)Ceph存储集群的基础。 RADOS对象存储
负责存储这些对象, 而不管它们的数据类型如何。 RADOS层确保数据始终保持一致。 为此, 它
执行数据复制、 故障检测和恢复, 以及跨集群节点的数据迁移和再平衡。

Librados : librados库是一种访问RADOS的方便方法, 支持PHPRubyJavaPythonC
c++编程语言。 它为 Ceph存储集群(RADOS)提供了本机接口, 并为其他服务提供了基础, 如
RBDRGWCephFS, 这些服务构建 在librados之上。 librados还支持从应用程序直接访问
RADOS, 没有HTTP开销。

RADOS块设备(RBD) : 现在是RBD被称为Ceph块设备, 提供持久性块存储, 它是精简配
置, 可调整大小, 并存储多个OSD条带化的数据。 RBD服务已构建为librados之上的本机接口。

RGWRGW提供对象存储服务。 它使用librgw (Rados网关库)librados, 允许应用程序与
Ceph对象存储建立 连接。 RGW提供了与Amazon S3OpenStack Swift兼容的RESTful api
口。

CephFS : Ceph文件系统提供了一个符合posix标准的文件系统, 它使用Ceph存储集群在文件
系统上存储用户数 据。 与RBDRGW一样, CephFS服务也作为librados的本机接口实现。

Ceph manager : Ceph manager守护进程(Ceph -mgr)是在Kraken版本中引入的, 它与
monitor守护进程一起运行, 为外部监视和管理系统提供额外的监视和接口。
在这里插入图片描述

2. 实验环境

2.1 系统版本
[root@node1 ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
2.2 主机列表
主机名角色IP内存
node1mon,osd,deploy10.0.0.24,172.16.1.244G
node2mon,osd10.0.0.25,172,16.1.254G
node3mon,osd10.0.0.26,172.16.1.264G

172.16.1.0/24网段用于传输数据

2.3 硬件信息

每个主机有三个数据盘

[root@node1 ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   40G  0 disk
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0    4G  0 part [SWAP]
└─sda3   8:3    0   35G  0 part /
sdb      8:16   0   50G  0 disk
sdc      8:32   0   50G  0 disk
sdd      8:48   0   50G  0 disk
sr0     11:0    1  942M  0 rom

二、部署Ceph

1. 基础环境准备

1.1 hosts解析

所有节点都需要做hosts解析

[root@node1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.24 node1
10.0.0.25 node2
10.0.0.26 node3
1.2 yum源配置

除了配置Baseepel源之外,还要添加ceph源,添加内容如下:

[root@node1 ~]# cat /etc/yum.repos.d/ceph.repo
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/x86_64/
gpgcheck=0
priority=1

[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/
gpgcheck=0
priority=1

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS
enabled=0
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
1.3 时间同步

所有节点要求保持时间同步,时间内同步有多种方式,提供以下两种方式,二选一即可

  • 为了省事可以直接在每个节点定时向阿里云进行同步
* */1 * * * /usr/sbin/ntpdate ntp2.aliyun.com &> /dev/null
  • 也可以自己搭建时间同步服务,具体步骤如下

所有节点安装chrony

[root@node1 ~]# yum install chrony

修改node1节点的配置文件,让其向阿里云时间同步服务器同步时间,并允许10.0.0.0/24网段的主机向这台服务器同步时间

[root@node1 ~]# grep "^server" /etc/chrony.conf
server ntp3.aliyun.com iburst

[root@node1 ~]# grep "^allow" /etc/chrony.conf
allow 10.0.0.0/24

重启服务

[root@node1 ~]# systemctl restart chronyd.service

node1节点上验证

[root@node1 ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* 203.107.6.88                  2   6    17    62  +1938us[ +274us] +/-   30ms

其他节点安装完chrony服务后,更改其配置文件,让其向node1节点进行时间同步。

[root@node2 ~]# grep "^server" /etc/chrony.conf
server node1 iburst
[root@node2 ~]# systemctl restart chronyd.service

其他节点上验证

[root@node2 ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^? node1                         0   6     0     -     +0ns[   +0ns] +/-    0ns
1.4 创建cephadmin的用户

各个节点创建新用户,官方推荐以普通用户的身份使用 ceph-deploy 工具。新建用户的用户名不能为 ceph ,因为此用户保留给了 Ceph 守护进程。

所有节点新建用户cephadmin,并设置密码

[root@node1 ~]# useradd cephadmin
[root@node1 ~]# echo "1" | passwd --stdin cephadmin

[root@node1 ~]# id cephadmin
uid=1000(cephadmin) gid=1000(cephadmin) groups=1000(cephadmin)

各个节点新建的用户 cephadmin 可以不输入密码直接使用sudo

[root@node1 ~]# echo "cephadmin ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/cephadmin

[root@node1 ~]# chmod 0440 /etc/sudoers.d/cephadmin

使用新建的普通用户登录管理节点,在管理节点生产公钥,并推送到其他节点

[cephadmin@node1 ~]$ ssh-keygen

[cephadmin@node1 ~]$ ssh-copy-id cephadmin@node1
[cephadmin@node1 ~]$ ssh-copy-id cephadmin@node2
[cephadmin@node1 ~]$ ssh-copy-id cephadmin@node3

2. 部署Ceph

2.1 安装部署工具

管理节点node1上安装ceph-deploy工具

[cephadmin@node1 ~]$ sudo yum install -y ceph-deploy python-pip
2.2 创建集群

管理节点上创建一个目录,用于保存 ceph-deploy 生成的配置文件和密钥对。

[cephadmin@node1 ~]$ mkdir my-cluster
[cephadmin@node1 ~]$ cd my-cluster

在刚创建的my-cluster目录下,用ceph-deploy初始化一个集群

[cephadmin@node1 my-cluster]$ ceph-deploy new node1 node2 node3

命令执行成功后,会自动产生一下三个文件。

[cephadmin@node1 my-cluster]$ ll
total 12
# ceph配置文件
-rw-rw-r-- 1 cephadmin cephadmin  192 Mar  6 17:57 ceph.conf
# 日志文件
-rw-rw-r-- 1 cephadmin cephadmin 3013 Mar  6 17:57 ceph-deploy-ceph.log
# monitor 密钥环
-rw------- 1 cephadmin cephadmin   73 Mar  6 17:57 ceph.mon.keyring

~/my-cluster/ceph.conf文件中添加如下行。

public network = 10.0.0.0/24
cluster network = 172.16.1.0/24
osd_pool_default_min_size = 2
osd_pool_default_size = 3
mon_clock_drift_allowed = 5
osd_pool_default_crush_rule = 0
osd_crush_chooseleaf_type = 1
2.3 安装ceph

各个节点安装ceph

  • 官方文档在管理节点使用如下命令,会在各台主机自动为我们配置yum源,安装ceph

    [cephadmin@node1 my-cluster]$ ceph-deploy purge node1 node2 node3
    

    ceph-deploy工具自动为我们配置的国外yum源,可能会导致安装不成功,建议手动安装

  • 也可以配置完yum源后,在各个节点手动安装ceph

    [cephadmin@node1 my-cluster]$ sudo yum -y install ceph ceph-radosgw
    

    yum源在第二部分的1.2中已经配置好

验证各个节点是否安装成功

[cephadmin@node1 my-cluster]$ ceph -v
ceph version 13.2.8 (5579a94fafbc1f9cc913a0f5d362953a5d9c3ae0) mimic (stable)

[cephadmin@node2 ~]$ ceph -v
ceph version 13.2.8 (5579a94fafbc1f9cc913a0f5d362953a5d9c3ae0) mimic (stable)

[cephadmin@node3 ~]$ ceph -v
ceph version 13.2.8 (5579a94fafbc1f9cc913a0f5d362953a5d9c3ae0) mimic (stable)
2.4 初始化集群

根据 ~/my-cluster/ceph.confmon initial members 定义的信息部署初始monitor成员

[cephadmin@node1 my-cluster]$ ceph-deploy mon create-initial

完成上述操作后,当前目录里应该会出现这些密钥环:

[cephadmin@node1 my-cluster]$ ll *.keyring
-rw------- 1 cephadmin cephadmin 113 Apr  1 16:31 ceph.bootstrap-mds.keyring
-rw------- 1 cephadmin cephadmin 113 Apr  1 16:31 ceph.bootstrap-mgr.keyring
-rw------- 1 cephadmin cephadmin 113 Apr  1 16:31 ceph.bootstrap-osd.keyring
-rw------- 1 cephadmin cephadmin 113 Apr  1 16:31 ceph.bootstrap-rgw.keyring
-rw------- 1 cephadmin cephadmin 151 Apr  1 16:31 ceph.client.admin.keyring
-rw------- 1 cephadmin cephadmin  73 Apr  1 16:16 ceph.mon.keyring
2.5 开放权限

现在仅可在管理节点执行ceph命令,且需要使用sudo提权。通过以下操作,可在任意节点不适用sudo提权也可以使用ceph命令

管理节点执行以下命令,将Ceph 配置文件和admin密钥文件ceph.client.admin.keyring推送到各个节点

[cephadmin@node1 my-cluster]$ ceph-deploy admin node{1,2,3}

各个节点执行以下命令

[cephadmin@node1 my-cluster]$ sudo chmod +r /etc/ceph/ceph.client.admin.keyring
2.6 监控检查
[cephadmin@node3 ~]$ ceph -s
  cluster:
    id:     ab2f7082-28ae-43b3-8d68-aa571146e0a7
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum node1,node2,node3
    mgr: no daemons active
    osd: 0 osds: 0 up, 0 in

  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:

3. 添加OSD

osd daemon 需要万兆网卡。一个分区、一块硬盘或者一个 RAID 都可以添加一个osd daemon ,一块硬盘添加一个 osd daemon 性能要好一些。osd daemon 主要有以下两个功能

  1. 存储和复制数据
  2. 监控自己以及同组的其他 osd daemon 的状态(当 osd daemon 故障时,无法上报自己的状态,需要同组的 osd daemon 帮忙上报),并主动上报给mon
3.1 添加OSD节点

通过 shell 脚本时间 OSD daemon 的添加

for dev in /dev/sdb /dev/sdc /dev/sdd
do
	ceph-deploy disk zap node1 $dev
	ceph-deploy osd create node1 --data $dev
	ceph-deploy disk zap node2 $dev
	ceph-deploy osd create node2 --data $dev
	ceph-deploy disk zap node3 $dev
	ceph-deploy osd create node3 --data $dev
done

也可通过命令行添加 osd daemon,命令格式为:

[cephadmin@node1 my-cluster]$ ceph-deploy disk zap <nodename>:/dev/sdb
[cephadmin@node1 my-cluster]$ ceph-deploy osd create <nodename>:/dev/sdb

4. 状态检查

4.1 命令行检查

健康状态检查

[cephadmin@node1 my-cluster]$ ceph -s
  cluster:
    id:     ab2f7082-28ae-43b3-8d68-aa571146e0a7
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum node1,node2,node3
    mgr: node1(active), standbys: node2, node3
    osd: 9 osds: 9 up, 9 in

  data:
    pools:   0 pools, 0 pgs
    objects: 0  objects, 0 B
    usage:   9.0 GiB used, 432 GiB / 441 GiB avail
    pgs:

节点状态检查

[cephadmin@node1 my-cluster]$ ceph osd tree
ID CLASS WEIGHT  TYPE NAME      STATUS REWEIGHT PRI-AFF
-1       0.43108 root default
-3       0.14369     host node1
 0   hdd 0.04790         osd.0      up  1.00000 1.00000
 3   hdd 0.04790         osd.3      up  1.00000 1.00000
 6   hdd 0.04790         osd.6      up  1.00000 1.00000
-5       0.14369     host node2
 1   hdd 0.04790         osd.1      up  1.00000 1.00000
 4   hdd 0.04790         osd.4      up  1.00000 1.00000
 7   hdd 0.04790         osd.7      up  1.00000 1.00000
-7       0.14369     host node3
 2   hdd 0.04790         osd.2      up  1.00000 1.00000
 5   hdd 0.04790         osd.5      up  1.00000 1.00000
 8   hdd 0.04790         osd.8      up  1.00000 1.00000

在每个节点上检查是否挂载成功

[cephadmin@node1 my-cluster]$ sudo df -h | grep osd
tmpfs           2.0G   52K  2.0G   1% /var/lib/ceph/osd/ceph-0
tmpfs           2.0G   52K  2.0G   1% /var/lib/ceph/osd/ceph-3
tmpfs           2.0G   52K  2.0G   1% /var/lib/ceph/osd/ceph-6
4.2 Web页面检查

部署 mgrL版以后才需要部署

[cephadmin@node1 my-cluster]$ ceph-deploy mgr create node1 node2 node3

开启 dashboard 功能

[cephadmin@node1 my-cluster]$ ceph mgr module enable dashboard

L 版到此步骤通过 http://192.168.20.176:7000 就可以访问 dashboard

生成并安装一个 自签名证书

[cephadmin@node1 my-cluster]$ ceph dashboard create-self-signed-cert
Self-signed certificate created

创建 web 登录的用户名和密码

[cephadmin@node1 my-cluster]$ ceph dashboard set-login-credentials cephadmin 123456
Username and password updated

用户名为cephadmin 密码为123456

查看访问方式

[cephadmin@node1 my-cluster]$ ceph mgr services
{
    "dashboard": "https://node1:8443/"
}

通过访问 https://10.0.0.24:8443 可以访问到 ceph web 界面
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值