Elassandra 复制信息和机架配置

Elassandra replication information and rack configuration

我最近开始使用带有两个数据中心的 Elassandra 集群,这些数据中心已使用 NetworkTopologyStrategy 配置。

集群详细信息:Elassandra 6.2.3.15 = Elasticsearch 6.2.3 + Cassandra 3.11.4

Datacenter: DC1
=================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address       Load       Tokens       Owns    Host ID                               Rack
UN  <ip1>         50 GiB  256          ?       6cab1f4c-8937-437d-b010-0a5677443dc3  rack1
UN  <ip2>         48 GiB  256          ?       6c9e7ad5-a642-4c0d-8b77-e78d821d904b  rack1
UN  <ip3>         50 GiB  256          ?       7e493bc6-c8a5-471e-8eee-3f3fe985b90a  rack1
Datacenter: DC2
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address       Load       Tokens       Owns    Host ID                               Rack
UN  <ip4>         47 GiB  256          ?       c49c1203-cc38-41a2-b9c8-2b42bc907c17  rack1
UN  <ip5>         67 GiB  256          ?       0d9f31bc-9690-49b6-9d88-4fb30c1b6c0d  rack1
UN  <ip6>         88 GiB  256          ?       80c4d60d-185f-457a-ae9b-2eb611735f07  rack1

架构信息
CREATE KEYSPACE my_keyspace WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1': '3', 'DC2': '3'} AND durable_writes = true;

DC2 是一种灾难恢复站点,在理想情况下,我们应该只能在发生灾难时使用它。

  1. 鉴于我的知识非常有限,我强烈怀疑我们需要 修改机架配置以获得 'proper' D/R 集群(所以 DC1 中的数据在 DC2 中被复制)或者我得到这个 错误的?如果是这样,是否有可遵循的标准准则?
  2. 当有多个 DC 时,无论机架配置如何,Cassandra 都会自动复制吗? (机架是一种额外的故障证明吗?)
  3. DC2 的数据比 DC1 多。这纯粹与哈希函数有关吗?
  4. 这个集群还有其他可以整改的地方吗?

非常感谢!

这些复制设置意味着您的密钥空间的数据在 2 个 DC 之间实时复制,每个 DC 有 3 个副本(副本):

CREATE KEYSPACE my_keyspace WITH replication = {
  'class': 'NetworkTopologyStrategy',
  'DC1': '3',
  'DC2': '3'
}

Cassandra 中的复制是实时发生的——发送到一个 DC 的任何写入都会同时发送到所有其他 DC。与传统的 RDBMS 或具有 primary/secondary 或 active/DR 的配置不同,Cassandra 复制是即时且即时的。

逻辑 Cassandra 机架用于额外的冗余机制。如果您将 C* 节点部署在不同的 (a) 物理机架,或 (b) public 云可用性区域,Cassandra 会将副本分发到单独的机架,以便每个机架都有数据的完整副本。在 DC 中的复制因子为 3 时,如果一个机架由于某种原因出现故障,那么在剩余的 2 个机架中仍然有完整的数据副本,并且 read/write 请求的一致性为 LOCAL_QUORUM(或更低) ) 不会受到影响。

我在这篇 post 中更详细地解释了这一点 -- https://community.datastax.com/questions/1128/

如果您是 Cassandra 的新手,我们推荐 https://www.datastax.com/dev which has links to short hands-on tutorials where you can quickly learn the basics of Cassandra -- all free. This tutorial is a good place to start -- https://www.datastax.com/try-it-out。干杯!