注意
本文档适用于 Ceph 的开发版本。
通过 DNS 查找 Monitor
自 Ceph 11.0.0 (Kraken) 版本以来,RADOS 支持通过 DNS 查找 Monitor。
通过 DNS 查找 Monitor 功能的增加意味着守护进程和客户端在其 ceph.conf 配置文件中不再需要 mon host 配置指令。
通过 DNS 更新,客户端和守护进程可以了解 Monitor 拓扑结构中的更改。更精确和技术性地说,客户端使用 DNS SRV TCP 记录来查找 Monitor。
默认情况下,客户端和守护进程查找名为 ceph-mon 的 TCP 服务,该服务由 mon_dns_srv_name 配置指令配置。
注意
除了使用 DNS 搜索域之外,还可以通过将搜索域的名称后跟下划线传递给 mon_dns_srv_name 来手动指定搜索域。其语法为 <service-name>_<upper-level-domain>。例如,传递 ceph-mon_example.com 将指示 Ceph 在 _ceph-mon._tcp.example.com 处查找 SRV 记录。
示例
当 DNS 搜索域设置为 example.com 时,DNS 区域文件可能包含以下元素。
首先,为 Monitor 创建记录,可以是 IPv4 (A) 或 IPv6 (AAAA)。
mon1.example.com. AAAA 2001:db8::100
mon2.example.com. AAAA 2001:db8::200
mon3.example.com. AAAA 2001:db8::300
mon1.example.com. A 192.168.0.1
mon2.example.com. A 192.168.0.2
mon3.example.com. A 192.168.0.3
有了这些已存在的记录,我们可以创建名为 ceph-mon 的 SRV TCP 记录,指向这三个 Monitor。
_ceph-mon._tcp.example.com. 60 IN SRV 10 20 6789 mon1.example.com.
_ceph-mon._tcp.example.com. 60 IN SRV 10 30 6789 mon2.example.com.
_ceph-mon._tcp.example.com. 60 IN SRV 20 50 6789 mon3.example.com.
现在所有 Monitor 都运行在端口 6789 上,优先级分别为 10、10、20,权重分别为 20、30、50。
Monitor 客户端通过引用 SRV 记录来选择 Monitor。如果一个集群有多个具有相同优先级值的 Monitor SRV 记录,客户端和守护进程将根据 SRV 权重字段的值按比例对连接进行负载均衡。
对于上述示例,这将导致大约 40% 的客户端和守护进程连接到 mon1,60% 连接到 mon2。但是,如果两者都不可达,则 mon3 将被重新考虑作为备用。
另请参阅 Messenger v2。