cephadm 部署 Ceph 集群

发布时间: 更新时间: 总字数:1329 阅读时间:3m 作者: IP上海 分享 网址

使用cephadm安装部署Ceph集群示例,Cephadm采用docker部署Ceph集群。

节点说明

  • ceph-admin: 192.168.122.100
  • 网络
    • cluster-network 192.168.2.0/24
    • public-network 192.168.122.0/24
  • ceph 其他节点
IP Domain Hostname Services
192.168.122.101 stor01.kb.cx c1 mon,osd
192.168.122.102 stor02.kb.cx c2 mgr,osd,mds
192.168.122.103 stor03.kb.cx c3 rgw,osd
  • 操作系统 ubuntu20.04

节点准备

192.168.122.101 stor01.kb.cx
192.168.122.102 stor02.kb.cx
192.168.122.103 stor03.kb.cx
  • 关闭 iptable 和 firewalld
systemctl stop iptables
systemctl stop firewalld
systemctl disable iptables
systemctl disable firewalld
  • 关闭 SElinux
  • 若使用普通用户管理集群,需创建部署Ceph的Linux账号,需要有sudo权限(使用 sudo -l 确认权限),所有节点添加:
useradd cephadm && echo password | passwd --stdin cephadmin
echo "cephadm ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephadm
chmod 0440 /etc/sudoers.d/cephadm
  • 生成SSH证书,并分发到其他节点
ssh-keygen -t rsa -P ''
ssh-copy-id -i .ssh/id_rsa.pub cephadm@<ip>
  • 依赖安装

cephadm 部署 ceph 集群时,需要如下依赖:

安装

安装

# 下面的命令会自动安装 docker 等依赖
apt install -y cephadm

$ cephadm version
ceph version 15.2.16 (d46a73d6d0a67a79558054a3a5a72cb561724974) octopus (stable)
$ docker images
REPOSITORY          TAG       IMAGE ID       CREATED       SIZE
quay.io/ceph/ceph   v15       3edede73a7c4   7 weeks ago   1.17GB

第一次执行时,会从 quay.io/ceph/ceph 下载镜像,docker hub 镜像地址为:quayioceph/ceph

  • 配置 ceph 源,可以将 /etc/apt/sources.list.d/ceph.list 中的地址替换为国内的
cephadm add-repo --release octopus

创建集群

使用 cephadm 创建 Ceph 集群的流程为:

  • 初始化第一个 mon 节点
  • 配置 ceph 命令行
  • 扩展集群 osd 节点

初始化 mon 节点

$ cephadm --image quayioceph/ceph:v15.2.15 bootstrap --mon-ip 192.168.122.101 --allow-fqdn-hostname --skip-firewalld --skip-mon-network --dashboard-password-noupdate --skip-monitoring-stack
...
Ceph Dashboard is now available at:

	     URL: https://localhost:8443/
	    User: admin
	Password: 3yl0jg27z0

You can access the Ceph CLI with:

	sudo /usr/sbin/cephadm shell --fsid cc349a96-d055-11ec-8e7d-613f264fd19a -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring

Please consider enabling telemetry to help improve Ceph:

	ceph telemetry on
...
Bootstrap complete.

显示出 Bootstrap complete. 表示部署成功。使用:

  1. --image quayioceph/ceph:v15.2.15 指定镜像地址
  2. --registry-url 指定仓库 https://hub.docker.com/u/quayioceph
  3. --single-host-defaults

cephadm shell 介绍

使用 cephadm 安装的环境,执行 cephadm shell 时实际是启动一个容器并进入,使用如下命令进入容器:

$ cephadm shell
Inferring fsid cc349a96-d055-11ec-8e7d-613f264fd19a
Inferring config /var/lib/ceph/cc349a96-d055-11ec-8e7d-613f264fd19a/mon.x/config
Using recent ceph image quay.io/ceph/ceph@sha256:d44d13d20c17faa7a6c5e7a24fe5d048fd80e6913b09f2095cc48178cb9376fc
root@x:/# ceph -s
  cluster:
    id:     cc349a96-d055-11ec-8e7d-613f264fd19a
    health: HEALTH_WARN
            OSD count 0 < osd_pool_default_size 3

  services:
    mon: 1 daemons, quorum x (age 11m)
    mgr: x.eqqohq(active, since 9m)
    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:
