首页
首页
文章目录
  1. 简介
  2. 机器清单
  3. 系统参数配置
  4. 创建部署 Ceph 的用户
  5. 配置免密登陆
  6. 安装ceph
    1. 添加源
    2. 安装ceph-deploy
    3. 安装ceph存储集群
    4. 添加元数据服务器
    5. 安装ceph对象网关
    6. 客户端挂载磁盘
    7. 将ceph从Jewel升级到Luminous
    8. 配置dashboard
    9. ceph.conf最终信息
  7. ceph 扩展集群(扩容)
  8. 创建cephFS
    1. 1、配置 pg num 和pgp num
    2. 2、创建俩个存储池
    3. 3、使用 fs new 命令创建文件系统
  9. 结束

Centos7.7安装CEPH集群

简介

为了给k8s更好的对接有状态的数据,我们决定使用了Ceph作为后端存储,就有了今天这篇文章,本文为我的安装记录,希望我的安装过程能对你的问题有一丝思路。

机器清单

服务器ip 磁盘信息 系统配置信息 主机名 安装内容
10.10.77.144 sda、sdb、sdc 4核心,8G内存,80G系统盘,100G数据盘 ceph-01 mds.ceph-01, mon.ceph-01, osd.0
10.10.77.145 sda、sdb、sdc 4核心,16G内存,80G系统盘,100G数据盘 ceph-02 mon.ceph-02, osd.1, rgw.ceph-02
10.10.77.146 sda、sdb、sdc 4核心,16G内存,80G系统盘,100G数据盘 ceph-03 mon.ceph-03, osd.2

mon 表示Monitor 负责监控整个集群状态,同时维护着Ceph集群中的各种Map图,比如OSD Map、Monitor Map、PG Map
osd OSD的英文全称是Object Storage Device,是ceph核心组件主要是存储数据与其他osd进行心跳检查
rgw RADOSGW:RADOSGW是一套基于当前流行的RESTFUL协议的网关,并且兼容S3和Swift。对象存储的服务
MDS:全称是Ceph MetaData Server,主要保存的文件系统服务的元数据,但对象存储和块存储设备是不需要使用该服务的

系统参数配置

对系统参数进行优化调优

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 关闭安全模式
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 安装chrony
yum install -y chrony
systemctl enable chronyd
systemctl restart chronyd
# 修改sysclt.conf
echo 'vm.max_map_count=655360' >> /etc/sysctl.conf
sysctl -p
# 修改limits.conf,添加
echo "* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096" >> /etc/security/limits.conf
# 配置hosts
echo "10.10.77.144 ceph-01
10.10.77.145 ceph-02
10.10.77.146 ceph-03" >> /etc/hosts
# 安装包管理器
yum install yum-plugin-priorities wget -y
# 添加源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

创建部署 Ceph 的用户

在各 Ceph 节点创建新用户。

1
2
useradd -m ceph -s /bin/bash
passwd ceph

确保各 Ceph 节点上新创建的用户都有 sudo 权限。

1
2
echo "ceph ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/ceph
chmod 0440 /etc/sudoers.d/ceph

配置免密登陆

1
2
3
4
5
6
su - ceph
ssh-keygen
# 一路回车确认
ssh-copy-id ceph@ceph-01
ssh-copy-id ceph@ceph-02
ssh-copy-id ceph@ceph-03

安装ceph

添加源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
echo '[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
gpgcheck=0
priority =1
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/
gpgcheck=0
priority =1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/SRPMS
gpgcheck=0
priority=1' >/etc/yum.repos.d/ceph.repo
# 下载阿里云的base源和epel源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

安装ceph-deploy

1
yum update -y && yum install ceph-deploy -y

安装ceph存储集群

