【问题标题】:Add Datacenter existing cluster添加数据中心现有集群
【发布时间】:2019-08-25 20:07:03
【问题描述】:

我尝试将一个 dc 添加到我现有的集群中。我用一个键空间更改了我的 networkTopologie,但新的 DC 就像完整的副本一样工作。我只更改了一个键空间拓扑,但其他键空间的行转到新的 DC。当我在现有集群中添加一个插入内容时,这些内容也会转到新的 DC。

当我将新 DC 添加到我的集群时的其他问题我丢失了我用来连接 cassandra 的超级用户。

我的脚步;

在现有节点上;

  1. cassandra-rackdc.properties更改为:
dc=datacenter1
rack=rack1
  1. 更改 cassandra.yaml snitch: GossipingPropertyFileSnitch
  2. 节点滚动重启:nodetool flush && nodetool drain && service cassandra stop
  3. 更新特定于应用程序的键空间以仅使用现有 DC 的 NetworkTopology
  4. ALTER KEYSPACE {keyspace} WITH replication = {'class': 'NetworkTopologyStrategy', 'datacenter1': '3'} AND durable_writes = true;

新数据中心;

  1. 创建新实例并在所有节点上安装 cassandra,不要启动服务
  2. 选择单个节点作为 DC 的种子
  3. cassandra.yaml 更新为所有相同的设置,包括cluster_name 等...并优化设置并将种子设置为除所选DC 种子之外的所有设置 在选定的种子集 cassandra.yaml 上为数据中心 1(现有)中的 1-2 个 IP 提供种子
  4. 将 cassandra-rackdc.properties 更改为:
dc=datacenter2
rack=rack1
  1. 在选定的 DC 种子节点上启动服务
  2. 检查nodetool status 新节点是否在 cassandra 中正确加入
  3. 在每次启动之间间隔 2 分钟以 1×1 启动其他节点

现有集群:

更改键空间拓扑

ALTER KEYSPACE {keyspace} 
  WITH replication = {'class': 'NetworkTopologyStrategy', 
     'datacenter1': '3', 'cassandra': '3'} 
  AND durable_writes = true;

键空间架构;

        system_auth |           True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'datacenter1': '1', 'datacenter2': '1'}
      system_schema |           True |                                                   {'class': 'org.apache.cassandra.locator.LocalStrategy'}
                msg |           True |                       {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '1'}
              event |           True |                     {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'datacenter1': '1'}
 system_distributed |           True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'datacenter1': '1', 'datacenter2': '1'}
             system |           True |                                                   {'class': 'org.apache.cassandra.locator.LocalStrategy'}
      system_traces |           True | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'datacenter1': '1', 'datacenter2': '1'}
Datacenter: datacenter1

=======================
Status=Up/Down

|/ State=Normal/Leaving/Joining/Moving
--  Address        Load       Tokens       Owns    Host ID    
                           Rack
UN  xxxxxx   230.49 KiB  256          ?       6a31597c-a86f-4e01-8f59-425d4f96f5fd  rack1
UN  yyyyyy   342.55 KiB  256          ?       bdc1eb13-9707-4a5f-83f0-1cbfafbc520f  rack1

Datacenter: datacenter2

=======================
Status=Up/Down

|/ State=Normal/Leaving/Joining/Moving

--  Address        Load       Tokens       Owns    Host ID                               Rack
UN  zzzzzzzz   273.42 KiB  256          ?       cc56b7d5-15b7-4744-91f5-2ae2e6ac3a8e  rack1
UN  tttttttt  281.71 KiB  256          ?       4682ed50-7189-4903-8ed5-7c9bbdb09811  rack1

注意:非系统键空间没有相同的复制设置,有效的所有权信息没有意义

【问题讨论】:

  • “我只更改了一个键空间拓扑,但其他键空间的行进入了新的 DC。当我在现有集群中添加一些内容时,这些也进入了新的 DC。”你怎么知道数据会流向其他 DC。您是否打开“跟踪”并查看其他 DC 的节点是否参与检索数据?您可以使用“nodetool status ”检查密钥空间的所有权,这显示了哪个节点有多少百分比的数据
  • 我只有两个键空间,第一个是 msg,另一个是 event。事件拓扑是 NetworkTopologyStrategy 和 datacenter 1 和 datacenter 2 。味精键空间 simpleStrategy 和 datacenter1 。但是当我从现有集群中插入一行时,我可以从我的新数据中心看到这一行,并且 cassandra 在 cassandra DATA 目录下创建一个 msg 目录。 nodetool status msg 显示两个数据中心信息
  • 我可以看到 nodetool status msg 的输出吗?它应该显示有关两个 DC 的信息,但在“拥有”下,它显示 datacenter2 中每个节点的 0.0。
  • ./nodetool status msg 数据中心:datacenter1 |/ State=Normal/Leaving/Joining/Moving -- 地址加载令牌拥有(有效)主机 ID 机架 UN 10.34.166.51 279.87 KiB 256 32.4% be697f8f- 974A-404F-8BD6-1B0206BDE173 RACK1 UN 10.34.167.52 342.45 KIB 256 32.5%F1B0C631-48F5-431C-91E7-3D7E7EF29B99 RACK1 UN 10.34.167.53 274.92 KIB 256 33.3%8905A972-5DB0-4E6F-AF22-3CF6E5D795F7 RACK1 SPAN>
  • 数据中心:datacenter2 =======================状态=上/下|/状态=正常/离开/加入/移动 - 地址加载令牌拥有(有效)主机ID机架UN 10.34.166.22 182.84 KIB 256 33.2%E9177E05-51C8-4535-8CF4-B9849D18C91F RACK1 UN 10.34.166.21 193.34 KIB 256 33.0%5B9231AD-E300-4D81-A024-AE355FE1C2E6 RACK1 UN 10.34.167.111 352.09 KiB 256 35.6% 993683f5-eac5-40dc-a57e-d6126a3c1852 rack1

标签: cassandra nosql cassandra-3.0


【解决方案1】:

有详细流程说明here请过目。

TDLR,过程包含这些步骤

  1. 将所有键空间更改为使用 NTS,使用 LocalStrategy 的键空间除外
  2. 使用包含其他 DC 种子节点的种子节点配置启动新节点
  3. 更改键空间以添加新的 DC
  4. 请在所有新节点上运行 nodetool rebuild <old_dc_name>
  5. 如果需要,将客户端更改为使用新的 DC

【讨论】:

    猜你喜欢
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 2018-03-23
    • 2019-05-10
    • 2021-05-10
    • 2011-12-03
    相关资源
    最近更新 更多