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

ApacheCassandra是一个高度可扩展的开放源码的数据库系统,实现多节点设置强大的性能。在本教程中,您将学习如何安装和使用Cassandra在Ubuntu 14.04上运行一个多节点集群。

介绍

Apache的Cassandra是一个高度可扩展的开放源码的数据库系统,实现多节点设置强大的性能。

以前,我们走过去如何运行一个单节点集群Cassandra 在本教程中,您将学习如何安装和使用Cassandra在Ubuntu 14.04上运行多节点群集。

先决条件

因为您将要构建一个多节点Cassandra集群,您必须确定您希望在集群中拥有多少服务器并配置它们。 建议(但不是必需),它们具有相同或相似的规格。

要完成本教程,您需要以下内容:

第1步 - 删除默认数据

在Cassandra集群服务器称为节点 你现在在每个服务器上是一个单节点Cassandra集群。 在此步骤中,我们将设置节点以充当多节点Cassandra集群。

必须在群集中的每个节点上重复此步骤和后续步骤中的所有命令,因此请确保在群集中有多个节点时打开许多终端。

您将在每个节点上运行的第一个命令将停止Cassandra守护程序。

sudo service cassandra stop

完成后,删除默认数据集。

sudo rm -rf /var/lib/cassandra/data/system/*

第2步 - 配置群集

Cassandra的配置文件位于/etc/cassandra目录。 该配置文件, cassandra.yaml ,包含许多指令,并很好的注释。 在此步骤中,我们将修改该文件以设置集群。

只有以下指令需要修改以设置多节点Cassandra集群:

  • cluster_name :这是您的群集的名称。

  • -seeds :这是一个逗号分隔的群集中的每个节点的IP地址列表。

  • listen_address :这是集群中的其他节点将用于连接到这个IP地址。 它默认为localhost和需要改变的节点的IP地址。

  • rpc_address :这是远程过程调用的IP地址。 它默认为localhost。 如果服务器的主机名已正确配置,请保持原样。 否则,更改服务器的IP地址或环回地址( 127.0.0.1 )。

  • endpoint_snitch :飞贼,这是什么告诉Cassandra什么它的网络看起来像名称。 此默认为SimpleSnitch,这是在一个数据中心使用的网络。 在我们的例子中,我们将其改为GossipingPropertyFileSnitch,这是首选生产设置。

  • auto_bootstrap :这个指令是不是在配置文件中,所以它被添加并设置为false。 这使新节点自动使用正确的数据。 如果您要将节点添加到现有群集,这是可选的,但在初始化新群集(即没有数据的群集)时需要。

打开配置文件使用编辑nano或您喜爱的文本编辑器。

sudo nano /etc/cassandra/cassandra.yaml

在文件中搜索以下指令,并按如下所示修改它们以匹配您的集群。 替换your_server_ip与你目前正在使用的服务器的IP地址。 - seeds:名单应该是每一个服务器上的相同,并且将包含每个服务器的IP地址,用逗号分隔。

/etc/cassandra/cassandra.yaml
. . .

cluster_name: 'CassandraDOCluster'

. . .

seed_provider:
  - class_name: org.apache.cassandra.locator.SimpleSeedProvider
    parameters:
         - seeds: "your_server_ip,your_server_ip_2,...your_server_ip_n"

. . .

listen_address: your_server_ip

. . .

rpc_address: your_server_ip

. . .

endpoint_snitch: GossipingPropertyFileSnitch

. . .

在文件的底部,在添加auto_bootstrap在这一行粘贴指令:

/etc/cassandra/cassandra.yaml
auto_bootstrap: false

完成修改文件后,保存并关闭它。 对要包括在群集中的所有服务器重复此步骤。

第3步 - 配置防火墙

此时,已配置集群,但节点未通信。 在此步骤中,我们将配置防火墙以允许Cassandra流量。

首先,在每个上重新启动Cassandra守护程序。

sudo service cassandra start

如果检查群集的状态,您会发现只列出了本地节点,因为它还无法与其他节点通信。

sudo nodetool status
输出端
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address      Load       Tokens       Owns    Host ID                               Rack
UN  192.168.1.4  147.48 KB  256          ?       f50799ee-8589-4eb8-a0c8-241cd254e424  rack1

Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless

为了允许通信,我们需要为每个节点打开以下网络端口:

  • 7000 ,这是命令和数据的TCP端口。

  • 9042 ,这是本机传输服务器,TCP端口cqlsh ,Cassandra命令行实用程序,将通过此端口连接到群集。

要修改防火墙规则,请打开IPv4的规则文件。

sudo nano /etc/iptables/rules.v4

复制并粘贴INPUT链中的以下行,这将允许上述端口上的流量。 如果你使用rules.v4文件从防火墙的教程,你可以插入下面的行之前的# Reject anything that's fallen through to this point评论。

通过指定的IP地址-s应该是集群中的其他节点的IP地址。 如果你有两个节点的IP地址111.111.111.111222.222.222.222 ,则在规则111.111.111.111机应该使用的IP地址222.222.222.222

新防火墙规则
-A INPUT -p tcp -s your_other_server_ip -m multiport --dports 7000,9042 -m state --state NEW,ESTABLISHED -j ACCEPT

添加规则后,保存并关闭文件,然后重新启动IPTables。

sudo service iptables-persistent restart

第4步 - 检查群集状态

我们现在已经完成了将节点变成多节点集群所需的所有步骤。 您可以通过检查其状态来验证他们是否正在进行通信。

sudo nodetool status
输出端
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address      Load       Tokens       Owns    Host ID                               Rack
UN  192.168.1.4  147.48 KB  256          ?       f50799ee-8589-4eb8-a0c8-241cd254e424  rack1
UN  192.168.1.6  139.04 KB  256          ?       54b16af1-ad0a-4288-b34e-cacab39caeec  rack1

Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless

如果您可以看到您配置的所有节点,您只是成功地设置了一个多节点Cassandra集群。

您还可以检查您是否可以连接到使用集群cqlsh ,Cassandra命令行客户端。 请注意,您可以为此命令指定集群中任何节点的IP地址。

cqlsh your_server_ip 9042

你会看到它连接:

输出端
Connected to My DO Cluster at 192.168.1.6:9042.
[cqlsh 5.0.1 | Cassandra 2.2.3 | CQL spec 3.3.1 | Native protocol v4]
Use HELP for help.
cqlsh>

然后可以退出CQL终端。

exit

结论

恭喜! 您现在有一个多节点Cassandra群集在Ubuntu 14.04上运行。 有关Cassandra更多信息,请访问该项目的网站 如果您需要解决集群,第一个地方去寻找线索在日志文件,这些文件位于/var/log/cassandra目录。