基于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

相关推荐
jyan_敬言3 小时前
【Docker】docker网络配置
网络·docker·容器
2501_920047033 小时前
k8s-pod的启动
云原生·容器·kubernetes
王家视频教程图书馆6 小时前
docker部署mssql
docker·容器·sqlserver
祁同伟.7 小时前
【C++】栈、队列、双端队列、优先级队列、仿函数
c++·容器·stl
K_i1348 小时前
Kubernetes实战:MariaDB误删恢复与数据持久化
容器·kubernetes·mariadb
Lin_Aries_04219 小时前
基于 CI/CD(Jenkins)将 Spring Boot 应用自动部署到 Kubernetes 集群
spring boot·ci/cd·docker·容器·自动化·jenkins
Lin_Aries_042111 小时前
在 Kubernetes 集群中运行并发布应用程序
运维·nginx·docker·云原生·容器·kubernetes·自动化
2501_9200470311 小时前
k8s-pod的镜像升级与回滚
云原生·容器·kubernetes
码路工人12 小时前
第10章:K8s 数据持久化
docker·云原生·容器