许吉友 - 运维

Ceph V2 版本消息协议

官方教程:https://ceph.readthedocs.io/en/latest/rados/configuration/msgr2/

Messenger V2协议或 msgr2 是 Ceph 在线协议的第二个主要修订。它具有几个主要功能:

Ceph守护程序现在可以绑定到多个端口,从而允许旧版Ceph客户端和支持v2的新客户端连接到同一集群。

默认情况下,监视器现在绑定到新的v2协议的新IANA分配端口3300(ce4h或0xce4),同时还绑定到旧的默认端口6789(旧的v1协议)。

地址格式

在nautilus之前,所有网络地址都呈现为1.2.3.4:567/89012,其中有一个IP地址,一个端口和一个随机数,以唯一地标识网络上的客户端或守护程序。从nautilus开始,我们现在有三种不同的地址类型:

因为守护程序现在绑定到多个端口,所以现在用地址向量而不是单个地址来描述它们。例如,将 Monitor 映射转储到 Nautilus 群集上现在包括以下行:

epoch 1
fsid 50fcf227-be32-4bcb-8b41-34ca8370bd16
last_changed 2019-02-25 11:10:46.700821
created 2019-02-25 11:10:46.700821
min_mon_release 14 (nautilus)
0: [v2:10.0.0.10:3300/0,v1:10.0.0.10:6789/0] mon.foo
1: [v2:10.0.0.11:3300/0,v1:10.0.0.11:6789/0] mon.bar
2: [v2:10.0.0.12:3300/0,v1:10.0.0.12:6789/0] mon.baz

方括号或地址向量表示可以在多个端口(和协议)上访问同一守护程序。如果可能,任何连接到该守护程序的客户端或其他守护程序都将使用v2协议(首先列出);否则,它将返回到旧版v1协议。旧版客户端将仅看到v1地址,并且将继续使用v1协议进行连接。

从Nautilus开始,mon_host 配置选项和 -m 命令行选项支持相同的带括号的地址矢量语法。

配置使用哪个协议

两个新的配置选项控制是否使用 v1 或 v2协议:

同样,两个选项控制是否使用IPv4和IPv6地址:

连接模式

v2协议支持两种连接模式:

在Nautilus中,安全模式使用AES-GCM流密码,该密码在现代处理器上通常非常快(比SHA-256密码哈希更快)。

连接模式配置

对于大多数连接,有一些选项可以控制使用哪种模式:

有一组并行的选项专门适用于监视器,允许管理员设置与监视器通信的不同(通常更安全)要求:

从 V1 过渡到 V2 + V1

默认情况下,从Nautilus 14.2.z开始,ms_bind_msgr2为true。但是,在 monitors 开始使用v2之前,只有有限的服务才能开始发布v2地址。

对于大多数用户,monitors 已绑定到 v1 协议的默认旧版端口6789。在这种情况下,启用v2非常简单:

$ ceph mon enable-msgr2

如果监视器绑定到非标准端口,则需要为v2明确指定其他端口。例如,如果监视器mon.a绑定到1.2.3.4:1111,并且您想要在端口1112上添加v2,则:

$ ceph mon set-addrs a [v2:1.2.3.4:1112,v1:1.2.3.4:1111]

监视器绑定到v2后,每个守护程序将在下一次重新启动时开始发布v2地址。

更新CEPH.CONF和MON_HOST

在Nautilus之前,CLI用户或守护程序通常将通过 /etc/ceph/ceph.conf 中的 mon_host 选项发现 monitors 。

此选项的语法已从Nautilus开始扩展,以允许支持新的方括号列表格式。例如,像这样的旧语法:

mon_host = 10.0.0.1:6789,10.0.0.2:6789,10.0.0.3:6789

可以修改为:

mon_host = [v2:10.0.0.1:3300/0,v1:10.0.0.1:6789/0],[v2:10.0.0.2:3300/0,v1:10.0.0.2:6789/0],[v2:10.0.0.3:3300/0,v1:10.0.0.3:6789/0]

但是,使用默认端口(3300和6789)时,可以将其省略:

mon_host = 10.0.0.1,10.0.0.2,10.0.0.3

一旦在监视器上启用了 v2,可能需要更新 ceph.conf 以不指定任何端口(这通常是最简单的),或者显式指定 v2 和 v1 地址。但是请注意,只有Nautilus和更高版本才能理解新的带括号语法,因此请不要在尚未升级其 ceph 软件包的主机上进行此更改。

当您更新ceph.conf时,请注意使用 ceph config generate-minimal-conf 命令(该命令会生成准系统配置文件,其中包含足够的信息以到达 monitors)

ceph config assimilate-conf 将配置文件选项移至监视器的配置数据库中。

# ceph config assimilate-conf < /etc/ceph/ceph.conf
# ceph config generate-minimal-config > /etc/ceph/ceph.conf.new
# cat /etc/ceph/ceph.conf.new
# minimal ceph.conf for 0e5a806b-0ce5-4bc6-b949-aa6f68f5c2a3
[global]
        fsid = 0e5a806b-0ce5-4bc6-b949-aa6f68f5c2a3
        mon_host = [v2:10.0.0.1:3300/0,v1:10.0.0.1:6789/0]
# mv /etc/ceph/ceph.conf.new /etc/ceph/ceph.conf