Ceph 集群从零到生产:cephadm 部署 + 第一周必做清单
为什么用 cephadm 而不是 ceph-ansible
Nautilus 之后官方主推 cephadm,原因是它只依赖 SSH + container runtime,部署比 ansible 简洁很多。生产推荐直接上 cephadm,老的 ceph-deploy/ceph-ansible 维护不动了。
引导(bootstrap)
# 引导节点上
curl --silent --remote-name --location https://github.com/ceph/ceph/raw/quincy/src/cephadm/cephadm
chmod +x cephadm
./cephadm add-repo --release quincy
./cephadm install
cephadm bootstrap --mon-ip <第一个MON的IP> --initial-dashboard-password 'YourPassword'
引导完成会输出 dashboard URL 和 admin 凭据。
加节点 + 加 OSD
# 把其他节点加入集群
ceph orch host add node2 <node2-ip> _admin
ceph orch host add node3 <node3-ip>
# 自动发现并使用所有未用的盘
ceph orch apply osd --all-available-devices
# 或精确指定
ceph orch daemon add osd node2:/dev/sdb
第一周必做清单
- 改时间同步:所有节点 chronyd,偏移 >50ms MON 会闹脾气
- 关闭 swap:
swapoff -a+ 注释 fstab - public_network / cluster_network 分离:业务流量和复制流量分开物理网卡
- mon_max_pg_per_osd 调大:默认 250,集群规模小时容易撞
- 设 mon_allow_pool_delete=true:测试期允许删 pool(生产再关)
- dashboard 改 HTTPS:
ceph dashboard create-self-signed-cert - 配 telegraf/prometheus 抓监控:
ceph mgr module enable prometheus - 加一份 admin keyring 备份:丢了集群进不去
一个反直觉的事
cephadm 部署后,所有服务都是容器,不要去 systemctl restart ceph-mon@xxx,要用 ceph orch daemon restart mon.xxx。否则状态会和 orchestrator 不一致。