root@x:/# ceph -v
ceph version 15.2.16 (d46a73d6d0a67a79558054a3a5a72cb561724974) octopus (stable)

也可以在宿主机上安装 ceph 的 client 客户端:

apt install -y ceph-common

向集群加入其他节点

  • 复制 mon 容器的公钥到其他节点:
ssh-copy-id -f -i /etc/ceph/ceph.pub c1
ssh-copy-id -f -i /etc/ceph/ceph.pub c2
ssh-copy-id -f -i /etc/ceph/ceph.pub c3
  • 安装依赖,配置时间服务器、关闭Selinux、iptable、firewalld等
apt install python3 docker docker.io -y
  • 添加主机到集群
ceph orch host add c1 192.168.122.101 _admin

# help
$ ceph orch --help
...
orch host add <hostname> [<addr>] [<labels>...]            Add a host
orch host label add <hostname> <label>                     Add a host label
orch host label rm <hostname> <label>                      Remove a host label
orch host ls [plain|json|json-pretty|yaml]                 List hosts
orch host ok-to-stop <hostname>                            Check if the specified host can be safely stopped without
                                                            reducing availability
orch host rm <hostname>                                    Remove a host
orch host set-addr <hostname> <addr>                       Update a host address
...

说明:

  1. c1 为主机的 hostname,使用 hostname 命令获取
  2. 192.168.122.101 为 public network 的 ip
  3. _admin 为 label,带有 _admin 的会自动赋值 ceph.conf 指定的 keyring 文件,即 Ceph 集群的管理权限

模拟磁盘

貌似暂时还不支持。参考:Linux loop 设备模拟磁盘

dd if=/dev/zero of=/data/vol-1 bs=1M count=10240
sudo losetup $(losetup -f) /data/vol-1

添加OSD

一个机器可以有多个磁盘,每一个磁盘都需要启动一个OSD进程进行管理。cephadm 支持两种方式:

  1. 批量磁盘添加,OSD是无序的
  2. 指定磁盘添加,可控
  • 查看每个机器上的块设备:
$ ceph orch device ls
Hostname  Path      Type  Serial  Size   Health   Ident  Fault  Available
c2        /dev/vdb  hdd           16.1G  Unknown  N/A    N/A    Yes
c2        /dev/vdc  hdd           16.1G  Unknown  N/A    N/A    Yes
c2        /dev/vdd  hdd           16.1G  Unknown  N/A    N/A    Yes

磁盘通过 ceph-volume 容器在机器上周期扫描获取的,可使用的磁盘需满足如下条件:

  1. The device must have no partitions.
  2. The device must not have any LVM state.
  3. The device must not be mounted.
  4. The device must not contain a file system.
  5. The device must not contain a Ceph BlueStore OSD.
  6. The device must be larger than 5 GB.
  • 一次性添加所有磁盘,该方式一旦设置,只有机器上新增磁盘就会自动创建对象的OSD
ceph orch apply osd --all-available-devices --dry-run

# help
orch apply osd [--all-available-devices] [--dry-run] [--   Create OSD daemon(s) using a drive group spec
 unmanaged] [plain|json|json-pretty|yaml]

关闭自动发现磁盘自动创建OSD

ceph orch apply osd --all-available-devices --unmanaged=true
  • 指定磁盘添加OSD
ceph orch daemon add osd <host:drives>
  • 其他添加方式:可以使用yaml文件指定日志分区等信息
ceph-volume lvm prepare --bluestore --data <device>

# 指定WAL/DB设备做OSD时
ceph-volume lvm prepare --bluestore --data <device> --block.wal <wal-device> --block.db <db-device>

删除集群

cephadm rm-cluster --fsid <fsid> --force

测试

测试 Ceph 集群

参考

  1. https://docs.ceph.com/en/latest/cephadm/install/
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数