如果在 Apache Cassandra 数据中心和机架不直接关联到物理机架或数据中心,那么如何处理容错?
If in Apache Cassandra datacenter and rack do not directly correlate to a physical rack or datacenter then how fault tolerance is handled?
我正在阅读此处提供的文档:https://www.datastax.com/blog/2019/03/distributed-database-things-know-cassandra-datacenter-racks。它说机架和数据中心是一种抽象,而不是硬映射到物理上的东西。我也遇到了这个:
A Cassandra rack is a logical grouping of Cassandra nodes within the
ring. Cassandra uses racks so that it can ensure replicas are
distributed among different logical groupings. As a result, operations
are sent to not just one node, but multiple nodes, each on a separate
rack, providing greater fault tolerance and availability.
我的问题是,如果它们没有被复制到不同的物理设备上 nodes/racks 那么如果一台机器出现故障那么所有逻辑“机架”、“数据中心”是否也会变得不可用?我可能错过了很多关于这方面的信息,但话又说回来,在搜索了很多之后我并没有得到太多清晰的图片。
你完全正确。 Cassandra 允许您指定 逻辑 数据中心和机架,应该 与其 物理 对应。
但是没有什么强迫你这样做的。您绝对可以选择在单个物理数据中心内创建多个逻辑数据中心。您可以使用单独的逻辑机架定义每个节点,这些机架很可能放在一起。更复杂的是,所有节点都可以在同一个管理程序主机上实例化。
在这种情况下,如果整个数据中心、机架或单个主机宕机,集群将完全不可用。
出于显而易见的原因,我建议不要这样做。当我在云环境(内部或外部)中部署时,我确保我尽可能多地了解物理层。这样我就能够构建逻辑数据中心抽象来避免物理上的单点故障。
我正在阅读此处提供的文档:https://www.datastax.com/blog/2019/03/distributed-database-things-know-cassandra-datacenter-racks。它说机架和数据中心是一种抽象,而不是硬映射到物理上的东西。我也遇到了这个:
A Cassandra rack is a logical grouping of Cassandra nodes within the ring. Cassandra uses racks so that it can ensure replicas are distributed among different logical groupings. As a result, operations are sent to not just one node, but multiple nodes, each on a separate rack, providing greater fault tolerance and availability.
我的问题是,如果它们没有被复制到不同的物理设备上 nodes/racks 那么如果一台机器出现故障那么所有逻辑“机架”、“数据中心”是否也会变得不可用?我可能错过了很多关于这方面的信息,但话又说回来,在搜索了很多之后我并没有得到太多清晰的图片。
你完全正确。 Cassandra 允许您指定 逻辑 数据中心和机架,应该 与其 物理 对应。
但是没有什么强迫你这样做的。您绝对可以选择在单个物理数据中心内创建多个逻辑数据中心。您可以使用单独的逻辑机架定义每个节点,这些机架很可能放在一起。更复杂的是,所有节点都可以在同一个管理程序主机上实例化。
在这种情况下,如果整个数据中心、机架或单个主机宕机,集群将完全不可用。
出于显而易见的原因,我建议不要这样做。当我在云环境(内部或外部)中部署时,我确保我尽可能多地了解物理层。这样我就能够构建逻辑数据中心抽象来避免物理上的单点故障。