ceph集群架构说明 ceph集群架构说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 创建一个ceph集群 (ceph-01既为管理节点,也为node节点)
# 官方文档说:一个 Ceph 存储集群有一个 Monitor 和两个 OSD 守护进程;一旦集群达到 active + clean 状态,再扩展它:增加第三个 OSD 、增加元数据服务器和两个 Ceph Monitors
su - ceph
mkdir cluster
cd cluster
# 这里new 我直接安装了三个Monitors节点,生产使用建议是集群方式部署,也可以使用ceph-01一台,在ceph集群创建完成后在扩容
ceph-deploy new ceph-01 ceph-02 ceph-03
# 写入到ceph.conf中 将Ceph配置文件里的默认副本数配置为3 ,这样三个 OSD 就可以达到 active + clean 状态
echo 'osd pool default size = 3' >> ceph.conf
# 安装ceph服务
ceph-deploy install ceph-01 ceph-02 ceph-03
# Gather keys
ceph-deploy mon create-initial
# Ceph deploy parepare and activate
ceph-deploy osd prepare ceph-01:/dev/sdb ceph-02:/dev/sdb ceph-03:/dev/sdb
ceph-deploy osd activate ceph-01:/var/lib/ceph/osd/ceph-0 ceph-02:/var/lib/ceph/osd/ceph-1 ceph-03:/var/lib/ceph/osd/ceph-2
# 置文件和 admin 密钥拷贝到管理节点和 Ceph 节点 这里多加了个覆盖配置--overwrite-conf 可以不加
ceph-deploy --overwrite-conf admin ceph-01 ceph-02 ceph-03
# 拷贝keyring到指定目录
sudo cp -a *.keyring /etc/ceph/
# 赋权
sudo chmod +r /etc/ceph/ceph.client.admin.keyring
# 检查ceph是否部署成功
ceph -s
ceph health
# 查看Monitors节点
# Ceph 存储集群需要至少一个 Monitor 才能运行。为达到高可用,典型的 Ceph 存储集群会运行多个 Monitors,这样在单个 Monitor 失败时不会影响 Ceph 存储集群的可用性。Ceph 使用 PASOX 算法,此算法要求有多半 monitors(即 1 、 2:3 、 3:4 、 3:5 、 4:6 等 )形成法定人数。
# 当你的 Ceph 集群运行着多个 monitor 时,各 monitor 主机上都应该配置 NTP ,而且要确保这些 monitor 位于 NTP 服务的同一级
ceph quorum_status --format json-pretty
# 添加Monitors节点
ceph-deploy mon add ceph-02 ceph-03 # 我这里不需要因为我在最开始安装new的时候就安装了三个
# 安装失败后卸载清除方法
ceph-deploy purgedata ceph-01 ceph-02 ceph-03
ceph-deploy forgetkeys
# 连Ceph 安装包一起清除
ceph-deploy purge ceph-01 ceph-02 ceph-03

添加元数据服务器

ceph集群中至少需要一个元数据服务器才能使用 CephFS
生产环境下的 Ceph 只能运行一个元数据服务器,可以运行多个元数据服务器挂了的话花钱官方都不修

1
ceph-deploy mds create ceph-01

添加元数据服务器 添加元数据服务器

安装ceph对象网关

要使用 Ceph 的 Ceph 对象网关组件,必须部署 RGW 例程。用下列方法创建新 RGW 例程:

1
ceph-deploy rgw create ceph-02

安装ceph对象网关 安装ceph对象网关
RGW 例程默认会监听 7480 端口,可以通过俩种方式修改端口
1、直接在节点下的/etc/ceph.conf配置文件中添加如下:

1
2
[client]
rgw frontends = civetweb port=80

2、在cluster文件夹下的ceph.conf文件中添加同样内容,之后使用命令推送到相应节点上(ceph-02)

1
2
3
4
5
6
[client]
rgw frontends = civetweb port=80
# 将配置文件推送到相应的节点(ceph-02)上
ceph-deploy --overwrite-conf config push ceph-02
# 重启相关服务
sudo systemctl restart ceph-radosgw@rgw.ceph-02

效果图-修改前
安装ceph对象网关效果图 安装ceph对象网关效果图

效果图-修改后
安装ceph对象网关效果图修改端口后 安装ceph对象网关效果图修改端口后

客户端挂载磁盘

将ceph从Jewel升级到Luminous

因为我安装的版本是Jewel我想启动系统自带的dashboard,Jewel不支持,所以文章还得继续写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 1、确认sortbitwise是enabled状态:
ceph osd set sortbitwise
# 2、设置noout标志,告诉Ceph不要重新去做集群的负载均衡,虽然这是可选项,但是建议设置一下,避免每次停止节点的时候,Ceph就尝试通过复制数据到其他可用节点来重新平衡集群。
ceph osd set noout
# 3、替换jewel源为luminous源,各个节点均需要执行
sed -i 's/jewel/luminous/' /etc/yum.repos.d/ceph.repo
# 4、安装luminous版本的ceph-deploy
yum install ceph-deploy python-pushy
# 5、升级相关二进制文件
# 建议一台一台升级 使用
# 无脑替换源为阿里源,ceph源好卡
sed -i 's#download.ceph.com#mirrors.aliyun.com/ceph#g' /etc/yum.repos.d/ceph.repo
ceph-deploy install --release luminous ceph-03
ceph-deploy install --release luminous ceph-02
ceph-deploy install --release luminous ceph-01
# 6、 配置mgr
vim cluster/ceph.conf # 添加下面内容
[mgr]
mgr_modules = dashboard
# 7、创建mgr管理
ceph-deploy mgr create ceph-03 ceph-02 ceph-01
# 8、在每一个Monitor节点需要重启mon服务
systemctl restart ceph-mon@ceph-01.service
systemctl restart ceph-mon@ceph-02.service
systemctl restart ceph-mon@ceph-03.service
# 9、重启所有的osd服务
systemctl restart ceph-osd.target
# 整个过程中可以通过 ceph version来查看整个集群的版本状态

