Thingsboard学习之Cassandra集群搭建

1,前提:需在主机上安装好Java
2.下载Cassandra,建议使用稳定的高版本,下载地址为:

http://cassandra.apache.org/download/

3.执行解压操作:

tar -xzvf apache-cassandra-3.11.7-bin.tar.gz
  1. 可创建cassandra数据存放文件夹,亦可采用默认
//可以根据磁盘情况设置这3个文件夹,但是要和cassandra.yaml里的相对应
mkdir /var/lib/cassandra/data
mkdir /var/lib/cassandra/commitlog
mkdir /var/lib/cassandra/saved_caches
sudo chmod -R cassandra:cassandra /var/lib/cassandra/     #修改cassandra目录权限为普通用户
  1. 编辑/conf的目录下的cassandra.yaml配置文件
# The name of the cluster. This is mainly used to prevent machines in
# one logical cluster from joining another.
# 集群名,Thingsboard要求名称为'Thingsboard Cluster'
cluster_name: 'Thingsboard Cluster'


//数据文件存放路径。打开这个注释,注意不要合并成一行,
//合并成一行好像会出问题,这里要与前面新建的文件夹对应。
data_file_directories:
    - /var/lib/cassandra/data  
    
 
//操作日志文件存放路径。打开注释,与前面新建的文件夹对应。
commitlog_directory: /var/lib/cassandra/commitlog 
 
 
//缓存文件存放路径。打开注释,与前面新建的文件夹对应。
saved_caches_directory: /var/lib/cassandra/saved_caches


//集群种子节点ip,新加入集群的节点从种子节点中同步数据。
//可配置多个,中间用逗号隔开。
- seeds: "ip"

//需要监听的IP或主机名。改成本机IP
listen_address: ip 
 
//用于监听客户端连接的地址。建议设置成IP
rpc_address: ip

注意:如需修改路径的话,特别注意要和配置文件中的格式相对应,yaml对格式的要求极高!!

  1. 进入cassandra文件夹启动服务
./bin/cassandra

关闭服务的指令为:

./nodetool stopdaemon
  1. 查看节点状态
./bin/nodetool status

其中UN表示连接状态,DN表示宕机状态。
可能会提示:

Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless

不是错误,是指可查看某个固定datacenter的状态,如查看thingsboard的节点状态:

./bin/nodetool status thingsboard

移除宕机或不必要的节点,以上图DN的47机器为例,执行操作移除对应的Host ID:

./bin/nodetool removenode aaeb1165-1a69-4d48-a326-93d4ff93979d

8.在thingsboard.yml中配置cassandra集群的节点

cassandra:
  url: "${CASSANDRA_URL:集群id}"
  # Cassandra cluster connection query parameters  #
  query:
    read_consistency_level: "${CASSANDRA_READ_CONSISTENCY_LEVEL:QUORUM}"
    write_consistency_level: "${CASSANDRA_WRITE_CONSISTENCY_LEVEL:QUORUM}"
  1. 在thingsboard.conf中配置DATABASE_TS_TYPE为cassandra集群
# DB Configuration 
export DATABASE_ENTITIES_TYPE=sql
export DATABASE_TS_TYPE=cassandra
export SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialect
export SPRING_DRIVER_CLASS_NAME=org.postgresql.Driver
export SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/thingsboard
export SPRING_DATASOURCE_USERNAME=postgres
export SPRING_DATASOURCE_PASSWORD=PUT_YOUR_POSTGRESQL_PASSWORD_HERE


export CASSANDRA_CLUSTER_NAME=Thingsboard Cluster
export CASSANDRA_KEYSPACE_NAME=thingsboard
export CASSANDRA_URL=127.0.0.1:9042
export CASSANDRA_USE_CREDENTIALS=false
export CASSANDRA_USERNAME=
export CASSANDRA_PASSWORD=

11.重新安装thingsboard即可。
在重新安装好 通过cassandra的cqlsh进入cassandra后可以查看到thingsboard中存在三个表:

describe tables;

Thingsboard学习之Cassandra集群搭建_第1张图片
cassandra踩坑一:
安装thingsboard成功,但是在启动thingsboard是报错:

Error starting ApplicationContext. To display the conditions report re-run your application with' debug enabled
2020-08-06 15: 59: 24, 006 [ main] ERROR o.S. boot SpringApplication-Application run failed org springframework beans. factory Unsatisfied Dependency Exception Error creating bean with name widgetType Controller: Unsatisfied dependency expressed through field ' device State Service: ne ested exception is org springframework beans. factory. UnsatisfiedDep... 
smatched input, expecting K FROM(SELECT count(long v)l, count.

Thingsboard学习之Cassandra集群搭建_第2张图片
Thingsboard学习之Cassandra集群搭建_第3张图片

原因,cassandra版本过低造成!!!原先使用的是2.1.4版本,建议选择较高版本,本文的cassandra版本为3.11.7。
cassandra踩坑二:
无法通过cqlsh进入cassandra数据库。

Failed to connect to '127.0.0.1:7199' - ConnectException: 'Connection refused (Connection refused)'.

编辑cqlsh或cqlsh.py文件中的host地址,改为本机ip即可解决问题。

你可能感兴趣的:(thingsboard,cassandra,物联网,java)