6. Cassandra 的集群构筑¶
在此,将对 Cassandra 的集群构筑方法进行介绍。本文使用【表1. Cassandra连接信息设定例子】来记述以下说明。
【表1. Cassandra连接信息设定例子】
第1台的节点(种子节点)
192.168.0.1
第2台的节点
192.168.0.2
第3台的节点
192.168.0.3
键空间
default
警告
为了构筑集群而变更了replication-factor或host时,需要在安装 intra-mart Accel Platform 时进行设定。详细信息请参照“ 安装指南 - Apache Cassandra (使用IMBox时)(日文) ”。
6.1. 集群构成¶
虽然Cassandra只可在1台上运行,但也可为了实现在处理大量消息时分散负荷和冗余化而构筑集群式构成。如 Cassandra 的一贯性保证 中所记述的那样,由于 IMBox 中采用了“ 保证Quorum((节点数+1)/2个一贯性) ”的一贯性保证方式,所以强烈建议将集群的节点数设为 3台以上 。
6.2. 添加节点¶
replication-factor 和host的变更
replication-factor (以下记作RF)指的是在集群内部有几个数据副本的设定。若采用标准的1个副本,则持有该副本的相应节点宕机后,将无法参照数据。IMBox 中,由于在前述的一致性保证中采用了Quorum,为了保证一致性建议使用下表中RF值。
节点数
RF值(推荐值)
说明
1
1
3
3
将RF值设为2时,由于在某一个节点停止时将无法保证一致性, IMBox 动作也会停止。
4 以上
3 以上节点数以下
请在考虑了故障性和每个节点的基础上,设定为任意值。
指定种子节点。
在编辑器中打开各节点的<%CASSANDRA_HOME%/conf/cassandra.yaml>文件,在“seeds”属性中将第一台节点(192.168.0.1)指定为种子节点。seed_provider: # Addresses of hosts that are deemed contact points. # Cassandra nodes use this list of hosts to find each other and learn # the topology of the ring. You must change this if you are running # multiple nodes! - class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters: # seeds is actually a comma-delimited list of addresses. # Ex: "<ip1>,<ip2>,<ip3>" - seeds: "192.168.0.1"在各节点进行了设定后,启动 Cassandra 。
执行下述命令,各节点会显示如下,若能确认Effective-Ownership的合计值是“RF * 100%”,则操作完成。
# /usr/local/cassandra/bin/nodetool ring (OS是windows时:C:/ > %CASSANDRA_HOME%/bin/nodetool ring) Starting NodeTool Address DC Rack Status State Load Effective-Ownership Token 134073324684581098149220982299151052417 192.168.0.1 datacenter1 rack1 Up Normal 117.33 KB 88.35% 72029913264419379591431889264009303469 192.168.0.2 datacenter1 rack1 Up Normal 225.3 KB 59.54% 110436698385580468589163673403640885580 192.168.0.3 datacenter1 rack1 Up Normal 213.4 KB 52.11% 134073324684581098149220982299151052417注解
Cassandra 中默认使用下述端口与其他 Cassandra 进行通信。OS为Linux时,请根据需要变更iptables和Selinux的设定,OS为Windows时,请根据需要变更防火墙设定。客户端连接端口 及 节点间通信端口 是在<%CASSANDRA_HOME%/conf/cassandra.yaml>中设定的。OS为Linux时,在 <%CASSANDRA_HOME%/conf/cassandra-env.sh>中设定 JMX连接端口,OS为Windows时,在<%CASSANDRA_HOME%/bin/cassandra.bat> 中进行设定。
[1] (1, 2) 不可变更
[2] 在节点间通信中使用了SSL时 警告
在客户端连接端口中指定了9160以外的值时,新建节点的查出功能中会发生错误。不要变更初始值的9160,请直接使用。注解
什么是“种子节点”?
Cassandra 集群上起到中心(枢纽)作用的功能,新加入到集群的节点会从 种子节点取得其他节点的状态信息,并取得集群整体信息。 由于即使没有种子节点,动作本身也没有问题,种子节点本身虽然不是单一故障点, 但在查出集群内节点的状态变化时需要花费更多时间。
6.2.1. 已经构筑了IMBox环境时¶
若已安装Tenant环境并构筑了IMBox环境时,则请按下述步骤进行
在以下目录执行cassandra-cli。
# 使用%CASSANDRA_HOME%/bin/cassandra-cli.sh(或,cassandra-cli.bat)的下述命令链接到 Cassandra 。
[default@unknown] connect 127.0.0.1/9160;使用下述命令指定IMBox 中使用的Keyspace。
[default@unknown] use default;使用下述命令在 IMBox中变更replication_factor。
[default@default] update keyspace default with strategy_options={replication_factor:2};若显示了以下消息,则表示成功。
Waiting for schema agreement... ... schemas agree across the cluster请使用下述命令结束cassandra-cli,并重新启动 Cassandra 。
[default@default] exit;重新启动后,请执行下述命令。
# /usr/local/cassandra/bin/nodetool repair (OS是windows时:C:/ > %CASSANDRA_HOME%/bin/nodetool repair)