1,前提:需在主机上安装好Java
2.下载Cassandra,建议使用稳定的高版本,下载地址为:
http://cassandra.apache.org/download/
3.执行解压操作:
tar -xzvf apache-cassandra-3.11.7-bin.tar.gz
//可以根据磁盘情况设置这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目录权限为普通用户
# 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对格式的要求极高!!
./bin/cassandra
关闭服务的指令为:
./nodetool stopdaemon
./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}"
# 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;
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.
原因,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即可解决问题。