Ubuntu 22.04部署Ceph v18.2.4集群

本篇将逐一介绍Ubuntu 22.04 使用cephadm部署Ceph v18.2.4 集群的详细步骤。

1、Ubuntu系统准备

  • 修改主机名

     hostnamectl set-hostname ceph1
    
  • 编辑/etc/hosts文件,新增如下内容:

    192.168.1.1 ceph1
    192.168.1.2 ceph2
    192.168.1.3 ceph3
    
  • 设置中文时区

    timedatectl set-timezone Asia/Shanghai
    
  • 安装Ubuntu系统缺失的依赖:

    apt install chrony openssh-client -y
    
  • 同步系统时间

    按如下方式编辑 /etc/chrony/chrony.conf配置文件:

    ...
    pool ntp1.aliyun.com iburst
    ...
    

    重启chromy即可。可通过chronyc tracking命令查看本机时间同步状态。

2、安装Docker

提前下载好最新的deb包,并执行如下命令:

dpkg -i ./containerd.io_1.7.27-1_amd64.deb \
./docker-ce_28.0.4-1~ubuntu.22.04~jammy_amd64.deb \
./docker-ce-cli_28.0.4-1~ubuntu.22.04~jammy_amd64.deb \
./docker-buildx-plugin_0.22.0-1~ubuntu.22.04~jammy_amd64.deb \
./docker-compose-plugin_2.34.0-1~ubuntu.22.04~jammy_amd64.deb \
安装docker-compose

提前下载好docker-compose-linux-x86_64文件,并执行如下命令:

mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

3、安装cephadm

提前下载好cephadm文件,并执行如下命令:

mv cephadm /usr/local/bin/cephadm
chmod +x /usr/local/bin/cephadm

# cephadm add-repo --release reef
# 使用阿里云镜像
wget -q -O- 'https://mirrors.aliyun.com/ceph/keys/release.asc' | sudo apt-key add -
apt-add-repository 'deb https://mirrors.aliyun.com/ceph/debian-18.2.4/ jammy main'
apt update

cephadm install

# 安装Ceph CLI
cephadm install ceph-common

4、初始化Ceph集群

Ceph镜像从v17开始就是基于CentOS Stream 9构建的。CentOS Stream 9的最低要求包括:AMD and Intel 64-bit architectures (x86-64-v2),如果CPU不支持x86-64-v2指令集(主要是国产的CPU,如:海光),就会出现Fatal glibc error: CPU does not support x86-64-v2问题。

解决方法有2种:

  • 如果Ceph节点是一台虚机(如:深信服超融合云主机),就启用Host CPU模式运行;
  • 寻找[基于Ubuntu构建的Ceph镜像](https://github.com/canonical/ceph-containers/pkgs/container/ceph)作为替代品;

本文采用第2种方法:

cephadm --docker bootstrap --mon-ip 192.168.1.1

# cephadm --docker --image ghcr.io/canonical/ceph:18.2.4 bootstrap --mon-ip 192.168.1.1
cephadm --docker --image ghcr.nju.edu.cn/canonical/ceph:18.2.4 bootstrap --mon-ip 192.168.1.1

5、配置Ceph Dashboard

在上述步骤初始化完成之后,会出现这样一段提示:

Generating a dashboard self-signed certificate...
Creating initial admin user...
Fetching dashboard port number...
Ceph Dashboard is now available at:

             URL: https://ceph1:8443/
            User: admin
        Password: f39x48br94

Enabling client.admin keyring and conf on hosts with "admin" label
Saving cluster configuration to /var/lib/ceph/cac07d38-36a5-11f0-971c-cff4e8befd42/config directory
Enabling autotune for osd_memory_target
You can access the Ceph CLI as following in case of multi-cluster or non-default config:

        sudo /usr/local/bin/cephadm shell --fsid cac07d38-36a5-11f0-971c-cff4e8befd42 -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring

Or, if you are only running a single cluster on this host:

        sudo /usr/local/bin/cephadm shell

Please consider enabling telemetry to help improve Ceph:

        ceph telemetry on

For more information see:

        https://docs.ceph.com/en/latest/mgr/telemetry/

Bootstrap complete.

此时,访问https://192.168.250.1:8443即可。

6、添加、删除Ceph节点

ceph orch host ls
ssh-copy-id -f -i /etc/ceph/ceph.pub ceph2
ssh-copy-id -f -i /etc/ceph/ceph.pub ceph3

# 添加节点
ceph orch host add ceph2 --labels _admin
ceph orch host add ceph3 --labels _admin

# 删除节点
ceph orch host rm ceph2

7、添加裸盘到Ceph集群

如下命令可以一键添加Ceph集群内的所有裸盘:

ceph orch apply osd --all-available-devices

或者手动添加某个节点上的裸盘:

# 添加裸盘
ceph orch daemon add osd ceph2:/dev/vdb

ceph osd tree

8、测试用例

以在Ceph集群中读写一个test.txt文件为例:

# 本地创建test.txt文件
echo 'Hello, World!' > test.txt

# 创建Pool
ceph osd pool create test 16 16

# 设置Pool的存储类型
ceph osd pool application enable test rbd

# 上传test.txt文件到Pool
rados put test.txt ./test.txt  -p test

# 查看Pool下的内容
rados ls -p test

# 从Pool中下载test.txt对象到本地
rados get -p test test.txt ./test2.txt

9、卸载Ceph集群

cephadm reset

10、FAQ

11、常用的Ceph命令

# 查看集群状态
ceph -s

# 查看硬盘状态
lsblk

# 部署、删除服务
ceph orch apply ceph-exporter
ceph orch rm ceph-exporter
写于 2025年05月15日