基于OpenEuler--docker容器化部署ceph集群

目录

一、安装Docker

1、配置阿里源

2、安装docker

[3、Docker 镜像加速器的配置文件](#3、Docker 镜像加速器的配置文件)

4、启动docker

二、部署ceph集群

1、设置主机名

2、hosts解析

3、时间同步

[4、cephadm 配置](#4、cephadm 配置)

[配置ceph yum 源](#配置ceph yum 源)

5、安装python3

6、安装常用软件

三、ceph1管理主节点执行

[1、ceph1 上安装cephadm](#1、ceph1 上安装cephadm)

[2、ceph1 使用cephadm 初始化ceph集群](#2、ceph1 使用cephadm 初始化ceph集群)

3、集群扩容

拷贝公钥至ceph2、ceph3

4、添加节点到集群

[四、安装 ceph-common](#四、安装 ceph-common)

检查主机添加结果

已添加到集群的主机列表

关键信息说明

[✅ 集群状态良好](#✅ 集群状态良好)

五、添加osd (对象存储设备)

验证命令

六、设置ceph1为管理节点

[七、将 mon 和 mgr 组件部署到指定节点中](#七、将 mon 和 mgr 组件部署到指定节点中)

验证

[八、Ceph Dashboard Web 访问配置](#八、Ceph Dashboard Web 访问配置)

[1.启用 Dashboard 模块](#1.启用 Dashboard 模块)

[2.创建 SSL 证书](#2.创建 SSL 证书)

[3. 配置访问设置](#3. 配置访问设置)

4.创建管理员账户

5.获取访问地址

6、访问


一、安装Docker

所有节点都要安装

1、配置阿里源

bash 复制代码
cat <<EOF >> /etc/yum.repos.d/docker-ce.repo 
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com//docker-ce/linux/centos/9/x86_64/stable/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF

2、安装docker

bash 复制代码
yum install -y docker-ce
3、Docker 镜像加速器的配置文件
bash 复制代码
 cat <<EOF >> /etc/docker/daemon.json
{
    "registry-mirrors": [
        "https://0vmzj3q6.mirror.aliyuncs.com",
        "https://docker.m.daocloud.io",
        "https://mirror.baidubce.com",
        "https://dockerproxy.com",
        "https://mirror.iscas.ac.cn",
        "https://huecker.io",
        "https://dockerhub.timeweb.cloud",
        "https://noohub.ru",
        "https://vlgh0kqj.mirror.aliyuncs.com"
    ]
}
EOF

4、启动docker

bash 复制代码
#重载docker配置文件
systemctl daemon-reload
#启动docker并开机自启
systemctl enable --now docker

二、部署ceph集群

所有节点都执行

1、设置主机名

bash 复制代码
 hostnamectl set-hostname ceph1
 hostnamectl set-hostname ceph2
 hostnamectl set-hostname ceph3

2、hosts解析

bash 复制代码
cat >> /etc/hosts << EOF
192.168.158.31 ceph1
192.168.158.32 ceph2
192.168.158.33 ceph3
EOF

3、时间同步

bash 复制代码
yum install chrony -y
#在/etc/chrony.conf添加如下
vim /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (https://www.pool.ntp.org/join.html).
pool pool.ntp.org iburst
pool ntp.aliyun.com iburst  #添加这一行
​
[root@ceph1 ~]# vim /etc/chrony.conf
[root@ceph1 ~]# systemctl restart chronyd
[root@ceph1 ~]# chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^- 119.28.183.184                2   6     7     3  -1492us[+1507us] +/-   83ms
^- time.nju.edu.cn               1   6    17     0  -2807us[-2807us] +/-   43ms
^- time.neu.edu.cn               2   6    17     0  -1510us[-1510us] +/-   26ms
^+ stratum2-1.ntp.mow01.ru.>     2   6     7     1  -1748us[-1748us] +/-   91ms
^* 203.107.6.88                  2   6    17     1   -733us[+2266us] +/-   32ms

4、cephadm 配置

配置ceph yum 源
bash 复制代码
cat > /etc/yum.repos.d/ceph.repo <<EOF
[ceph]
name=ceph x86_64
baseurl=https://repo.huaweicloud.com/ceph/rpm-pacific/el8/x86_64
enabled=1
gpgcheck=0
[ceph-noarch]
name=ceph noarch
baseurl=https://repo.huaweicloud.com/ceph/rpm-pacific/el8/noarch
enabled=1
gpgcheck=0
[ceph-source]
name=ceph SRPMS
baseurl=https://repo.huaweicloud.com/ceph/rpm-pacific/el8/SRPMS
enabled=1
gpgcheck=0
EOF

5、安装python3

bash 复制代码
dnf install python3 -y

6、安装常用软件

bash 复制代码
yum install vim bash-completion net-tools tree -y

三、ceph1管理主节点执行

1、ceph1 上安装cephadm

bash 复制代码
[root@ceph1 ~]# yum install cephadm -y

2、ceph1 使用cephadm 初始化ceph集群

bash 复制代码
[root@ceph1 ~]# cephadm --docker bootstrap \
--mon-ip 192.168.158.31 \
--initial-dashboard-user admin \
--initial-dashboard-password redhat \
--dashboard-password-noupdate \
--allow-fqdn-hostname

3、集群扩容

拷贝公钥至ceph2、ceph3
bash 复制代码
#生成公钥
[root@ceph1 ~]# ssh-keygen   #一路回车
#拷贝公钥给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

4、添加节点到集群

bash 复制代码
[root@ceph1 ~]# cephadm shell ceph orch host add ceph2
[root@ceph1 ~]# cephadm shell ceph orch host add ceph3
[root@ceph1 ~]# ceph -s
  cluster:
    id:     434186fe-9af5-11f0-aa53-000c29f843bc
    health: HEALTH_WARN
            OSD count 0 < osd_pool_default_size 3
 
  services:
    mon: 3 daemons, quorum ceph1,ceph3,ceph2 (age 34m)
    mgr: ceph1.myafri(active, since 37m), standbys: ceph3.umfacj
    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:    
​

四、安装 ceph-common

但是,如果ceph主节点没有ceph命令的话也需要安装ceph-common

bash 复制代码
#openEuler 不需要 epel-release
#openEuler 有自己的软件生态体系
[root@ceph1 ~]# yum install epel-release -y    #如果是OpenEuler,这步命令可以省略  
​
# 在 ceph1 上执行(图片中缺失的关键步骤!)
[root@ceph1 ~]# yum install ceph-common -y
​
# 在 ceph2 上执行  
[root@ceph2 ~]# yum install ceph-common -y
​
# 在 ceph3 上执行
[root@ceph3 ~]# yum install ceph-common -y
​

注意:这个设计体现了Ceph分布式架构的特点

安装ceph-common ⭐关键步骤

需要在每个新节点上单独执行 让每个节点都能识别和执行ceph相关命令 这样新节点才能正常与集群通信和提供服务

复制代码
bash 复制代码
•ceph1 节点上不需要执行 yum install ceph-common -y。
只在管理节点 ceph1 上安装 EPEL 仓库
在新增节点 ceph2 、ceph3 上安装 ceph-common 客户端工具
为什么这样设计?••
•职责分离原则•:
•ceph1•:作为管理节点,主要负责集群管理和配置
•ceph2/ceph3•:作为数据节点,需要 ceph-common 来与集群通信
​
ceph-common 的作用•
ceph-common 是 Ceph 的客户端工具包,包含:
# 包含的关键命令:
ceph          # 集群管理命令
rbd           # 块设备管理
rados         # 对象存储管理
ceph-authtool # 认证管理
•每个要加入 Ceph 集群的节点都需要安装,而不仅仅是管理节点。

检查主机添加结果

bash 复制代码
# 在ceph1上执行,查看集群中的所有主机
#这时 ceph1 已经设置为管理节点了
[root@ceph1 ~]# ceph orch host ls
HOST   ADDR            LABELS  STATUS  
ceph1  192.168.158.31  _admin          
ceph2  192.168.158.32                  
ceph3  192.168.158.33                  
3 hosts in cluster
​
#如果ceph1不是管理节点那就执行如下命令,设置ceph1为管理节点,_admin 标签表示 ceph1 具有集群管理权限
[root@ceph1 ~]# ceph orch host label add ceph1 _admin
复制代码

根据 ceph orch host ls 命令的输出结果,Ceph集群中已经成功添加了以下3台主机

已添加到集群的主机列表
主机名 IP地址 标签 状态
ceph1 192.168.158.31 _admin 正常
ceph2 192.168.158.32 正常
ceph3 192.168.158.33 正常
关键信息说明
✅ 集群状态良好
  • 总主机数: 3台

  • 管理节点 : ceph1(带有 _admin 标签)

  • 所有节点: 状态正常,无错误提示

五、添加osd (对象存储设备)

在ceph1、ceph2、ceph3 添加磁盘,用做添加OSD

bash 复制代码
# 直接在 ceph1 上添加 /dev/sda 作为 OSD
[root@ceph1 ~]# ceph orch daemon add osd ceph1:/dev/sda
Created osd(s) 0 on host 'ceph1'
​
# 在ceph1上为ceph2节点添加OSD
[root@ceph1 ~]# ceph orch daemon add osd ceph2:/dev/sda
Created osd(s) 1 on host 'ceph2'
​
# 在ceph1上为ceph3节点添加OSD  
[root@ceph1 ~]# ceph orch daemon add osd ceph3:/dev/sda
Created osd(s) 2 on host 'ceph3'
验证命令

添加后检查操作结果

bash 复制代码
# 检查 OSD 状态
[root@ceph1 ~]# ceph osd tree
ID  CLASS  WEIGHT   TYPE NAME       STATUS  REWEIGHT  PRI-AFF
-1         0.05846  root default                             
-3         0.01949      host ceph1                           
 0    hdd  0.01949          osd.0       up   1.00000  1.00000
-5         0.01949      host ceph2                           
 1    hdd  0.01949          osd.1       up   1.00000  1.00000
-7         0.01949      host ceph3                           
 2    hdd  0.01949          osd.2       up   1.00000  1.00000
​
# 查看集群存储容量变化
ceph -s
​
# 确认设备状态
ceph orch device ls

注意:如果是用被使用过的磁盘当作OSD请注意下面几点

执行完后再执行添加osd

bash 复制代码
#清理磁盘(确保干净)
# 擦除磁盘上的任何残留签名(谨慎操作!)
sudo wipefs -a /dev/sda
​
# 或者使用dd清理磁盘开头部分(更安全)
sudo dd if=/dev/zero of=/dev/sda bs=1M count=100
​
# 验证清理结果
sudo blkid /dev/sda  # 应该没有输出
​
注意:如果磁盘之前被使用过,可能需要先擦除。但根据输出,磁盘是干净的,所以不需要额外擦除。不过,为了确保干净,我们可以使用以下命令擦除(如果之前被使用过,但根据输出,这里不需要):
但根据图片,磁盘是干净的,所以跳过擦除步骤。
​
如果遇到磁盘被占用的情况,可以尝试以下命令擦除:
ceph orch device zap ceph1 /dev/sda --force

六、设置ceph1为管理节点

_admin 标签表示 ceph1 具有集群管理权限

bash 复制代码
#如果ceph1已经是管理节点了,那这一步略过
[root@ceph1 ~]# ceph orch host label add ceph1 _admin

七、将 mon 和 mgr 组件部署到指定节点中

bash 复制代码
[root@ceph1 ~]# ceph orch apply mon ceph1,ceph2,ceph3
Scheduled mon update...
[root@ceph1 ~]# ceph orch apply mgr ceph1,ceph2,ceph3
Scheduled mgr update...
验证
bash 复制代码
[root@ceph1 ~]# ceph -s
  cluster:
    id:     434186fe-9af5-11f0-aa53-000c29f843bc
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum ceph1,ceph3,ceph2 (age 63m)
    mgr: ceph1.myafri(active, since 66m), standbys: ceph3.umfacj, ceph2.xevjxf
    osd: 3 osds: 3 up (since 15m), 3 in (since 15m)
 
  data:
    pools:   1 pools, 1 pgs
    objects: 2 objects, 449 KiB
    usage:   81 MiB used, 60 GiB / 60 GiB avail
    pgs:     1 active+clean

八、Ceph Dashboard Web 访问配置

1.启用 Dashboard 模块
bash 复制代码
[root@ceph1 ~]# ceph mgr module enable dashboard
module 'dashboard' is already enabled
2.创建 SSL 证书
bash 复制代码
[root@ceph1 ~]# ceph dashboard create-self-signed-cert
Self-signed certificate created
3. 配置访问设置
bash 复制代码
# 设置监听地址(允许所有IP访问)
[root@ceph1 ~]# ceph config set mgr mgr/dashboard/server_addr 0.0.0.0
​
# 设置端口(默认8443)
[root@ceph1 ~]# ceph config set mgr mgr/dashboard/server_port 8443
4.创建管理员账户
bash 复制代码
# 创建密码文件
[root@ceph1 ~]# echo "Q1w2e3r4@123.com" > dashboard-password.txt
[root@ceph1 ~]# cat dashboard-password.txt 
Q1w2e3r4@123.com
# 创建管理员用户
ceph dashboard ac-user-create admin -i dashboard-password.txt administrator
#如果出现下面用户已存在的情况
[root@ceph1 ~]# ceph dashboard ac-user-create admin -i dashboard-password.txt administrator
User 'admin' already exists
# 重置 admin 用户密码
ceph dashboard ac-user-set-password admin -i dashboard-password.txt
​
# 删除密码文件(安全考虑)
rm -f dashboard-password.txt
复制代码
5.获取访问地址
bash 复制代码
# 查看 dashboard 服务地址
[root@ceph1 ~]# ceph mgr services
{
    "dashboard": "https://192.168.158.31:8443/",
    "prometheus": "http://192.168.158.31:9283/"
}
6、访问

点击高级

点击继续访问

输入刚才创建好的用户和密码

admin/Q1w2e3r4@123.com

相关推荐
功德+n3 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
小敬爱吃饭4 小时前
Ragflow Docker部署及问题解决方案(界面为Welcome to nginx,ragflow上传文件失败,Docker中的ragflow-cpu-1一直重启)
人工智能·python·nginx·docker·语言模型·容器·数据挖掘
木子欢儿4 小时前
Docker Hub 镜像发布指南
java·spring cloud·docker·容器·eureka
coppher5 小时前
Ubuntu 22.04 amd64 离线安装 Docker 完整教程
linux·docker
虚伪的空想家7 小时前
k8s集群configmap和secrets备份脚本
linux·容器·kubernetes
SXJR7 小时前
k8s中的Pod
云原生·容器·kubernetes
文静小土豆7 小时前
K8s 滚动更新在 Java 应用中的实践与优化
java·容器·kubernetes
w6100104667 小时前
CKA-2026-Ingress
云原生·容器·kubernetes·cka
bloglin999998 小时前
docker logs 如何一直监听日志输出
运维·docker·容器
说实话起个名字真难啊9 小时前
Docker 入门之网络基础
网络·docker·php