cassandra 数据库_使用Apache Cassandra构建分布式NoSQL数据库

cassandra 数据库

最近,我急于获得一个三节点的Apache Cassandra集群,该集群的复制因子为2,可以用于开发工作。 我几乎不知道这意味着什么,但需要Swift解决-这是系统管理员工作的典型一天。

这是从头开始建立基本的三节点Cassandra群集的方法,其中包含一些额外的位用于复制和将来的节点扩展。

所需的基本节点

首先,您需要一些基本的Linux机器。 对于生产安装,您可能会将物理机放入机架,数据中心和不同的位置。 对于开发,您只需要适合您的开发规模的东西即可。 我在VMware上使用了三个CentOS 7虚拟机,这些虚拟机具有20GB的精简配置磁盘,两个处理器和4GB的RAM。 这三台计算机分别称为:CS1(192.168.0.110),CS2(192.168.0.120)和CS3(192.168.0.130)。

首先,在每台机器上最少安装CentOS 7作为操作系统。 要在CentOS的生产环境中运行它,请考虑调整一下firewalldSELinux 。 由于此集群仅用于初始开发,因此我将其关闭。

唯一的其他要求是OpenJDK 1.8安装,可从CentOS存储库中获得。

安装

在每台计算机上创建一个cass用户帐户。 为确保节点之间没有差异,请在每次安装时强制使用相同的UID:


   
   
$ useradd --create-home \
--uid 1099 cass
$ passwd cass

下载 Apache Cassandra的当前版本(在撰写本文时为3.11.4)。 将Cassandra归档文件提取到cass主目录中,如下所示:

 $  tar zfvx apache-cassandra-3.11.4-bin.tar.gz 

完整的软件包含在〜cass / apache-cassandra-3.11.4中 。 对于快速开发试用,这很好。 数据文件在那里,并且conf /目录具有将这些节点调整为实际群集所需的重要位。

组态

开箱即用,Cassandra作为本地单节点群集运行。 快速浏览很方便,但是这里的目标是外部客户端可以访问的真实集群,并提供了在需要扩展开发和测试时添加其他节点的选项。 要查看的两个配置文件是conf / cassandra.yamlconf / cassandra-rackdc.properties

首先,编辑conf / cassandra.yaml以设置群集名称,网络和远程过程调用(RPC)接口; 定义同伴; 并更改路由请求和复制的策略。

在每个群集节点上编辑conf / cassandra.yaml

将群集名称更改为在每个节点上都相同:

 cluster_name: 'DevClust' 

更改以下两个条目以匹配您正在处理的节点的主IP地址:


   
   
listen_address: 192.168.0.110
rpc_address:  192.168.0.110

找到seed_provider条目,然后查找-种子:配置行。 编辑每个节点以包括所有节点:

         - seeds: "192.168.0.110, 192.168.0.120, 192.168.0.130" 

这使本地Cassandra实例能够查看其所有对等对象(包括自身)。

查找endpoint_snitch设置并将其更改为:

 endpoint_snitch: GossipingPropertyFileSnitch 

如果需要加入新节点,则可以在以后使用endpoint_snitch设置来实现灵活性。 Cassandra文档指出, GossipingPropertyFileSnitch是生产使用的首选设置。 还必须设置下面将介绍的复制策略。

保存并关闭cassandra.yaml文件。

打开conf / cassandra-rackdc.properties文件,并更改dc =rack =的默认值。 它们可以是唯一的东西,并且不会与其他本地安装冲突。 对于生产,您将更多地考虑如何组织机架和数据中心。 在此示例中,我使用了通用名称,例如:


   
   
dc=NJDC
rack=rack001

启动集群

在每个节点上,登录到其中卡桑德拉安装(在这个例子CASS)的帐户,输入cd Apache的卡桑德拉-3.11.4 / bin,然后运行./cassandra。 一长串消息将打印到终端,并且Java进程将在后台运行。

确认集群

登录到Cassandra用户帐户后,进入bin目录并运行$ ./nodetool status 。 如果一切顺利,您将看到类似以下内容:


   
   
$ . / nodetool status
INFO   [ main ] 2019 -08-04 15 : 14 : 18 , 361 Gossiper.java: 1715 - No gossip backlog; proceeding
Datacenter: NJDC
================
Status =Up / Down
|/ State =Normal / Leaving / Joining / Moving
--  Address       Load       Tokens       Owns ( effective )  Host ID                               Rack
UN  192.168.0.110   195.26 KiB   256           69.2 %             0abc7ad5- 6409 -4fe3-a4e5-c0a31bd73349  rack001
UN  192.168.0.120   195.18 KiB   256           63.0 %             b7ae87e5-1eab-4eb9-bcf7-4d07e4d5bd71  rack001
UN  192.168.0.130   117.96 KiB   256           67.8 %             b36bb943-8ba1-4f2e-a5f9-de1a54f8d703  rack001

这意味着集群可以看到所有节点并打印一些有趣的信息。

请注意,如果cassandra.yaml使用默认的endpoint_snitch:SimpleSnitch ,则上面的nodetool命令会将默认位置指示为Datacenter:datacenter1 ,将机架指示rack1 。 在上面的示例输出中,很明显cassandra-racdc.properties值。

运行一些CQL

这是复制因子设置的来源。

创建复制因子为2的密钥库。 从任何一个群集节点中,转到bin目录,然后运行./cqlsh 192.168.0.130 (替换相应的群集节点IP地址)。 您可以使用以下命令查看默认的管理键空间:


   
   
cqlsh> SELECT * FROM system_schema.keyspaces;

 keyspace_name      | durable_writes | replication
--------------------+----------------+-------------------------------------------------------------------------------------
        system_auth |           True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '1'}
      system_schema |           True |                             {'class': 'org.apache.cassandra.locator.LocalStrategy'}
 system_distributed |           True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'}
             system |           True |                             {'class': 'org.apache.cassandra.locator.LocalStrategy'}
      system_traces |           True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '2'}

创建一个复制因子为2的新键空间,插入一些行,然后调用一些数据:


   
   
cqlsh> CREATE KEYSPACE TestSpace WITH replication = {'class': 'NetworkTopologyStrategy', 'NJDC' : 2};
cqlsh> select * from system_schema.keyspaces where keyspace_name='testspace';

 keyspace_name | durable_writes | replication
---------------+----------------+--------------------------------------------------------------------------------
     testspace |           True | {'NJDC': '2', 'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy'}
cqlsh> use testspace;
cqlsh:testspace> create table users ( userid int PRIMARY KEY, email text, name text );
cqlsh:testspace> insert into users (userid, email, name) VALUES (1, 'jd@somedomain.com', 'John Doe');
cqlsh:testspace> select * from users;

 userid | email             | name
--------+-------------------+----------
      1 | jd@somedomain.com | John Doe

现在,您已经运行了一个基本的三节点Cassandra集群,并准备进行一些开发和测试工作。 CQL语法类似于标准SQL,正如您从熟悉的命令中看到的那样,它可以创建表,插入和查询数据。

结论

Apache Cassandra看起来像是一个有趣的NoSQL集群数据库,我期待着更深入地研究它的使用。 这种简单的设置只会刮擦可用选项的表面。 我希望这个三节点入门也能帮助您入门。

翻译自: https://opensource.com/article/19/8/how-set-apache-cassandra-cluster

cassandra 数据库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值