前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Apache Cassandra多节点跨数据中心集群配置以及日常操作

Apache Cassandra多节点跨数据中心集群配置以及日常操作

作者头像
星哥玩云
发布2022-08-18 17:38:51
9670
发布2022-08-18 17:38:51
举报
文章被收录于专栏:开源部署开源部署

Cassandra是去中心化的集群架构,没有传统集群的中心节点,各个节点地位都是平等的,通过Gossip协议维持集群中的节点信息。为了使集群中的各节点在启动时能发现其他节点,需要指定种子节点(seeds),各节点都先和种子节点通信,通过种子节点获取其他节点列表,然后和其他节点通信。种子节点可以指定多个,通过在 conf/ cassandra.yaml中的seeds属性配置。

环境介绍

主机信息如下表所示:

Apache Cassandra多节点跨数据中心集群配置以及日常操作
Apache Cassandra多节点跨数据中心集群配置以及日常操作

所有节点已安装了jdk 8。如下:

代码语言:javascript
复制
[root@db03 ~]# Java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)
安装cassandra

这里使用的是二进制rpm包进行安装。在各个节点创建yum仓库,内容如下:

代码语言:javascript
复制
[root@db03 ~]# vi /etc/yum.repos.d/cass.repo
[cassandra]
name=Apache Cassandra
baseurl=https://www.apache.org/dist/cassandra/RedHat/311x/
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://www.apache.org/dist/cassandra/KEYS

然后通过yum命令在各个节点进行安装:

代码语言:javascript
复制
[root@db03 ~]# yum -y install cassandra
编辑cassandra配置文件

更改各个节点的配置文件内容如下:

代码语言:javascript
复制
[root@db03 ~]# vi /etc/cassandra/default.conf/cassandra.yaml
cluster_name: 'TCS01'
num_tokens: 256
    seed_provider:
    - class_name: org.apache.cassandra.locator.SimpleSeedProvider
    parameters:
    - seeds:  "192.168.120.83,192.168.120.85"
listen_address:192.168.120.83
endpoint_snitch: GossipingPropertyFileSnitch
start_rpc: true
rpc_address: 192.168.120.83

其中,db04、db05以及db06需要更改listen_address以及rpc_address,将其设置为本机的IP,其他参数保持和db03一致。

endpoint_snitch 对于跨数据中心的集群,此参数的值必须为GossipingPropertyFileSnitch;如果为SimpleSnitch,所有节点都会加入一个数据中心。

启动种子节点

启动支节点

管理keyspace

键空间(Keyspace)是用于保存列族,用户定义类型的对象。 键空间(Keyspace)就像RDBMS中的数据库,其中包含列族,索引,用户定义类型,数据中心意识,键空间(Keyspace)中使用的策略,复制因子等。 查看系统中默认存在的keyspace:

代码语言:javascript
复制
[root@db03 ~]# cqlsh 192.168.120.83
Connected to TCS01 at 192.168.120.83:9042.
[cqlsh 5.0.1 | Cassandra 3.11.4 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
cqlsh> desc keyspaces;

system_traces  system_schema  system_auth  system  system_distributed

创建keyspace:

代码语言:javascript
复制
cqlsh> CREATE KEYSPACE spacewalk WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 4};
cqlsh> desc keyspaces;

system_schema  system_auth  spacewalk  system  system_distributed  system_traces

cqlsh>

要删除自定义的keyspace,使用下面的命令:

代码语言:javascript
复制
cqlsh> drop keyspace spacewalk;
管理表

在spacewalk键空间上创建表以及导入数据:

创建表

Apache Cassandra多节点跨数据中心集群配置以及日常操作
Apache Cassandra多节点跨数据中心集群配置以及日常操作
代码语言:javascript
复制
cqlsh:spacewalk> desc tables;
rhnpackagecapability

导入数据

代码语言:javascript
复制
cqlsh:spacewalk> copy rhnpackagecapability(id,name,version,created,modified) from '/tmp/d.csv' with delimiter=',' and header=false;
Apache Cassandra多节点跨数据中心集群配置以及日常操作
Apache Cassandra多节点跨数据中心集群配置以及日常操作

删除表

错误处理1(大于字段限制)

错误处理2

代码语言:javascript
复制
Failed to import 20 rows: InvalidRequest - Error from server: code=2200 [Invalid query] message="Batch too large",  will retry later, attempt 1 of 5

编辑cassandra.yaml文件,加大batch_size_fail_threshold_in_kb参数值,比如5120。然后在copy后面加maxbatchsize=1 and minbatchsize=1,如下:

代码语言:javascript
复制
cqlsh> copy mykeysp01.rhnpackagerepodata(id,primary_xml,filelist,other,created,modified) from '/u02/tmp/rhnpackagerepodata.csv' with maxbatchsize=1 and minbatchsize=1;
Apache Cassandra多节点跨数据中心集群配置以及日常操作
Apache Cassandra多节点跨数据中心集群配置以及日常操作
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境介绍
  • 安装cassandra
  • 编辑cassandra配置文件
  • 管理keyspace
  • 管理表
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档