搭建简单的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.ceph1mgr.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
# 这是时间漂移引起的问题
# 解决办法:重载时间同步服务器
posted @ 2025-04-20 19:21  hanasea  阅读(110)  评论(0)    收藏  举报