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

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

环境介绍

主机信息如下表所示:

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

[[email protected] ~]# 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仓库,内容如下:

[[email protected] ~]# 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命令在各个节点进行安装:

[[email protected] ~]# yum -y install cassandra

编辑cassandra配置文件

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

[[email protected] ~]# 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,所有节点都会加入一个数据中心。

    配置节点的datacenter名称

    编辑cassandra-rackdc.properties文件,设置dc参数,如下:

    [[email protected] ~]# vi /etc/cassandra/default.conf/cassandra-rackdc.properties
    dc=dc1
    rack=rack1

    根据之前的规划,db03和db04属于dc1;db05和db06属于dc2。

    启动cassandra服务

    先启动种子节点,再启动其他支节点。

  • 启动种子节点
    [[email protected] ~]# systemctl enable cassandra
    [[email protected] ~]# systemctl start cassandra
    [[email protected] ~]# systemctl enable cassandra
    [[email protected] ~]# systemctl start cassandra
  • 启动支节点
    [[email protected] ~]# systemctl enable cassandra
    [[email protected] ~]# systemctl start cassandra
    [[email protected] ~]# systemctl enable cassandra
    [[email protected] ~]# systemctl start cassandra

    验证节点状态信息

    cassandra提供了nodetool命令,可以查看集群节点的状态信息,如下:

    [[email protected] ~]# nodetool status

管理keyspace

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

[[email protected] ~]# 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:

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,使用下面的命令:

cqlsh> drop keyspace spacewalk;

管理表

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

  • 创建表

    cqlsh:spacewalk> desc tables;
    rhnpackagecapability
  • 导入数据
cqlsh:spacewalk> copy rhnpackagecapability(id,name,version,created,modified) from ‘/tmp/d.csv‘ with delimiter=‘,‘ and header=false;

  • 删除表

    cqlsh:spacewalk> drop table rhnpackagecapability;

    问题总结

    在导入数据过程中,会遇到各种各样的报错,下面是我遇到的两种问题:

  • 错误处理1(大于字段限制)
    <stdin>:1:Failed to import 5000 rows: Error - field larger than field limit (131072),  given up after 1 attempts

    创建cqlshrc文件:

    [[email protected] ~]# cp /etc/cassandra/default.conf/cqlshrc.example  ~/.cassandra/cqlshrc
    [[email protected] ~]# vi ~/.cassandra/cqlshrc
    [csv]
    --加大filed_size_limit的值,默认为131072
    field_size_limit = 13107200000
  • 错误处理2
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,如下:

cqlsh> copy mykeysp01.rhnpackagerepodata(id,primary_xml,filelist,other,created,modified) from ‘/u02/tmp/rhnpackagerepodata.csv‘ with maxbatchsize=1 and minbatchsize=1;

原文地址:https://blog.51cto.com/candon123/2439410

时间: 2024-10-07 11:47:35

Apache Cassandra随笔之多节点跨数据中心集群配置以及日常操作的相关文章

使用apache和nginx代理实现tomcat负载均衡及集群配置详解

实验环境: 1.nginx的代理功能 nginx proxy: eth0: 192.168.8.48 vmnet2 eth1: 192.168.10.10 tomcat server1: vmnet2 eth0: 192.168.10.20 tomcat server2: vmnet2 eth0: 192.168.10.30 # yum install -y nginx-1.8.1-1.el6.ngx.x86_64.rpm # vim /etc/nginx/conf.d/default.conf

Cassandra 如何处理跨数据中心的数据库延时问题

分布式系统的可靠.延时.一致性等问题是一般性问题,不局限于数据库,而Cassandra提供了一个很好的解决思路. Cassandra号称能做到跨数据中心的数据库访问的高效访问,它的实现方式其实是把延时.吞吐量与一致性的权衡交给了用户来选择.Cassandra提供了两种访问级别: LOCAL_QUORUM和EACH_QUORUM,其中 LOCAL_QUORUM能语意为本数据中心内超过半数的副本成功执行,才返回用户操作成功:而 EACH_QUORUM语意为每个数据中心都超过半数的副本执行成功,才返回

从ORACLE RAC角度看跨数据中心的存储双活配置注意事项

