CentOS導入Cassandra 3.11.6クラスタ

6138 ワード

Cassandraはオープンソース分布式NoSQLデータベースで、中心のない対等分布式モデルを採用し、高可用性と高伸張性の特徴を備えている.最初はFacebookが開発し、オープンソースプロジェクトに移行した.Amazon独自の完全分散型のDynamoをベースに、Google BigTableベースのColumn Familyのデータモデルを組み合わせ、多くの点でDynamo 2.0と呼ぶことができます.本論文はCentOS 7に基づく.6、Cassandra 3.11.6を配備して、詳しい過程は以下の通りです.
一、準備
1、機械の準備
2台の機器を用意し、CentOS 7を取り付ける.6.ip計画は以下の通りである.
192.168.2.13  ca-node1
192.168.2.14  ca-node2
2、ファイアウォールを閉じる
systemctl stop firewalld
systemctl disable firewalld

3、JDKのインストール
ここにjdk-8 u 231-linux-x 64をインストールし、環境変数を構成します.
4、ホスト名の変更
#     
hostnamectl set-hostname ca-node1

ホスト名をhostnameコマンドで表示し、変更後に再起動します.
5、IPマッピングの構成
vim /etc/hosts

最後に、以下を追加します.
192.168.2.13  ca-node1
192.168.2.14  ca-node2
6、ユーザーの作成
rootユーザーの下でcassandraユーザーを追加します.
#   
groupadd cassandra
#    
adduser cassandra -g cassandra
#    
passwd cassandra

cassandraユーザーに権限を付与:
#編集/etc/sudoers vi/etc/sudoers#root ALL=(ALL)ALLでcassandra構成を追加し、最終的にはroot ALL=(ALL)ALL cassandra ALL=(ALL)ALL
二、Cassandraの配置
1、Cassandraの配置
からhttps://mirrors.tuna.tsinghua.edu.cn/apache/cassandra/3.11.6/apache-cassandra-3.11.6-binをダウンロードします.tar.gz、サーバにアップロードし、解凍します./Dataディレクトリは大容量ディスクであり、データファイルとログファイルディレクトリを作成します.
#      
mkdir -p /data/cassandra/data
#      
mkdir -p /data/cassandra/commitlog
#      
mkdir -p /data/cassandra/saved_caches

ca-node 1を構成し、apache-cassandra-3.11.6/conf/cassandraを編集します.yml、修正内容は以下の通りです.
#    ,       
cluster_name: 'SDC-CA-Cluster'
#    
data_file_directories:
     - /data/cassandra/data
#    
commitlog_directory: /data/cassandra/commitlog
#    
saved_caches_directory: /data/cassandra/saved_caches
#      ip,               ,    ,      
- seeds: "192.168.2.13"
#    (  ip    )
listen_address: ca-node1
#rpc  (  ip 0.0.0.0)
rpc_address: 0.0.0.0
#  rpc_address   0.0.0.0,       
broadcast_rpc_address: 1.2.3.4

ca-node 2を構成し、apache-cassandra-3.11.6/conf/cassandraを編集します.yml、修正内容は以下の通りです.
#    ,       
cluster_name: 'SDC-CA-Cluster'
#    
data_file_directories:
     - /data/cassandra/data
#    
commitlog_directory: /data/cassandra/commitlog
#    
saved_caches_directory: /data/cassandra/saved_caches
#      ip,               ,    ,      
- seeds: "192.168.2.13"
#    (  ip    )
listen_address: ca-node2
#rpc  (  ip 0.0.0.0)
rpc_address: 0.0.0.0
#  rpc_address   0.0.0.0,       
broadcast_rpc_address: 1.2.3.4

2、コマンドライン起動
#   cassandra  
cd /data/soft/apache-cassandra-3.11.6
#  cassandra
./bin/cassandra

クラスタのステータスを表示するには、次の手順に従います.
[cassandra@ca-node1 apache-cassandra-3.11.6]$ ./bin/nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address         Load       Tokens       Owns (effective)  Host ID                               Rack
UN  192.168.2.13   360.3 KiB   256          100.0%            434437e1-92c1-4508-9a70-5f45edea1db7  rack1
UN  192.168.2.14   300.27 KiB  256          100.0%            bf5b6b34-aaa8-4db6-800b-1525a4d54f3f  rack1

3、起動
起動サービスの作成
 sudo vim /usr/lib/systemd/system/cassandra.service

内容は次のとおりです.
[Unit]
Description=Cassandra Server Service
After=network.service

[Service]
Type=simple
#jdk  
Environment=JAVA_HOME=/usr/java/jdk1.8.0_231-amd64
PIDFile=/var/run/cassandra.pid
#cassandra      
User=cassandra
Group=cassandra
#   Cassandra       
ExecStart=/data/soft/apache-cassandra-3.11.6/bin/cassandra -f -p /var/run/cassandra.pid
StandardOutput=journal
StandardError=journal
LimitNOFILE=100000
LimitMEMLOCK=infinity
LimitNPROC=32768
LimitAS=infinity

[Install]
WantedBy=multi-user.target
#    
sudo systemctl status cassandra
#  
sudo systemctl start cassandra
#       
sudo systemctl enable cassandra

三、簡単に使う
#  cassandra  
cd /data/soft/apache-cassandra-3.11.6
#  cassandra
./bin/cqlsh
Connected to SDC-CA-Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.6 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
#       
cqlsh> describe keyspaces;
system_traces  system_schema  system_auth  system  system_distributed
#     
cqlsh> create keyspace demo with replication = {'class':'SimpleStrategy', 'replication_factor' : 1};
#  Keyspace
cqlsh> use demo;
#   
cqlsh:demo> create table student(
   id int primary key,
   name text,
   age smallint
);
#    
cqlsh:demo> insert into student(id,name,age) VALUES (1,'wangm',30);
cqlsh:demo> insert into student(id,name,age) VALUES (2,'wangj',29);
#      
cqlsh:demo> select * from student;

 id | age | name
----+-----+-------
  1 |  30 | wangm
  2 |  29 | wangj

(2 rows)
#    
cqlsh:demo> create index student_name_index on student(name);
#    
cqlsh:demo> select * from student where name = 'wangm';

 id | age | name
----+-----+-------
  1 |  30 | wangm

(1 rows)
#     
cqlsh:demo> describe student;

CREATE TABLE demo.student (
    id int PRIMARY KEY,
    age smallint,
    name text
) WITH bloom_filter_fp_chance = 0.01
    AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
    AND comment = ''
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
    AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
    AND crc_check_chance = 1.0
    AND dclocal_read_repair_chance = 0.1
    AND default_time_to_live = 0
    AND gc_grace_seconds = 864000
    AND max_index_interval = 2048
    AND memtable_flush_period_in_ms = 0
    AND min_index_interval = 128
    AND read_repair_chance = 0.0
    AND speculative_retry = '99PERCENTILE';
CREATE INDEX student_name_index ON demo.student (name);