精读笔记(RHCA 英文教材)· CL260 Chapter 3 Configuring a Red Hat Ceph Storage Cluster
大约 8 分钟
精读笔记(RHCA 英文教材)· CL260 Chapter 3 Configuring a Red Hat Ceph Storage Cluster
教材原文:RHCA 官方英文教材(PDF 第 81~114 页)(OCR 整书版已从本站移除,本页为章节精读) 关联知识:Ch1 架构 / Ch2 部署;
00-RHCA教材精读-导航与学习法.md
Chapter Goal / Objectives(原文+译)
- GOAL: Configure a Red Hat Ceph Storage cluster.(配置 RHCS 集群)
- OBJECTIVES: ① 识别并配置集群主设置(配置数据库/配置文件);② 配置集群 MON(quorum、配置库、cephx);③ 配置集群网络(public/cluster 分离、防火墙)。
- 结构:三个 Section(Cluster Configuration Settings / Cluster Monitors / Cluster Networking,各带 Guided Exercise)+ 章末 Lab。
3.1 Managing Cluster Configuration Settings(配置管理)
配置总览:集中式配置数据库取代 ceph.conf
- 集群必含四类定义:集群网络、MON 配置与 bootstrap 选项、集群认证配置、daemon 配置项。
- RHCS 5 已不推荐 ceph.conf,首选 MON 上的集中式配置数据库(自动在 MON 间同步);daemon 启动时按“默认值 → 配置数据库 → 本地配置文件 → 环境变量 → 命令行参数 → 运行时覆盖”的优先级取数,后面的源覆盖前面的源;本地文件在启动时覆盖数据库。
- 命名规范:配置项用小写+下划线(如
cluster_network),统一推荐风格。
ceph.conf 与配置段(INI 格式)
- 默认
/etc/ceph/ceph.conf,[name]段 +key=value;#/;注释。 - 段名与作用域:
[global]通用;[mon]/[osd]/[mgr]/[mds]各守护进程;[client]全部客户端;实例级[daemon-type.instance-ID](OSD 实例 ID 恒为数字如[osd.0];client 用用户名如[client.operator3])。 - Meta variables(元变量):
$cluster(默认 ceph)、$type(mon/osd/mgr/mds/client)、$id(实例 ID)、$name(=$type.$id)、$host(运行主机)——让一条规则适配所有实例。 - 必须留在文件里、不能进数据库的设置:
mon_host(MON 列表);可选mon_host_override、mon_dns_srv_name(用 DNS SRV 记录发现 MON,可免配置文件)、*_data数据目录、keyring/keyfile/key认证凭据。 - 改配置文件的策略:
ceph.conf需手工在所有节点同步(如 rsync);也可cephadm bootstrap --config file传初始配置。
配置数据库命令与运行时覆盖
ceph config dump # 查看配置库全量(WHO/MASK/LEVEL/OPTION/VALUE/RO)
ceph config show <who> # 查看某 daemon 实际生效配置(含 SOURCE:default/mon/file/override…)
ceph config get <who> <option> # 查库中设置
ceph config set <who> <option> <value> # 写库(持久,daemon 重启仍生效)
ceph tell <type.sid> config get/set <option> [value] # 运行时临时改,重启还原;支持通配(如 osd.*)
ceph daemon <type.sid> config get/set <option> [value] # 直连 daemon 不走 MON,MON 挂掉也能用(排障利器)- 配置级别/来源列在
ceph config show的 SOURCE 列(default/mon=config 库/file=本地文件/override=临时覆盖…);ceph config dump的 MASK 是掩码(限制谁能读)。 - Service configuration files:YAML 服务规格(
service_type: mon+placement: {host_pattern:"mon*", count:3}等)由 cephadm 编排 daemon 的部署、数量与放置;OSD 规格支持data_devices过滤(size/model/paths)。
实验要点 · Guided Exercise(lab: configure-settings)
ceph config dump(看到 cluster_network、mgr/cephadm/registry_、mgr/dashboard/、client.rgw.realm.zone.* 的 rgw_frontends beast port=80)→ ceph config show osd.1(核对 SOURCE 列:mon_host 来自 file、daemonize 来自 override…)→ 用 ceph tell osd.1 config get debug_ms 查运行时值 → 用 ceph config set/Dashboard Cluster→Configuration 修改(Level=advanced 可看高级项)。
3.2 Configuring Cluster Monitors(MON 与 Cephx)
- MON 存集群 map;客户端必须先连 MON 拿 map 才能读写 OSD → MON 高可用配置是关键。
- MON 用 Paxos 变体选主/达成共识。角色三种:
- Leader:第一个拿到最新 cluster map 的 MON;
- Provider:有最新 map 但非 leader;
- Requester:map 落后,须先向 provider 同步才能重回 quorum。
- 新 MON 入集群必先同步;每个 MON 周期检查邻居是否有更新的 map。
- Quorum 规则:多数在线(5 台要 3 台在线);生产至少 3 台 MON(1 台=单点、2 台=各坏一台即失 quorum 的“双数陷阱”)。运行中可加/删 MON。
mon_host里的 v1:6789/v2:3300 双栈地址由 msgr 新旧协议给出;MON 变化后不要手工只改某台的 ceph.conf,用 rsync 等策略全集群同步。- Cephx 认证:共享密钥机制。
ceph config get mon auth_service_required(client↔MON 认证)与auth_cluster_required(daemon↔daemon)默认均cephx。client.adminkeyring(/etc/ceph/ceph.client.admin.keyring)是管理集群的钥匙;GE 中练习用ceph auth export client.admin导出到文件分发。 - 查看与运维:
ceph mon stat / ceph status # quorum 成员与状态
ceph mon dump # monmap:fsid、epoch、各 MON 地址
ceph config set mon <k> <v> # 调 MON 参数(如日志级别、max_mon_*)
ceph auth export client.admin # 导出 admin 密钥
ceph orch apply mon "serverc serverd servere" # 编排式调整 MON 数量/位置- 注意 MON 数据库(mon_data,Paxos 日志)会增长;必要时归档/裁剪(GE 里检查了 MON db 空间)。
实验要点 · Guided Exercise(lab: configure-monitors)
查看 monmap 与 quorum → 检查 auth_service_required/auth_cluster_required=cephx → 导出 client.admin keyring 到管理机 → 观察 MON 数据库空间与日志行为。
3.3 Configuring Cluster Networking(网络分离与防火墙)
Public / Cluster 双网络
- Public network:客户端与 MON、客户端与 OSD 的前端流量,MON 永远只走 public。
- Cluster network(可选):OSD 之间后端流量——数据复制、heartbeat、backfill、recovery 全走它;好处:减 public 负载、缩攻击面、抗部分 DoS、防 OSD 间流量被切断导致读写中断、降低公网数据泄露风险(后端网段不路由到 public)。
- 配置:
# bootstrap 时直接建集群网络
cephadm bootstrap --mon-ip=... --cluster-network=172.25.249.0/24
# 或配置文件(可多子网,逗号分隔,CIDR)
[global]
public_network = 172.25.250.0/24,172.25.251.0/24
cluster_network = 172.25.249.0/24- 节点做法:每节点加一块网卡 → 配好 cluster 网 IP → 建规则。
- 要点:多子网必须可互路由;整条链路上所有节点/网络设备 MTU 必须一致(bond 口设 MTU,子接口自动继承);OSD 绑定端口范围可用
ms_bind_port_min/max调整(默认 6800–7300)。
默认端口表(防火墙要放行的)
| 服务 | 端口/TCP | 说明 |
|---|---|---|
| MON | 6789 (msgr1)、3300 (msgr2) | 集群内部通信 |
| OSD | 6800–7300 | 每 OSD 占 3 个:public(client/MON)、cluster(数据)、heartbeat |
| MDS | 6800–7300 | 与 MDS 通信 |
| Dashboard/MGR | 8443 | Dashboard SSL |
| Manager RESTful | 8003 | RESTful 模块 SSL |
| Manager Prometheus | 9283 | Prometheus 插件 |
| Prometheus Alertmanager | 9093 | 告警 |
| Node Exporter | 9100 | 指标导出 |
| Grafana | 3000 | 图形面板 |
| RGW | 80(cephadm 默认 beast;课堂 Lab 演示 7480) | RADOS 对象网关 |
| iSCSI Gateway | 9287 | iSCSI 网关 |
firewall-cmd --zone=public --add-port=6789/tcp --permanent # MON
firewall-cmd --zone=public --add-service=ceph-mon --permanent # 或服务名
firewall-cmd --zone=<public-or-cluster> --add-port=6800-7300/tcp --permanent # OSD 双区
firewall-cmd --zone=<zone> --add-service=ceph --permanent- OSD 节点要同时在 public 与 cluster 两个区放行;RGW 等按需放行其监听端口(GE/Lab:
firewall-cmd --zone=public --add-port=7480/tcp演示 RGW 规则)。
实验要点 · Lab(lab: configure-cluster / 对应评分命令见课堂)
综合练习:Dashboard Cluster→Configuration(advanced 视图)改配置 → 各节点加防火墙规则(MON 6789、OSD 6800-7300、RGW 端口)→ 验证集群 HEALTH_OK 与跨网通信。
命令速查表(本章)
| 命令 | 作用 |
|---|---|
ceph config dump | 打印配置库全部条目(WHO/LEVEL/VALUE) |
ceph config show <who> | 某 daemon 生效配置 + SOURCE 来源 |
ceph config get/set <who> <opt> [val] | 查/改配置库(持久) |
ceph tell <type.sid> config get/set <opt> [val] | 运行时临时改(重启还原),支持 osd.* 通配 |
ceph daemon <type.sid> config get/set <opt> [val] | 直连 daemon 改配置(不依赖 MON) |
ceph mon stat / ceph mon dump | quorum 状态 / monmap 详情 |
ceph auth export client.admin | 导出 admin 密钥环 |
ceph orch apply mon "主机1 主机2 主机3" | 编排 MON 数量与放置 |
cephadm bootstrap --cluster-network=… | 部署时即建 cluster 网络 |
firewall-cmd --zone=Z --add-port=P/tcp [--permanent] | 放行端口(6789/3300/6800-7300/8443…) |
| `firewall-cmd --zone=Z --add-service=ceph-mon | ceph [--permanent]` |
词汇表(本章)
| 英文术语 | 中文 | 一句话速记 |
|---|---|---|
| configuration database | 集中式配置库 | MON 维护、自动同步,RHCS5 首选(取代 ceph.conf) |
| ceph.conf / INI | 本地配置文件 | 启动时生效;mon_host 等引导参数必须留这 |
| config section | 配置段 | [global]/[mon]/[osd]/[mgr]/[mds]/[client]/[type.id] |
| meta variable | 元变量 | $cluster/$type/$id/$name/$host 简化配置 |
| config source | 配置来源 | default→mon(库)→file→env→argv→override 后覆盖前 |
| runtime override | 运行时覆盖 | ceph tell/daemon … config set,重启还原 |
| Paxos | 共识算法 | MON 选主与达成 quorum 的基础 |
| leader / provider / requester | 主/供给/请求者 | MON 三种角色(谁有最新 map) |
| quorum | 法定人数 | 多数 MON 在线;生产 ≥3 台 |
| monmap | 监控器地图 | MON 列表与地址(v1/v2) |
| Cephx | 共享密钥认证 | 客户端/守护进程间默认认证机制 |
| keyring | 密钥环 | ceph.client.admin.keyring 管理密钥 |
| public_network | 公共网络 | client↔MON/OSD 前端流量 |
| cluster_network | 集群网络 | OSD 间复制/heartbeat/backfill/recovery 后端流量 |
| ms_bind_port_min/max | OSD 绑定端口范围 | 默认 6800–7300 |
| MTU | 最大传输单元 | 全链路必须一致(bond 口设置) |
自测
- RHCS5 里 ceph.conf 与配置数据库的分工?哪些设置不能进数据库(mon_host/DNS SRV)?
- 说出 5 个配置来源及覆盖优先级;“重启后还原”的是哪类修改?
[osd.0]、[client.operator3]、$name各指什么?为什么 OSD 实例 ID 恒为数字?- MON 三种角色(Leader/Provider/Requester)如何互相同步?生产建议最少几台 MON、为什么?
ceph tell osd.1 config set debug_ms 20与ceph daemon osd.1 …的区别(MON 是否必需、是否持久)?- public_network 与 cluster_network 各自承载什么流量?分离后能防住什么(列举 ≥3)?
- 默认可达性清单:MON/OSD/MGR-Dashboard/RGW 各用什么端口?OSD 为什么每实例要 3 个端口?
- 防火墙规则为什么要在 public 与 cluster 两个 zone 都给 OSD 放行?
- cephx 的
auth_service_required与auth_cluster_required分别认证谁? - MTU 不一致会导致什么?bond 接口上 MTU 应设在哪层?