1、2执行反馈图
将ceph从Jewel升级到Luminous 将ceph从Jewel升级到Luminous
7 反馈图
创建mgr管理 创建mgr管理

配置dashboard

1
2
3
4
5
6
7
8
9
10
# 配置监听地址
ceph config-key put mgr/dashboard/server_addr 0.0.0.0
# 关闭ssl
ceph config-key put mgr/dashboard/ssl false
# 配置dashboard端口
ceph config-key put mgr/dashboard/server_port 7000
ceph mgr module diasble dashboard
ceph mgr module enable dashboard
# 重启服务是其生效
systemctl restart ceph-mgr@ceph-01.service

dashborad效果图 dashborad效果图

ceph.conf最终信息

1
2
3
4
5
6
7
8
9
10
11
12
[global]
fsid = fdca134e-e057-4386-b4cd-8cfd42cc3e2d
mon_initial_members = ceph-01, ceph-02, ceph-03
mon_host = 10.10.77.144,10.10.77.145,10.10.77.146
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd pool default size = 3
[client]
rgw frontends = civetweb port=80
[mgr]
mgr_modules = dashboard

ceph 扩展集群(扩容)

前提 我们在ceph-03上增加了一个块硬盘为/dev/sdc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 0、创建新的osd编号
ceph osd create
# 1、赋权
chown ceph:ceph /dev/sdc
# 2、 格式化硬盘
# xfs文件系统中,存在两个不相交的命名空间,root和user; root命名空间中的属性可以由superuser 设置,对其他用户不可见;user命名空间中的属性,受linux权限机制保护,所以文件所有者可以决定其文件的扩展属性可以被谁看到和被修改;
# 但是ext2、3、4的话 需要指定权限挂载mount –o user_xattr /dev/sdc1 /var/lib/ceph/osd/ceph-3
mkfs -t xfs -f /dev/sdc
# 3、挂在硬盘
mount /dev/sdc /var/lib/ceph/osd/ceph-3
echo "/dev/sdc /var/lib/ceph/osd/ceph-3 xfs defaults 0 0" >> /etc/fstab
# 4、初始化 OSD 数据目录,在ceph-03上执行
ceph-osd -i 3 --mkfs --mkkey
# 5、检查osd状态
# 正常情况下应该是4个osd 3个in和3个up,使用dashboard也可以看到
ceph osd stat
# 6、 注册 OSD 认证密钥, ceph-{osd-num} 路径里的 ceph 值应该是 $cluster-$id
ceph auth add osd.3 osd 'allow *' mon 'allow rwx' -i /var/lib/ceph/osd/ceph-3/keyring
# 7、启动 OSD
chown -R ceph:ceph /var/lib/ceph/osd/ceph-3
systemctl restart ceph-osd@3
systemctl enable ceph-osd@3
ceph osd stat

创建新的osd编号
创建新的osd编号 创建新的osd编号
1、2、3、效果图
创建新的osd编号1 创建新的osd编号1
4、初始化osd目录效果图
初始化osd目录效果图 初始化osd目录效果图
5、检查osd状态 5、检查osd状态
7、检查状态
检查osd状态1 5、检查osd状态1

创建cephFS

1、配置 pg num 和pgp num

1
2
3
4
5
# 默认pg_nnum算法 (100*osds)/4
# 一个存储池的默认归置组数量,默认值即是 mkpool 的 pg_num 参数 默认为8
osd pool default pg num = (100*osds)/4
# 一个存储池里,为归置使用的归置组数量,默认值等同于 mkpool 的 pgp_num 参数。当前 PG 和 PGP 应该相同 默认为8
osd pool default pgp num = (100*osds)/4

2、创建俩个存储池

创建俩个存储池,名字为cephfs_data和cephfs_metadata

1
2
ceph osd pool create cephfs_data 125
ceph osd pool create cephfs_metadata 125

创建俩个存储池 创建俩个存储池

3、使用 fs new 命令创建文件系统

update 2020-08-16

1
2
3
4
5
6
7
8
# 创建文件系统
ceph fs new cephfs cephfs_metadata cephfs_data
# 查看
ceph fs ls
# 查看状态
ceph mds stat
# 简单挂载 key获取为 cat
mount -t ceph 10.10.77.145,10.10.77.144,10.10.77.146:/ /ceph -o name=admin,secret=AQAjozdf2XvVGxAAd8havQOYlBu6BEjxmb95Rw==

使用 fs new 命令创建文件系统 使用 fs new 命令创建文件系统

结束

等下次空的时候再来写ceph对接k8s

一切事情,皆随心,就会皆顺心,因为这叫顺应天道。

以上,希望这篇文章能给你带来帮助。

End!

支持一下
扫一扫,我会更有动力更新
  • 微信扫一扫
  • 支付宝扫一扫