如何在 Ubuntu 14.04 上使用 Cassandra 运行多节点集群数据库

介绍

Apache Cassandra是一个高度可扩展的开源数据库系统,在多节点设置上实现出色的性能。

在此之前,我们讨论了 如何运行单节点卡桑德拉集群. 在本教程中,您将学习如何安装和使用卡桑德拉在Ubuntu 14.04上运行多节点集群。

前提条件

因为你要构建一个多节点的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.111222.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. 有关卡桑德拉的更多信息可在 项目的网站

Published At
Categories with 技术
comments powered by Disqus