欢迎投稿

今日深度:

将数据中心添加到集群(二),数据中心添加集群

将数据中心添加到集群(二),数据中心添加集群


将数据中心添加到集群

将数据中心添加到现有群集的步骤。

如果新数据中心将使用其他数据中心或群集中的现有节点,请确保旧数据不会干扰新群集:

  • 将每个节点添加到新的数据中心。参见删除节点。

  • 完全删除应用程序目录。 请参阅将数据清除为独立进程或将数据清除为服务 。

  • 删除后,从头开始安装Cassandra或DataStax Enterprise 。

1. 为防止客户端过早连接到新的数据中心,并确保读取或写入的一致性级别不会查询新的数据中心:

  • 确保客户端配置为使用DCAwareRoundRobinPolicy 。

  • 确保客户端指向现有的数据中心,这样他们就不会尝试访问新的数据中心,而该数据中心可能没有任何数据。

  • 如果使用QUORUM一致性级别,请更改为LOCAL_QUORUM 。

  • 如果使用ONE一致性级别,请设置为LOCAL_ONE 。

请参阅您的驱动程序的编程说明。

警告:如果客户端应用程序(包括DSE Search和DSE Analytics)未正确配置,则可能在数据中心准备就绪之前连接到新的数据中心。 这会导致连接异常,超时和/或不一致的数据。

2. 配置keyspace并创建新的数据中心:

  • 使用ALTER KEYSPACE将NetworkTopologyStrategy用于以下密钥空间:

    • 所有用户创建的

    • system: system_distributed和system_traces

    • DataStax Enterprise:

      • dse_perf,请参阅配置性能服务复制策略

      • system_auth和dse_security,请参阅配置system_auth和dse_security密钥空间复制 。

      • dse_leases,cfs,cfs_archive,dsefs和HiveMetaStore,请参阅设置分析密钥空间的复制因子

    • OpsCenter(如果已安装)

此步骤对于多个数据中心群集是必需的,因为nodetool rebuild需要在指定的源数据中心中使用这些密钥空间的副本。

  • 确保所有现有的数据中心都使用NetworkTolologyStrategy。您可以使用cqlsh来创建或修改一个keyspace:
 ALTER KEYSPACE "sample_ks" WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'ExistingDC' : 3 }; 

注意:数据中心名称区分大小写。 验证使用实用程序的情况,如dsetool status 。

3. 在新数据中心中,在每个新节点上安装Cassandra。 不要启动服务或重新启动节点。
确保在群集中的所有节点上使用相同版本的Cassandra。 请参阅安装Apache Cassandra 3.0的早期版本。

4. 在集群中其他节点的配置之后,在每个新节点上配置cassandra.yaml :

  • 设置其他cassandra.yaml属性(如-seeds和endpoint_snitch) ,以匹配集群中其他节点上的cassandra.yaml文件中的设置。

    • 要设置的属性:

      • 群集名:

      • num_tokens: 推荐值:256

      • seeds: 每个种子节点的内部IP地址,在新的集群中。 种子节点不执行引导 (新节点加入现有集群的过程)。

      • listen_address:如果节点是种子节点,则该地址必须与种子列表中的IP地址匹配。 否则,gossip沟通失败,因为它不知道它是种子。
        如果没有设置,Cassandra会向系统请求本地地址,即与其主机名相关的地址。 在某些情况下,Cassandra不会生成正确的地址,您必须指定listen_address。

      • rpc_address: 监听客户端连接的地址告密 。

      • endpoint_snitch:告密者的姓名 (请参阅endpoint_snitch )如果要更换告密者,请参阅切换告密 。

      • auto_bootstrap: false( 仅在初始化没有数据的干净节点时添加此设置。)

注意: 不要将所有的节点设置为种子,请参阅节点间通信(gossip) 。

  • 使用以下设置来配置vnode令牌分配:

    • 随机选择算法 :在每个节点上设置num_tokens 。 注释掉initial_token和allocate_tokens_for_local_replication_factor
      num_tokens建议值为256. DataStax Enterprise的建议设置因系统类型而异,请参阅虚拟节点指导原则 。

    • 分配算法 :在每个节点上设置num_tokens和allocate_tokens_for_local_replication_factor 。 注释掉initial_token 。
      num_tokens建议值为8,而allocate_tokens_for_local_replication_factor是数据中心密钥空间的最高复制因子或最密集的数据密钥空间的RF。

注意:如果使用单令牌架构,请参阅生成令牌和添加或替换单令牌节点 。

5. 在每个新节点上,将新的数据中心定义添加到群集中使用的线索类型的属性文件中:

注意:不要使用SimpleSnitch。 SimpleSnitch(默认)仅用于单数据中心部署。 它不能识别数据中心或机架信息,只能用于公共云中的单数据中心部署或单区域。

每个snitch的配置文件

snitch 配置文件
PropertyFileSnitch cassandra-topology.properties
GossipPropertyFileSnitch cassandra-rackdc.properties
Ec2Snitch
Ec2MultiRegionSnitch
GoogleCloudSnitch

6. 在现有的数据中心中:

  • 在某些节点上,更新cassandra.yaml文件中的种子属性以将新的数据中心中的种子节点包括在内,并重新启动这些节点。 (对cassandra.yaml文件的更改需要重新启动才能生效。)

  • 将新的数据中心定义添加到集群中使用的流氓类型属性文件。 如果更改线索,请参阅切换线索 。

7. 在每个机架上的一个节点上启动Cassandra 。

8. 通过机架旋转启动Cassandra,直到所有节点都启动。

9. 所有节点在集群中运行并且客户端应用程序都是数据中心感知后,使用cqlsh来更改密钥空间:

ALTER KEYSPACE "sample_ks" WITH REPLICATION = {'class': 'NetworkTopologyStrategy', 'ExistingDC':3, 'NewDC':3}; 

警告:如果客户端应用程序(包括DSE Search和DSE Analytics)未正确配置,则可能在数据中心准备就绪之前连接到新的数据中心。 这会导致连接异常,超时或不一致的数据。

10. 在新数据中心的每个节点上运行nodetool重建 。

$ nodetool rebuild - name_of_existing_data_center 

警告:

  • 如果您不在命令行中指定现有的数据中心,则新节点将显示为成功重建,但不包含任何数据。

  • 如果您错过了这一步,如果现有的数据中心不完全同步,那么对具有LOCAL_ONE或ONE一致性级别的新数据中心的请求可能会失败。

此步骤可确保新节点识别集群中现有的数据中心。

您可以同时在一个或多个节点上运行重建。 一次在一个节点上运行,以减少对现有集群的影响。 集群可以处理额外的I / O和网络压力时,在多个节点上运行。

群集中的数据中心现在正在相互复制。

www.htsjk.Com true http://www.htsjk.com/cassandra/32544.html NewsArticle 将数据中心添加到集群(二),数据中心添加集群 将数据中心添加到集群 将数据中心添加到现有群集的步骤。 如果新数据中心将使用其他数据中心或群集中的现有节点,请确保旧数据...
相关文章
    暂无相关文章
评论暂时关闭