我对ceph了解不多。据我所知,RBD是ceph的分布式块存储设备,相同的数据应该存储在组成ceph集群的几台计算机上。那么,这种分布式块设备(ceph RBD(是否具有负载平衡能力?换句话说,如果多个客户端(在我的情况下,它将是QEMU(使用这个RBD块存储,并且它们同时读取相同的数据,ceph RBD会平衡流量并从集群中的不同计算机同时将其发送到客户端吗?还是只有一台计算机将其数据发送到多个客户端?如果我有一个由6台计算机组成的ceph集群和一个由3台计算机组成。这些RBD的性能有什么不同吗?
这不是负载平衡,但ceph的分布式特性允许并行服务许多客户端。如果我们关注的是大小为3的复制池,则有3个不同的磁盘(在不同的主机上(存储着完全相同的对象。但是总有一个主OSD将写请求转发到其他副本。这会使写入请求稍微慢一点,但读取请求只由主OSD提供,因此它比写入快得多。由于客户";谈话;直接到操作系统(他们从MON获得地址(,许多客户端可以并行服务。特别是因为OSD不将RBD存储为单个对象,而是将其拆分为许多由"0"分组的对象;放置组";。然而,如果你真的谈论多个客户端正在读取完全相同的对象,你必须知道RBD上有watchers
可以锁定它们,这样只有一个客户端可以更改数据。如果您能更详细地描述您的场景,我们可以提供更多信息。
如果我有一个由6台计算机组成的ceph集群和一个ceph集群由3台计算机组成。的性能有什么不同吗这些RBD?
这取决于实际配置(合理数量的PG、压缩规则、网络等(,但通常答案是肯定的,您拥有的ceph节点越多,您可以并行服务的客户端就越多。与其他存储系统相比,Ceph可能没有最好的性能(当然,这取决于实际设置(,但它的可扩展性非常好,因此随着客户端数量的增加,性能保持不变。
https://ceph.readthedocs.io/en/latest/architecture/
ceph RBD是否具有负载平衡能力?
是的。对于RBD,有rbd_read_from_replica_policy
选项:
"…用于确定哪个OSD将接收读取操作的策略。如果设置为默认值,则每个PG的主OSD将始终用于读取操作。如果设置为平衡,读取操作将发送到复制集中随机选择的OSD。如果设置为本地化,读取操作将发送到CRUSH映射确定的最近OSD…
注意:此功能要求集群配置最低兼容OSD版本的Octopus">