Cassandra 集群管理-添加新节点

Cassandra 集群添加节点

注意

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

场景:

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

确认内容:

1:使用相同版本的Cassandra
2:注意,种子节点不能引导。确保新节点没有在-seeds列表中列出,不要使所有节点种子节点。
3:copy加入DC现有节点配置文件到新节点,然后进行配置修改,文件如下:
    在cassandra.yaml文件和 cassandra-topology.properties或 cassandra-rackdc.properties

4:注意cassandra.yaml文件中设置以下属性 :
auto_bootstrap:
如果此选项已设置为false,则必须将其设置为true。该选项未在默认的cassandra.yaml配置文件中列出,默认为true。

CLUSTER_NAME:
新节点正在加入的群集的名称。

listen_address/broadcast_address:
使用其他Cassandra节点用来连接到新节点的IP地址。

endpoint_snitch:
告密者Cassandra用来定位节点和路由请求。

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 stop COMPACTION

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

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

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

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

验证集群数据

[[email protected] ~]# cqlsh 172.20.101.157  -u cassandra -p cassandra  

[email protected]> SELECT * from kevin_test.t_users; 

 user_id | emails                          | first_name | last_name
---------+---------------------------------+------------+-----------
       6 | {‘[email protected]‘, ‘[email protected]‘} |     kevin6 |      kang
       7 | {‘[email protected]‘, ‘[email protected]‘} |     kevin7 |      kang
       9 | {‘[email protected]‘, ‘[email protected]‘} |     kevin9 |      kang
       4 | {‘[email protected]‘, ‘[email protected]‘} |     kevin4 |      kang
       3 | {‘[email protected]‘, ‘[email protected]‘} |     kevin3 |      kang
       5 | {‘[email protected]‘, ‘[email protected]‘} |     kevin5 |      kang
       0 | {‘[email protected]‘, ‘[email protected]‘} |     kevin0 |      kang
       8 | {‘[email protected]‘, ‘[email protected]‘} |     kevin8 |      kang
       2 | {‘[email protected]‘, ‘[email protected]‘} |     kevin2 |      kang
       1 | {‘[email protected]‘, ‘[email protected]‘} |     kevin1 |      kang

参考信息:

https://blog.csdn.net/yuanjian0814/article/details/78768889
https://www.jianshu.com/p/1dcca8f19894
http://cassandra.apache.org/doc/latest/tools/nodetool/nodetool.html?highlight=setstreamthroughput
https://zhaoyanblog.com/archives/684.html
https://blog.csdn.net/yuanjian0814/article/details/78777735
https://blog.csdn.net/iteye_19004/article/details/82648737

原文地址:https://blog.51cto.com/michaelkang/2419521

时间: 2024-08-27 12:07:41

Cassandra 集群管理-添加新节点的相关文章

Cassandra集群管理-替换异常节点

Cassandra集群管理-替换异常节点 替换异常集群节点,使用JVM启动标志 Dcassandra.replace_address_first_boot = <dead_node_ip>启动.一旦启用此属性,节点将在休眠状态中启动,在此期间所有其他节点将看到此节点关闭.替换节点将立即开始从集群中的其余节点引导数据. 新节点的正常引导的主要区别在于此新节点在此阶段不会接受任何写入.一旦引导完成,节点将被标记为"UP",我们依赖于隐性启动保障新节点数据独立存在.(因为自引导开

Cassandra集群管理-下线正常节点

测试前题: 测试cassandra集群使用了vnodes,如何判断是否用了vnodes呢? 主要看你的cassandra.yml配置文件中.默认(3.x)为空,系统自动生成.为空表示使用virtual nodes,默认开启,使用了vnodes,删除了节点之后它会自己均衡数据,需要人为干预. 测试数据生成 创建一个名为kevin_test的KeySpace 创建一个名为kevin_test的KeySpace,使用网络拓扑策略(SimpleStrategy),集群内3副本,另外开启写commit l

Cassandra集群管理-删除异常节点

Cassandra集群管理-删除异常节点 故障模拟节点:172.20.101.166,模拟节点系统直接损坏,所有数据丢失. 注意: 本文档只是体系文档中的一部分,前面文档信息详见:测试准备+下线正常节点:https://blog.51cto.com/michaelkang/2419518节点异常重启:https://blog.51cto.com/michaelkang/2419524添加新节点:https://blog.51cto.com/michaelkang/2419521删除异常节点:ht

Cassandra集群管理-节点异常重启

Cassandra集群管理-节点异常重启 登陆一台集群节点,直接重启服务器(172.20.101.166),设置了 cassandra 开机启动. 注意: 本文档只是体系文档中的一部分,前面文档信息详见:测试准备+下线正常节点:https://blog.51cto.com/michaelkang/2419518节点异常重启:https://blog.51cto.com/michaelkang/2419524添加新节点:https://blog.51cto.com/michaelkang/2419

Hadoop概念学习系列之Hadoop集群动态增加新节点或删除已有某节点及复制策略导向

hadoop-2.6.0动态添加新节点 https://blog.csdn.net/baidu_25820069/article/details/52225216 Hadoop集群动态增加新节点 一.在新增节点配置运行环境 1.安装和其他节点相同的java环境,jdk版本要相同. 2.修改/etc/hosts配置文件,添加ip与hostname的对应关系并分发到集群各个节点. 3.关闭防火墙.相关软件工具的安装等. 4.配置ssh免密码登录,使新增节点和集群其他节点能实现免密码登录. 5.修改s

Kubernetes容器集群管理环境 - Node节点的移除与加入

一.如何从Kubernetes集群中移除Node 比如从集群中移除k8s-node03这个Node节点,做法如下: 1)先在master节点查看Node情况 [[email protected]-master01 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-node01 Ready <none> 47d v1.14.2 k8s-node02 Ready <none> 47d v1.14.2 k8s-node03 R

kubernetes容器集群管理部署master节点组件

集群部署获取k8s二进制包 [[email protected] ~]# wget https://dl.k8s.io/v1.15.0/kubernetes-server-linux-amd64.tar.gz [[email protected] ~]# ls kubernetes-server-linux-amd64.tar.gz [[email protected] ~]# mkdir master [[email protected] ~]# mv kubernetes-server-li

向CDH5集群中添加新的主机节点

步骤一:首先得在新的主机环境中安装JDK,关闭防火墙.修改selinux.NTP时钟与主机同步.修改hosts.与主机配置ssh免密码登录.保证安装好了perl和python. 步骤二:上传cloudera-manager文件到/opt目录,修改agent配置文件:       vi /opt/cm-5.0.0/etc/cloudera-scm-agent/config.ini  server_host = Master 步骤三:在该代理节点创建cloudera-scm用户  useradd -

Redis 集群管理常见操作

Redis 内置客户端 redis-cli 通过 --cluster 选项集成了多个 Redis 集群管理工具, 这些工具可以执行创建集群.向集群中添加或移除节点.对集群实施重分片以及负载均衡等操作, 它们每一个都非常强大:$ redis-cli --cluster help``` Cluster Manager Commands:create host1:port1 ... hostN:portN--cluster-replicas <arg>check host:portinfo host