介绍
Apache Cassandra是一个高度可扩展的开源数据库系统,在多节点设置上实现出色的性能。
在此之前,我们讨论了 如何运行单节点卡桑德拉集群. 在本教程中,您将学习如何安装和使用卡桑德拉在Ubuntu 14.04上运行多节点集群。
前提条件
因为你要构建一个多节点的Cassandra集群,你必须确定你想要在集群中有多少服务器,并配置每个服务器。
要完成本教程,您将需要以下内容:
- 至少有两台 Ubuntu 14.04 服务器配置使用 本初始安装指南。
- 每个服务器必须使用 本 IPTables 指南进行防火墙保护。
- 每个服务器也必须按照 本 Cassandra 安装指南安装 Cassandra。
步骤 1 - 删除默认数据
卡桑德拉集群中的服务器被称为 nodes. 您现在在每个服务器上所拥有的就是单节点卡桑德拉集群. 在此步骤中,我们将设置节点作为多节点卡桑德拉集群。
在集群中的每一个节点上,必须重复此步骤和后续步骤中的所有命令,因此请确保有尽可能多的终端打开,如您在集群中有节点。
你在每个节点上执行的第一个命令将阻止卡桑德拉大象。
1sudo service cassandra stop
一旦完成,请删除默认数据集。
1sudo rm -rf /var/lib/cassandra/data/system/*
步骤 2 – 配置集群
Cassandra 的配置文件位于 /etc/cassandra
目录中. 该配置文件, cassandra.yaml
,包含许多指令,并被评论得非常好。
只需修改以下指令才能设置多节点卡桑德拉集群:
集群名称
: 这是您组的名称 。 (_) ( )*-种子':这是一组中每个节点的IP地址的逗号限制列表。 (_) ) *
倾听_地址': 这是集群中其他节点用来连接到这个的IP地址. 它默认为localhost,需要更改为节点的IP地址.- `rpc_地址': 这是远程程序调用的IP地址 。 它默认为localhost. 如果服务器的主机名配置得当, 请按原样保留 。 否则,改变服务器的IP地址或回回地址('127.0.0.1').
endpoint_snitch': 告密者的名字 告诉卡珊德拉它的网络是什么样子的 此默认为 ** SimpleSnitch **, 在一个数据中心用于网络 。 就我们而言,我们把它改为**Gossiing PropertyFileSnitch**,它更适合生产设置。 *
auto_bootstrap': 此指令不在配置文件中,所以它必须被添加并设定为false. 这使得新节点自动使用正确的数据. 如果您正在对现有集群添加节点, 这是可选的, 但是在您初始化新集群时需要, 也就是说, 一个没有数据 。 ( (英语)
打开配置文件以使用nano
或您最喜欢的文本编辑器进行编辑。
1sudo nano /etc/cassandra/cassandra.yaml
搜索下列指令的文件,并如下修改它们以匹配您的群集。替换your_server_ip
以您目前正在工作的服务器的IP地址。
1[label /etc/cassandra/cassandra.yaml]
2. . .
3
4cluster_name: 'CassandraDOCluster'
5
6. . .
7
8seed_provider:
9 - class_name: org.apache.cassandra.locator.SimpleSeedProvider
10 parameters:
11 - seeds: "your_server_ip,your_server_ip_2,...your_server_ip_n"
12
13. . .
14
15listen_address: your_server_ip
16
17. . .
18
19rpc_address: your_server_ip
20
21. . .
22
23endpoint_snitch: GossipingPropertyFileSnitch
24
25. . .
在文件的底部,通过插入此行添加auto_bootstrap
指令:
1[label /etc/cassandra/cassandra.yaml]
2auto_bootstrap: false
当您完成更改文件时,保存并关闭它. 重复此步骤为您想要在集群中包含的所有服务器。
步骤三:设置防火墙
此时,集群已配置,但节点没有通信. 在此步骤中,我们将配置防火墙以允许卡桑德拉流量。
首先,重新启动每一个Cassandra Daemon。
1sudo service cassandra start
如果你检查集群的状态,你会发现只有本地节点列出,因为它还不能与其他节点进行通信。
1sudo nodetool status
1[label Output]
2Datacenter: datacenter1
3=======================
4Status=Up/Down
5|/ State=Normal/Leaving/Joining/Moving
6-- Address Load Tokens Owns Host ID Rack
7UN 192.168.1.4 147.48 KB 256 ? f50799ee-8589-4eb8-a0c8-241cd254e424 rack1
8
9Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless
为了允许通信,我们需要为每个节点打开以下网络端口:
7000
,是指令和数据的TCP端口9042
,是原生传输服务器的TCP端口。cqlsh
,Cassandra命令行实用程序,将通过这个端口连接到集群
若要更改防火墙规则,请打开 IPv4 规则文件。
1sudo nano /etc/iptables/rules.v4
如果您正在使用防火墙教程中的rules.v4
文件,您可以插入以下行在拒绝任何落到这个点
评论之前。
如果您有两个 IP 节点111.111.111.111
和222.222.222
,则111.111.111.111
机器的规则应该使用 IP 地址222.222.222
。
1[label New firewall rule]
2-A INPUT -p tcp -s your_other_server_ip -m multiport --dports 7000,9042 -m state --state NEW,ESTABLISHED -j ACCEPT
添加规则后,保存并关闭文件,然后重新启动 IPTables。
1sudo service iptables-persistent restart
步骤 4 – 检查集群状态
现在我们已经完成了将节点变成一个多节点集群所需的所有步骤,您可以通过检查其状态来验证它们都在通信。
1sudo nodetool status
1[label Output]
2Datacenter: datacenter1
3=======================
4Status=Up/Down
5|/ State=Normal/Leaving/Joining/Moving
6-- Address Load Tokens Owns Host ID Rack
7UN 192.168.1.4 147.48 KB 256 ? f50799ee-8589-4eb8-a0c8-241cd254e424 rack1
8UN 192.168.1.6 139.04 KB 256 ? 54b16af1-ad0a-4288-b34e-cacab39caeec rack1
9
10Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless
如果您可以看到您配置的所有节点,那么您刚刚成功设置了多节点卡桑德拉集群。
您还可以检查是否可以使用cqlsh
,Cassandra命令行客户端连接到集群,请注意,您可以为此命令指定集群中的任何节点的IP地址。
1cqlsh your_server_ip 9042
你会看到它连接:
1[label Output]
2Connected to My DO Cluster at 192.168.1.6:9042.
3[cqlsh 5.0.1 | Cassandra 2.2.3 | CQL spec 3.3.1 | Native protocol v4]
4Use HELP for help.
5cqlsh>
然后你可以离开CQL终端。
1exit
结论
恭喜! 你现在有一个多节点卡桑德拉集群运行在Ubuntu 14.04. 有关卡桑德拉的更多信息可在 项目的网站 。