手機版
你好,游客 登錄 注冊
背景:
閱讀新聞

Apache Cassandra多節點跨數據中心集群配置以及日常操作

[日期:2019-09-27] 來源:Linux社區  作者:candon123 [字體: ]

Cassandra是去中心化的集群架構,沒有傳統集群的中心節點,各個節點地位都是平等的,通過Gossip協議維持集群中的節點信息。為了使集群中的各節點在啟動時能發現其他節點,需要指定種子節點(seeds),各節點都先和種子節點通信,通過種子節點獲取其他節點列表,然后和其他節點通信。種子節點可以指定多個,通過在 conf/ cassandra.yaml中的seeds屬性配置。

環境介紹

主機信息如下表所示:
Apache Cassandra多節點跨數據中心集群配置以及日常操作
所有節點已安裝了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
    [roo[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

    Apache Cassandra多節點跨數據中心集群配置以及日常操作

管理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鍵空間上創建表以及導入數據:

  • 創建表
    Apache Cassandra多節點跨數據中心集群配置以及日常操作
    cqlsh:spacewalk> desc tables;
    rhnpackagecapability
  • 導入數據
cqlsh:spacewalk> copy rhnpackagecapability(id,name,version,created,modified) from '/tmp/d.csv' with delimiter=',' and header=false;

Apache Cassandra多節點跨數據中心集群配置以及日常操作

  • 刪除表
    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;

Apache Cassandra多節點跨數據中心集群配置以及日常操作

Linux公社的RSS地址http://www.vnrggh.live/rssFeed.aspx

本文永久更新鏈接地址http://www.vnrggh.live/Linux/2019-09/160841.htm

linux
相關資訊       Cassandra  Cassandra多節點 
本文評論   查看全部評論 (0)
表情: 表情 姓名: 字數

       

評論聲明
  • 尊重網上道德,遵守中華人民共和國的各項有關法律法規
  • 承擔一切因您的行為而直接或間接導致的民事或刑事法律責任
  • 本站管理人員有權保留或刪除其管轄留言中的任意內容
  • 本站有權在網站內轉載或引用您的評論
  • 參與本評論即表明您已經閱讀并接受上述條款
彩票平台