ORACLE RAC在设计的时候是没有考虑跨数据中心双活的,它的设计目的是为一个数据中心内有着共享存储的多个主机实现负载均衡和高可用性.但是由于它的架构确实有着跨数据中心实现负载均衡和高可用性的潜力,所以有几家存储设备供应商对它的使用环境做了扩展,提出了跨数据中心的解决方案.ORACLE对此采取了默认的态度,但是建议所有的解决方案在投入客户生产之前进行仔细的测试. 对于RAC而言,跨数据中心解决方案的最大瓶颈是节点之间的interconnect,因为它对时延和带宽的要求都非常高.一般而言,本地i

MongoShake——基于MongoDB的跨数据中心的数据复制平台

摘要: MongoShake是基于MongoDB的通用型平台服务,作为数据连通的桥梁,打通各个闭环节点的通道.通过MongoShake的订阅消费,可以灵活对接以适应不同场景,例如日志订阅.数据中心同步.监控审计等.其中,集群数据同步作为核心应用场景,能够灵活实现灾备和多活的业务场景. 背景 在当前的数据库系统生态中,大部分系统都支持多个节点实例间的数据同步机制,如Mysql Master/Slave主从同步,Redis AOF主从同步等,MongoDB更是支持3节点及以上的副本集同步,上述机制很

Windows Azure Virtual Network (13) 跨数据中心之间的虚拟网络点对点连接VNet Peering

<Windows Azure Platform 系列文章目录> 今天是大年初二,首先祝大家新年快乐,万事如意. 在笔者之前的文章中:Windows Azure Virtual Network (12) 虚拟网络之间点对点连接VNet Peering 我们了解,可以在同一个数据中心之间的两个虚拟网络,只要虚拟网络的IP Range不冲突,就可以设置VNet Peering 现在,Azure VNet Peering还支持跨数据中心之间的两个虚拟网络,通过VNet Peering打通 在这里我们简

WildFly8.1(JBoss)+mod_cluster(Apache)集群配置

继上次使用mod_jk进行了Apache+JBoss集群配置之后,由于JBoss5.1启动过于缓慢,所以开始尝试使用最新的WildFly8.1进行配置(WildFly就是JBoss,在JBoss7之后改名). 系统环境: Windows 7 SP1(Windows Server 2003已测试,WildFly会有未知问题) 软件环境: JDK 7+(一定要使用7以上,否则WildFly不支持) WildFly 8.1.0(http://wildfly.org/downloads/) mod_cl

linux环境下Apache+Tomcat集群配置

写在前面 apache配置多个tomcat,实现请求分流,多个tomcat服务均衡负载,增加服务的可靠性.最近研究了一下,遇到许多问题,记录一下,方便以后查阅,不喜欢apache,nginx也是可以做到的. 准备 版本很重要,我就是由于版本原因,一直报错 linux 使用 #lsb_release -a查看当前linux系统版本. 本例:CentOS Linux release 7.0.1406 (Core) jdk 使用 # java -version查看当前版本,如果没有,先装好.downl

Apache+Tomcat集群配置

本文Apache+Tomcat集群配置 基于最新的Apache和Tomcat,具体是2011年4月20日最新的Tomcat和Apache集群和负载均衡配置. 准备环境 Apache[下载地址] 企业框架源码 Apache是http服务器,我们利用其对Tomcat进行负载均衡.目前最新版本为2.2.17,下载地址为http://httpd.apache.org/download.cgi#apache22.如下图: 目前已经出现Apache2.3.11,但是为beta版本,所以没有使用. 下载后直接

关于hadoop2.x(2.7.1 2.7.2)集群配置和测试运行中Ubuntu虚拟机VM设置nat方式导致节点传输问题

集群配置都大同小异,在这里我简单说下我的配置: 主节点系统是Ubuntu 14.04 LTS x64其他两个节点在VM中系统为Centos 6.4 x64 JVM为jdk1.7_80 hadoop版本2.7.1和2.7.2都尝试了 出现的问题是: 启动hdfs系统正常,都启动起来了,jps查看如下 主节点 SecondaryNameNode和 NameNode 从节点:DataNode 但使用hfds命令dfsadmin -report发现live的datanode只有1个,而且当你不同时间re