如何在Ubuntu14.04上使用Cassandra运行多节点集群数据库

来自菜鸟教程
跳转至:导航、​搜索

介绍

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 端口。 Cassandra 命令行实用程序 cqlsh 将通过此端口连接到集群。

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

sudo nano /etc/iptables/rules.v4

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

-s指定的IP地址应该是集群中另一个节点的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 集群。

您还可以检查是否可以使用 Cassandra 命令行客户端 cqlsh 连接到集群。 请注意,您可以为此命令指定集群中任何节点的 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

结论

恭喜! 您现在有一个在 Ubuntu 14.04 上运行的多节点 Cassandra 集群。 有关 Cassandra 的更多信息,请访问 项目的网站 。 如果需要对集群进行故障排除,首先要寻找线索的地方是日志文件,日志文件位于/var/log/cassandra目录下。