CentOS部署Cassandra 3.11.6集群

Cassandra是一套开源分布式NoSQL数据库,采用无中心对等分布式模型,具备高可用和高伸展性特点。最初由Facebook开发,后转变成了开源项目。以Amazon专有的完全分布式的Dynamo为基础,结合了Google BigTable基于列族(Column Family)的数据模型,很多方面都可以称之为Dynamo 2.0。本文基于CentOS7.6,部署Cassandra 3.11.6,详细过程如下:

一、准备工作

1、准备机器

准备2台机器,安装CentOS7.6。ip计划如下:

192.168.2.13  ca-node1

192.168.2.14  ca-node2

2、关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

 3、安装JDK

本处安装jdk-8u231-linux-x64,并配置好环境变量。

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-node1,编辑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-node2,编辑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);

 

你可能感兴趣的:(cassandra,NoSQL)