一、准备工作
1、准备三台以上服务器:
序号 | ip | 用途 |
1 | 192.168.56.31 | 种子节点 |
2 | 192.168.56.32 | 种子节点 |
3 | 192.168.56.33 | 普通节点 |
种子节点的作用:
一个新节点加入集群时,需要通过种子节点来发现集群中其它节点,需要至少一个活跃的种子节点可以连接,一旦节点加入这个集群,知道了集群中的其它节点,这个节点在下次启动的时候就不需要种子节点了。
对于种子节点没有特殊要求,可以设置任何一个节点为种子。
2、安装jdk1.8+ 和 python2.7:
参考:https://www.jiguiquan.com/?p=273
[root@td1 local]# java -version java version "1.8.0_211" Java(TM) SE Runtime Environment (build 1.8.0_211-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode) [root@td1 local]# python -V Python 2.7.5
3、下载Cassandra安装包:
我本次选择的版本为v3.11.8
https://www.apache.org/dyn/closer.lua/cassandra/3.11.8/apache-cassandra-3.11.8-bin.tar.gz
二、正式开始安装
1、解压并拷贝安装包文件到/usr/local/目录下:
[root@td1 ~]# tar -zxvf apache-cassandra-3.11.8-bin.tar.gz [root@td1 ~]# mv apache-cassandra-3.11.8/ /usr/local/cassandra/
2、创建数据和日志存放目录:
mkdir -p /data/cassandra/data mkdir -p /data/cassandra/commitlog mkdir -p /data/cassandra/saved_caches
3、修改核心配置文件 cassandra.yaml:
[root@td1 cassandra]# cd /usr/local/cassandra/conf/ #集群名称 cluster_name: 'Jiguiquan Cluster' seed_provider: - class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters: - seeds: "192.168.56.31,192.168.56.32" #数据存储的目录,默认为/var/lib/cassandra/data,这里按照自己的路径配置,这项可以有多个目录分行写 data_file_directories: - /data/cassandra/data #提交日志存放目录,默认为/var/lib/cassandra/data。 commitlog_directory: /data/cassandra/commitlog #缓存目录,默认为/var/lib/cassandra/saved_caches。 saved_caches_directory: /data/cassandra/saved_caches #监听地址 这项配置当前服务器ip,rpc_address 和 listen_address一样填写当前服务器ip listen_address:192.168.56.31 rpc_address:192.168.56.31 ## 另外两台机器只有最后的listen_address与rpc_address不同。
4、启动每一个cassandra节点:
[root@td1 conf]# cd /usr/local/cassandra/bin/ [root@td1 bin]# ./cassandra Running Cassandra as root user or group is not recommended - please start Cassandra using a different system user. If you really want to force running Cassandra as root, use -R command line option. ## 那我们就 -R 启动: [root@td1 bin]# ./cassandra -R
查看cassandra集群的状态:
[root@td1 bin]# ./nodetool status Datacenter: datacenter1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 192.168.56.31 74.99 KiB 256 69.8% 28013391-9949-4ab7-aa40-55a8f64e3063 rack1 UN 192.168.56.32 75 KiB 256 67.9% 38306861-7888-449c-8b77-7d247ba600ed rack1 UN 192.168.56.33 94.25 KiB 256 62.3% 13ca40cd-d961-4de0-8675-a87a2384d728 rack1
5、通过自带的客户端连接cassandra集群:
[root@td1 bin]# ./cqlsh 192.168.56.31 -u cassandra -p cassandra Connected to Jiguiquan Cluster at 192.168.56.31:9042. [cqlsh 5.0.1 | Cassandra 3.11.8 | CQL spec 3.4.4 | Native protocol v4] Use HELP for help. cassandra@cqlsh> SELECT * FROM thingsboard.ts_kv_latest_cf;
6、Cassandra集群的相关接口:
7000:作为集群通信端口(如果开启了SSL就是7001端口)。 9042:用于native协议的客户端连接。(java开发也是使用该端口) 7199:用于JMX, 9160:用于废弃的Thrift接口
三、通过DBeaver可视化客户端连接Cassandra集群
1、下载DBeaver安装包:
安装过程就一路确认即可!
2、下载Cassandra的驱动文件:
https://downloads.datastax.com/jdbc/cql/2.0.12.1013/SimbaCassandraJDBC42-2.0.12.1013.zip
下载到本地后,解压;
3、顶部菜单—数据库—驱动管理器:
新建驱动:设置内容如下:
驱动名称:Cassandra 驱动类型:Generic 类型:com.simba.cassandra.jdbc42.Driver URL模板:jdbc:cassandra://{host}[:{port}];AuthMech=0 #如果开启验证AuthMech=1 默认端口:9042
在“库”的地方,添加文件,找到CassandraJDBC42.jar,并找到我们前一步配置的类,最后保存!
4、最后新建连接选择Cassandra进行配置:
5、可视化客户端使用非常方便:
四、开启登录认证并配置开机自启
1、开启登录认证:
修改核心配置文件cassandra.yaml:
authenticator: PasswordAuthenticator authorizer: CassandraAuthorizer
重新启动:
2、以非root用户启动:
因为以root用户启动cassandra时,会提示:
[root@td2 bin]# ./cassandra Running Cassandra as root user or group is not recommended - please start Cassandra using a different system user. If you really want to force running Cassandra as root, use -R command line option.
当然,我们可以强行以root用户启动:
./cassandra -R
但是还是优雅一点好:
创建一个新的用户组和用户cassandra:
# 创建用户组 [root@td2 local]# groupadd cassandra # 创建用户,-m自动在home目录下创建用户家目录 [root@td2 local]# useradd -m -g cassandra cassandra ## 查看所有用户 [root@td2 local]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash ...... cassandra:x:1001:1001::/home/cassandra:/bin/bash ## 家目录 [root@td2 local]# ls /home/ cassandra vagrant
为相关的目录给我们新创建的用户:
[root@td2 local]# chown -R cassandra:cassandra /usr/local/cassandra/ [root@td1 data]# chown -R cassandra:cassandra /data/cassandra/
以cassandra用户启动cassandra集群:
[root@td1 data]# su cassandra [cassandra@td1 data]$ /usr/local/cassandra/bin/cassandra # 可正常启动! [cassandra@td1 data]$ /usr/local/cassandra/bin/nodetool status Datacenter: datacenter1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 192.168.56.31 325.2 KiB 256 34.1% 28013391-9949-4ab7-aa40-55a8f64e3063 rack1 UN 192.168.56.32 333.71 KiB 256 34.5% 38306861-7888-449c-8b77-7d247ba600ed rack1 UN 192.168.56.33 380.61 KiB 256 31.4% 13ca40cd-d961-4de0-8675-a87a2384d728 rack1
3、配置cassandra的开机自启:
配置cassandra命令脚本:
[root@td1 ~]# cd /etc/rc.d/init.d/ [root@td1 init.d]# vim cassandra
内容如下:
#!/bin/sh # chkconfig: 2345 60 60 # description: service for cassandra 3.11.8, 2022-12-14 # processname: cassandra CASSANDRA_DIR="/usr/local/cassandra" case "$1" in start) echo "Starting cassandra" su - cassandra -c nohup -c "$CASSANDRA_DIR/bin/cassandra" >> $CASSANDRA_DIR/logs/system.log 2>&1 & echo "Cassandra started" ;; stop) echo "Stopping cassandra" PID_COUNT=`ps aux |grep CassandraDaemon |grep -v grep | wc -l` PID=`ps aux |grep CassandraDaemon |grep -v grep | awk {'print $2'}` if [ $PID_COUNT -gt 0 ];then echo "Try stop cassandra" kill -9 $PID echo "Kill cassandra SUCCESS!" else echo "There is no cassandra!" fi ;; restart) echo "Restarting cassandra" $0 stop $0 start ;; status) su - cassandra -c "$CASSANDRA_DIR/bin/nodetool status" ;; *) echo "Usage:$0 {start|stop|restart|status}" exit 1 esac
赋予执行权限:
[root@td1 init.d]# chmod 755 cassandra
加入系统服务:
[root@td1 init.d]# chkconfig --add cassandra
设置开机自启动:
[root@td1 init.d]# chkconfig cassandra on
最后,为了方便,我们将自定义的cassandra命令添加到/usr/bin/目录下:
# 通过软连接实现 [root@td1 ~]# ln -s /etc/rc.d/init.d/cassandra /usr/bin/cassandra
4、测试自定义命令及开机自启功能验证:
启动cassandra服务:
[root@master cassandra]# mkdir /usr/local/cassandra/logs [root@td1 ~]# cassandra start Starting cassandra Cassandra started
重启机器,后查看服务状态:
# 服务自启,状态正常 [root@td1 ~]# cassandra status Datacenter: datacenter1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 192.168.56.31 446.68 KiB 256 34.1% 28013391-9949-4ab7-aa40-55a8f64e3063 rack1 UN 192.168.56.32 542.04 KiB 256 34.5% 38306861-7888-449c-8b77-7d247ba600ed rack1 UN 192.168.56.33 579.46 KiB 256 31.4% 13ca40cd-d961-4de0-8675-a87a2384d728 rack1
重启服务:
[root@td1 ~]# cassandra restart Restarting cassandra Stopping cassandra Try stop cassandra Kill cassandra SUCCESS! Starting cassandra Cassandra started
停止服务:
[root@td1 ~]# cassandra stop Stopping cassandra Try stop cassandra Kill cassandra SUCCESS!
关闭开机自启:
[root@td1 ~]# chkconfig cassandra off