专栏首页云计算教程系列如何在Ubuntu 14.04上使用Cassandra运行多节点群集数据库
原创

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

介绍

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

在本教程中,您将学习如何安装和使用Cassandra在Ubuntu 14.04上运行多节点集群。

准备

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

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

  • 至少两个初始设置的Ubuntu 14.04服务器。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器
  • 必须使用防火墙保护每台服务器。如果您使用的是腾讯云的CVM服务器,您可以直接在腾讯云控制台中的安全组进行设置启用。
  • 每个服务器还必须安装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:snitch的名字,这是告诉Cassandra它的网络是什么样的。默认为SimpleSnitch,用于一个数据中心的网络。在我们的例子中,我们将其更改为GossipingPropertyFileSnitch,这是生产设置的首选。
  • auto_bootstrap:该指令不在配置文件中,因此必须添加并设置为false。这使新节点自动使用正确的数据。如果要将节点添加到现有群集,则它是可选的,但在初始化新群集(即没有数据的群集)时需要。

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

sudo nano /etc/cassandra/cassandra.yaml

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

. . .
​
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通过粘贴此行添加指令:

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注释之前插入以下行。

指定的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集群。

您还可以使用cqlshCassandra命令行客户端检查是否可以连接到群集。请注意,您可以为此命令指定群集中任何节点的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集群。如果需要对群集进行故障排除,则首先查找线索位于/var/log/cassandra目录中的日志文件。

想要了解更多关于使用Cassandra运行多节点群集数据库的相关教程,请前往腾讯云+社区学习更多知识。


参考文献:《How To Run a Multi-Node Cluster Database with Cassandra on Ubuntu 14.04》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在Ubuntu 14.04上配置Redis群集

    Redis是一个开源键值数据存储,使用内存存储模型和可选的磁盘写入来实现持久性。它具有事务,发布/订阅和自动故障转移等功能。建议将Redis与Linux一起用于...

    温浪
  • 如何在Ubuntu 14.04上安装Graylog 1.x.

    在本教程中,我们将介绍如何在Ubuntu 14.04上安装Graylog v1.3.x(有时称为Graylog2),并将其配置为在集中位置收集系统的syslog...

    温浪
  • 如何在Debian 9上安装Linux,Nginx,MySQL,PHP(LEMP堆栈)

    LEMP软件堆栈是一组可用于为动态网页和Web应用程序提供服务的软件。这是一个描述Linux操作系统的首字母缩写词,带有Nginx Web服务器。后端数据存储在...

    温浪
  • MongoDB 复制集节点增加移除及节点属性配置

    有关MongoDB复制集概念及其搭建,可以参考:MongoDB 复制集(Replica Set)

    Leshami
  • Spring 事务介绍(一)之 数据库的事务的基本特性

    事务是区分文件存储系统和Nosql数据库重要特性之一,其存在的意义是为了保证即时在并发的情况下,也能正确的执行crud操作,怎样才能算是正确的?这时提出了事务需...

    zoro
  • Windows Server 2019 存储迁移服务

    Windows Server 2019将于9月底正式GA发布,目前外国正在如火如荼的举办着Server 2019相关的技术会议,国内却不见微软中国推广自己的企业...

    迅达集团
  • [ffffffff0x] IOT安全 :HID

    随着国内网络安全制度的不断完善,网络管理人员安全意识也逐步提高,大部分公司的内部网络出网有着严格的管控限制,从外网入侵难度变得极高,因此攻击者也在不停的改变攻击...

    r0fus0d
  • iOS - SceneKit显示与交互3D建模(一)

    LinXunFeng
  • 历届试题 分糖果

    问题描述   有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:

    AI那点小事
  • Linux探测工具BCC(网络)

    首先看下促使我学习bcc的这篇文章中的程序traceicmpsoftirq.py,使用该程序的本意是找出对ping响应的进程位于哪个CPU core上,然后使用...

    charlieroro

扫码关注云+社区

领取腾讯云代金券