cephadm配置Ceph集群
-
配置hosts
vi /etc/hosts
-
关闭防火墙、SELinux
systemctl stop firewalld # ubuntu换成ufw setenforce 0
- 装docker
(暂略)
- 安装
cephadm
wget https://github.com/ceph/ceph/blob/v16.2.7/src/cephadm/cephadm chmod +x cephadm ./cephadm add-repo --version 15.2.7 # 指定ceph版本 ./cephadm install ceph-common ceph # 客户端软件包 ./cephadm install # 把cephadm装到系统环境中
其实cephadm
也可以用包管理器装。似乎cephadm
的版本和要部署的ceph集群版本可以不一致。
-
创建本机最小集群
mkdir -p /etc/ceph cephadm bootstrap --mon-ip <ip>
其中
<ip>
替换成本机在ceph集群中欲配置的ip地址,这里不能用主机名。 - 配置集群免密登录
ssh-copy-id -f -i /etc/ceph/ceph.pub <user>@<host>
<user>
和<host>
替换成要加入集群的机器名称。
- 进入ceph容器命令行
cephadm shell
这一步的目的可以理解为隔离环境,也就是说允许在本机不安装ceph包的情况下,运行ceph相关的管理命令,可以保证本地环境不被污染。注意退出本shell之后所有临时生成的文件会被删除,但是命令记录似乎会被保留。
- 将节点添加进集群(在其它节点上部署docker容器)
# 在cephadm shell中执行 ceph orch host add <hostname> <host-ip> # --labels _admin 以作为管理员节点
<hostname>
和<host-ip>
替换成要添加的节点的hosts名称和ip。
- 部署
ceph mon
# 在cephadm shell中执行 # ceph config set mon public_network XXX.XXX.XXX.XXX/XX # 配置网段,不清楚是否为必须 ceph orch apply mon <host1>,<host2>,...
使用服务器的hosts名称指定要部署mon的节点,用逗号(不加空格)分开。
- 部署
ceph osd
osd要求使用裸盘,任何建立了文件系统的盘都不能用作osd。
将集群中所有节点的裸盘用作osd:
# 在cephadm shell中执行
ceph orch apply osd --all-available-devices
如果要详细指定仅使用满足某些特定条件的盘,可以参考https://docs.ceph.com/en/quincy/cephadm/services/osd/#drivegroups
,用yml定制过滤器,并用--dry-run
检查过滤器写的是否符合预期。
- 创建CephFS
# 在cephadm shell中执行 ceph fs volume create default
这样会创建一个名为default
的CephFS,默认的副本数应该是3。
改成1的方法:
ceph config set mon mon_allow_pool_size_one true
ceph osd pool set cephfs.default.data size 1 --yes-i-really-mean-it
一些翻车后的小技巧:
删除集群后,释放osd占用的裸盘:
ceph-volume lvm zap /dev/sdX --destroy
CephFS创错了,删除提示配置不允许删除:
# 在cephadm shell中执行
ceph config set mon mon_allow_pool_delete true
从集群中删除节点:
ceph orch host rm <host> --force
若是离线了还要加上--offline
参数。
查看集群中所有ceph服务的运行状态:
ceph orch ps
一台机器的所有服务都炸了,或者没删除服务就卸载ceph了:
# 在cephadm shell中执行
ceph orch daemon redeploy <service>.<host>
比如ceph orch daemon redeploy mon.ceph01
将会重新配置ceph01
节点上的mon
服务容器。
清理集群删除失败时留下的残渣(相当于移除机器上与ceph相关的所有信息,包括配置文件、数据)
# 删除服务
for i in `systemctl | grep ceph | awk '{print $1}' | grep -P 'service|target'`; do systemctl stop $i; done
rm -rf /etc/systemd/system/ceph*
systemctl daemon-reload
# 删除配置文件
rm -rf /var/lib/ceph
rm -f /etc/ceph/*
# 然后还可能需要zap掉创建的osd,参见上文
虽然没怎么用到,但是插眼:https://www.cnblogs.com/oloroso/p/14647299.html