搭建简单的ceph集群及在搭建过程中遇到的问题和解决方式
ceph部署
三台主机,各自添加一块50G的硬盘
| 主机名 | IP |
|---|---|
| ceph1 | 192.168.80.11 |
| ceph2 | 192.168.80.22 |
| ceph3 | 192.168.80.33 |
- 三台设备均要操作
# 替换默认源。
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \
-i.bak \
/etc/yum.repos.d/rocky*.repo
# 安装常用软件
[root@ceph1 ~]# yum install bash-completion vim tree psmisc wget tar net-tools lrzsz -y
# 修改主机名
[root@localhost ~]# hostnamectl set-hostname ceph1 # 分别改为ceph1、ceph2、ceph3
[root@localhost ~]# reboot
# 配置host解析
[root@ceph1 ~]# vim /etc/hosts
192.168.80.11 ceph1
192.168.80.22 ceph2
192.168.80.33 ceph3
# 关闭防火墙,禁用selinux
[root@ceph1 ~]# systemctl disable --now firewalld.service
Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service".
Removed "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service".
[root@ceph1 ~]# sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
# 因为ceph对时间同步的要求为误差在50ms内,三台主机都需要做时间同步
[root@ceph1 ~]# yum install chrony -y
# 进入主配置文件
[root@ceph1 ~]# vim /etc/chrony.conf
# 修改第三行为阿里云的时间同步服务器地址
pool ntp.aliyun.com iburst
# 设置开机自启动,重启服务
[root@ceph1 ~]# systemctl enable --now chronyd
[root@ceph1 ~]# systemctl restart chronyd
# 查看时间同步
[root@ceph1 ~]# chronyc sources
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 203.107.6.88 2 6 7 2 +116us[-8599us] +/- 24ms
cat > /etc/yum.repos.d/ceph.repo <<EOF
[ceph]
name=ceph x86_64
baseurl=https://mirrors.aliyun.com/ceph/rpm-squid/el9/x86_64
gpgcheck=0
[ceph-noarch]
name=ceph noarch
baseurl=https://mirrors.aliyun.com/ceph/rpm-squid/el9/noarch
gpgcheck=0
[ceph-source]
name=ceph SRPMS
baseurl=https://mirrors.aliyun.com/ceph/rpm-squid/el9/SRPMS
gpgcheck=0
EOF
# 清除缓存并重建缓存
sudo yum clean all
sudo yum makecache
# 如果源系统中没有pyhotn3,那么就要下载
yum install pyhton3
# 查看安装的python版本
[root@ceph1 ~]# python -V
Python 3.9.19
# 安装依赖
[root@ceph1 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加yum源
[root@ceph1 ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/rhel/docker-ce.repo
Adding repo from: https://mirrors.aliyun.com/docker-ce/linux/rhel/docker-ce.repo
# 安装docekr-ce
[root@ceph1 ~]# yum install docker-ce -y
# 配置加速器
[root@ceph1 ~]# mkdir -p /etc/docker/
cat >> /etc/docker/daemon.json << EOF
{
"registry-mirrors":[
"https://p3kgr6db.mirror.aliyuncs.com",
"https://docker.m.daocloud.io",
"https://your_id.mirror.aliyuncs.com",
"https://docker.nju.edu.cn/",
"https://docker.anyhub.us.kg",
"https://dockerhub.jobcher.com",
"https://dockerhub.icu",
"https://docker.ckyl.me",
"https://cr.console.aliyun.com"
],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
# 设置docker为开机自启
[root@ceph1 ~]# systemctl enable --now docker
- 仅在server上操作
[root@ceph1 ~]# yum install cephadm -y
# 通过docker快速初始化一个ceph集群节点
cephadm --docker bootstrap \
--mon-ip 172.19.228.45 \
--initial-dashboard-user admin \
--initial-dashboard-password redhat \
--dashboard-password-noupdate \
--allow-fqdn-hostname
- 集群扩容
# 将ceph1的公钥拷贝到ceph2和ceph3节点上
[root@ceph1 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub ceph2
[root@ceph1 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub ceph3
# 添加节点到集群
[root@ceph1 ~]# cephadm shell ceph orch host add ceph2
[root@ceph1 ~]# cephadm shell ceph orch host add ceph3
# 先配置epel(三台主机都配置)
[root@ceph1 ~]# dnf config-manager --set-enable crb
[root@ceph1 ~]# dnf install epel-release -y
# 替换默认源
[root@ceph1 ~]# cp /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
cp /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
cp /etc/yum.repos.d/epel-cisco-openh264.repo /etc/yum.repos.d/epel-cisco-openh264.repo.backup
[root@ceph1 ~]# sed -e 's!^metalink=!#metalink=!g' \
-e 's!^#baseurl=!baseurl=!g' \
-e 's!https\?://download\.fedoraproject\.org/pub/epel!https://mirrors.aliyun.com/epel!g' \
-e 's!https\?://download\.example/pub/epel!https://mirrors.aliyun.com/epel!g' \
-i /etc/yum.repos.d/epel{,-testing}.repo
# 安装ceph-common
[root@ceph1 ~]# yum install ceph-common -y
# 仅在ceph1节点操作
[root@ceph1 ~]# ceph orch apply osd --all-available-devices
Scheduled osd.all-available-devices update...
# 监控ceph集群状态
[root@ceph1 ~]# ceph -w
# 设置ceph1为管理节点
[root@ceph1 ~]# ceph orch host label add ceph1 _admin
Added label _admin to host ceph1
# 部署monitor监控,在任意节点做都可以
[root@ceph1 ~]# ceph orch apply mon "ceph1 ceph2 ceph3"
Scheduled mon update...
# 部署mgr
[root@ceph1 ~]# ceph orch apply mgr --placement "ceph1 ceph2 ceph3"
Scheduled mgr update...
-
在集群搭建完成后,发现
mon.ceph1和mgr.ceph1.yshvau两个daemon处于unknown状态 -
解决办法:重新部署ceph1节点上的MON和MGR
# 重新部署 MON
通过 Orchestrator 重新部署
ceph orch daemon rm mon.ceph1 --force # 删除失败的 MON
ceph orch apply mon --placement="ceph1" # 重新部署
# 重新部署mgr
ceph orch daemon rm mgr.ceph1.cjmtst --force # --force 用于强制删除(可选,视状态而定)
ceph orch apply mgr --placement="ceph1" --name=mgr.ceph1.cjmtst
# 在重新部署完后,可能会出现clock skew detected on mon.ceph1, mon.ceph3
# 这是时间漂移引起的问题
# 解决办法:重载时间同步服务器

浙公网安备 33010602011771号