卡桑德拉集群管理——添加新节点

  

卡桑德拉集群添加节点

  

注意

  

本文档只是体系文档中的一部分,前面文档信息详见:https://blog.51cto.com/michaelkang/2419518

  

场景:

  

用于节点扩容,测试方法:清理(172.20.101.165)节点上所有数据,模拟新节点加入;

  

确认内容:

  
 <代码> 1:使用相同版本的卡桑德拉
  2:注意,种子节点不能引导。确保新节点没有在种子列表中列出,不要使所有节点种子节点。
  3:复制加入直流现有节点配置文件到新节点,然后进行配置修改,文件如下:
  在卡桑德拉。yaml文件和cassandra-topology。属性或cassandra-rackdc.properties
  
  4:注意卡桑德拉。yaml文件中设置以下属性:
  auto_bootstrap:
  如果此选项已设置为假,则必须将其设置为真的。该选项未在默认的cassandra.yaml配置文件中列出,默认为真实的。
  
  CLUSTER_NAME:
  新节点正在加入的群集的名称。
  
  listen_address/broadcast_address:
  使用其他卡桑德拉节点用来连接到新节点的IP地址。
  
  endpoint_snitch:
  告密者卡桑德拉用来定位节点和路由请求。
  
  num_tokens:
  要分配给节点的vnode数量。使用与数据中心中其他节点上设置的相同数量的令牌,令牌范围按比例分配,如果硬件能力不同,则为容量更高,性能更好的系统分配更多的令牌范围。
  
  allocate_tokens_for_local_replication_factor:
  指定数据中心密钥空间的复制因子(RF)。
  
  5:加节点期间注意监控流量,进程,确保任务没有死掉; 
  

过程梳理:

  

1:安装服务,
2:同步配置文件,修改配置;
3:修改修改cassandra.ymal文件的streaming_socket_timeout_in_ms值。默认值是3600000,即1小时,改成172800000(48小时),保证时间足够传输完所有数据。

  

——同步过程会对集群带来很大的负载,所以尽可能关闭或限制一些功能,避免对线上业务造成影响。非必选项,执行命令4 - 5——
所有节点都关闭,包括新节点(新节点启动后关闭))
4:关闭所有节点的压缩:nodetool disableautocompaction
5:停止正在执行的压缩:nodetool停止压实

  

6:限制所有节点数据迁移流量:nodetool setstreamthroughput 32/64/更大
——限制为32 mbps/64 mbps/更大,假设你的集群有10个机器,那么你的新节点的流量大约是32 * 10 mbps。你可以根据数据迁移的进度,网络压力,节点压力,磁盘压力,完成的节点个数,调整这个值。

  

7:修改数据目录权限,如果调整了集群相关目录文件夹配置,首先要修改权限:乔恩- r卡桑德拉。卡桑德拉/var/lib/cassandra
8:启动引导程序节点(新加入节点执行):/etc/init.d/卡桑德拉开始
9。使用nodetool状态来验证节点是否已完全引导,并且所有其他节点都处于运行状态(联合国)而不处于任何其他状态。

  

10:现在重新开启所有节点自动压缩:nodetool enableautocompaction
11:关闭所有节点数据迁移流量:nodetool setstreamthroughput 0

  

12:手动清理每一台老节点磁盘空间:nodetool清理
在新节点成功加入之后,对每个先前存在的节点运行nodetool清理,花费时间较长,推荐后台运行nodetool清理。如果你不这样做,旧的数据仍然会在老节点上,占用磁盘空间。
清理是单线程操作,整体上影响不大,不需要关闭压缩。
清理是单机行为,也不需要限制节点流传输。
避开业务高峰时间,逐个节点执行。

  

验证集群数据

  
 <代码> [root@kubm-01 ~] # cqlsh 172.20.101.157 - u卡桑德拉- p卡桑德拉
  
  cassandra@cqlsh>从kevin_test.t_users SELECT *;
  
  user_id | | first_name | last_name邮件
  - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - -
  6 | {“k6-6@gmail.com”、“k6@pt.com”} | kevin6 |康
  7 | {“k7-7@gmail.com”、“k7@pt.com”} | kevin7 |康
  9 | {“k9-9@gmail.com”、“k9@pt.com”} | kevin9 |康
  4 | {“k4-4@gmail.com”、“k4@pt.com”} | kevin4 |康
  3 | {“k3-3@gmail.com”、“k3@pt.com”} | kevin3 |康
  5 | {“k5-5@gmail.com”、“k5@pt.com”} | kevin5 |康
  0 | {“k0-0@gmail.com”、“k0@pt.com”} | kevin0 |康
  8 | {“k8-8@gmail.com”、“k8@pt.com”} | kevin8 |康
  2 | {“k2-2@gmail.com”、“k2@pt.com”} | kevin2 |康
  1 | {“k1-1@gmail.com”、“k1@pt.com”} | kevin1 |康
   
  

参考信息:

  

https://blog.csdn.net/yuanjian0814/article/details/78768889

卡桑德拉集群管理——添加新节点