使用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 |
节点准备
192.168.122.101 stor01.kb.cx
192.168.122.102 stor02.kb.cx
192.168.122.103 stor03.kb.cx
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-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.
表示部署成功。使用:
--image quayioceph/ceph:v15.2.15
指定镜像地址--registry-url
指定仓库 https://hub.docker.com/u/quayioceph
--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
向集群加入其他节点
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
...
说明:
c1
为主机的 hostname,使用 hostname
命令获取192.168.122.101
为 public network 的 ip_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 支持两种方式:
- 批量磁盘添加,OSD是无序的
- 指定磁盘添加,可控
$ 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
容器在机器上周期扫描获取的,可使用的磁盘需满足如下条件:
- The device must have no partitions.
- The device must not have any LVM state.
- The device must not be mounted.
- The device must not contain a file system.
- The device must not contain a Ceph BlueStore OSD.
- 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
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 集群