避免为操作系统提前创建用户
ceph
否则会引起安装包时不能正常执行 post-install 脚本
-
依赖: 参见 环境准备
-
环境示例
节点 Public Network IP Cluster Network IP bj1sn01 10.128.0.101/16 10.129.0.101/16 bj1sn02 10.128.0.102/16 10.129.0.101/16 bj1sn03 10.128.0.103/16 10.129.0.102/16 bj1sn04 10.128.0.104/16 10.129.0.103/16 -
配置 hosts 文件
使用 3 个管理节点
cat > admin <<EOF [email protected].[101-103] EOF cat > hosts <<EOF # sn 10.128.0.101 bj1sn01 10.128.0.102 bj1sn02 10.128.0.103 bj1sn03 10.128.0.104 bj1sn04 EOF pdcp -w ^admin hosts /tmp/hosts pdsh -w ^admin "cat /tmp/hosts >> /etc/hosts"
-
配置 docker
pdsh -w ^all apt install docker.io -y cat > daemon.json <<EOF { "proxies": { "http-proxy": "http://10.128.0.90:3128", "https-proxy": "http://10.128.0.90:3128", "no-proxy": "127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,100.64.0.0/10,localhost,.example.com" } } EOF pdcp -w ^all daemon.json /etc/docker pdsh -w ^all systemctl restart docker
-
安装 Cephadm 用于部署集群
pdsh -w ^all apt install -y cephadm pdsh -w ^all cephadm add-repo --release reef --repo-url http://mirrors.ustc.edu.cn/ceph --gpg-url http://mirrors.ustc.edu.cn/ceph/keys/release.gpg pdsh -w ^all cephadm install pdsh -w ^all cephadm version
-
安装 Ceph CLI 用于管理集群
pdsh -w ^all cephadm install ceph-common pdsh -w ^all ceph -v
-
引导新集群
在 bootstrap 节点(sn01)执行
cephadm bootstrap --allow-fqdn-hostname --mon-ip 10.128.0.101 --cluster-network 10.129.0.0/16 ceph -s
- 创建一个 mon 和 mgr 守护进程
- 生成新的 SSH key 并添加到
/root/.ssh/authorized_keys
- 复制一份公钥到
/etc/ceph/ceph.pub
- 生成最小配置文件到
/etc/ceph/ceph.conf
- 复制一份用户
client.admin
secret 到/etc/ceph/ceph.client.admin.keyring
- 增加 label
_admin
到引导节点
如果节点数量小于 5 个,则把 mon 服务设置为 3 个
ceph orch apply mon --placement="3"
-
添加节点
-
添加集群 ssh public key 到其它新的节点
- 从 bootstrap 节点的文件
/etc/ceph/ceph.pub
获取 ssh public key - 然后此 key 追加到所有新节点文件
/root/.ssh/authorized_keys
中
- 从 bootstrap 节点的文件
-
访问 ceph dashboard 并修改配置
ceph dashboard set-grafana-api-url https://10.128.0.101:3000/
-
添加新节点到集群中 (在 bootstrap 节点执行)
ceph orch host add sn002.example.local --labels _admin ceph orch host add sn003.example.local --labels _admin ceph orch host ls
-
其它配置
-
如果上游的 container image 被移除,可以执行
ceph config set global container_image xxx
-
如果添加节点属于不同的网络,需要指定
public_network
和cluster_network
参数ceph config set mon public_network "10.128.0.0/16,10.130.0.0/16" ceph config set global cluster_network "10.129.0.0/16,10.131.0.0/16"
-
-
-
-
注意检查磁盘上存在分区
-
查看可用磁盘
ceph orch device ls [--wide]
- 检查磁盘是否支持 libstoragemgmt
cephadm shell lsmcli ldl
- 如果支持则执行开启
ceph config set mgr mgr/cephadm/device_enhanced_scan true
- 不支持 NVMe 设备
- 检查磁盘是否支持 libstoragemgmt
-
可以执行清除磁盘以使其可用 (可选)
ceph orch device zap ceph1 /dev/sdb
-
创建 service spec 描述添加那些磁盘
# 查看磁盘属性 > ceph-volume inventory </path/to/disk>
# osd-hdd.yaml service_type: osd service_id: hdd placement: host_pattern: sn* spec: data_devices: rotational: 1 size: '7.28T'
# osd-ssd.yaml service_type: osd service_id: ssd placement: host_pattern: sn* spec: data_devices: rotational: 0 size: '6.99T'
- 如果 size 值不明确,也可以指定范围,例如
size: '6T:7T'
# 部署 hdd # --dry-run 不实际部署,用于检查配置是否正确, 执行 --dry-run 等待一段时间后再重复执行 ceph orch apply osd -i osd-hdd.yaml --dry-run ceph orch apply osd -i osd-hdd.yaml # 部署 ssd ceph orch apply osd -i osd-ssd.yaml --dry-run ceph orch apply osd -i osd-ssd.yaml # 查看 cephadm 部署日志 ceph -W cephadm ceph log last cephadm ceph osd tree ceph -s
- 如果 size 值不明确,也可以指定范围,例如
-
-
创建 crush rule
# ceph osd crush rule create-replicated <name> <root> <failure-domain> <class> ceph osd crush rule create-replicated rep_hdd default host hdd ceph osd crush rule create-replicated rep_ssd default host ssd # ceph osd crush rule create-replicated <name> <root> <failure-domain> <class> # 创建 EC 4+2 纠删码,存储集群至少有 7 个节点 ceph osd erasure-code-profile set ec42_hdd k=4 m=2 crush-root=default crush-failure-domain=host crush-device-class=hdd # 创建 EC 8+3 纠删码,存储集群至少有 12 个节点 ceph osd erasure-code-profile set ec83_hdd k=8 m=3 crush-root=default crush-failure-domain=host crush-device-class=hdd # 如果需要创建 SSD EC 纠删码,修改 `crush-device-class=ssd` 即可
- 缺省自带副本类 crush rule
replicated_rule
,如果系统中存在 HDD 和 SSD 两类设备这将混用在一起,这会带来不稳定性能。 - 一般显示创建副本类 crush rule 指定设备类型(例如上面明确 ssd 设备)
- 缺省自带副本类 crush rule
-
使 PG Autoscale 工作
每个 Pool 中的 PG 数量会影响到性能,Ceph 提供自动调整 PG 数量功能。
# 解决 ceph osd pool autoscale-status 输出为空以及 PG Autoscale 不工作问题 ceph osd pool set .mgr crush_rule rep_ssd
-
部署完 Ceph 集群后并不能提供对外服务,需要根据应用场景部署对应服务
-
其它
-
使用多路径设备,重启节点 lvm 别名设备丢失问题
这是因为重启节点时 lvm 先处理 /dev/sd* 设备导致被锁定,无法处理对应 /dev/mapper/mpath* 设备
# 打开文件 /etc/lvm/lvm.conf # 添加一行, 让 lvm 只处理 /dev/mapper/mpath* 设备 filter = [ "a|/dev/mapper/mpath.*|", "r|.*|" ] # 然后执行 update-initramfs -u # 重启节点 reboot
-