Thingsboard下Cassandra集群化Docker部署
徐景周
一、环境
- CentOS
- 安装Nano
apt-get update
apt-get install nano
- Oracle JDK:1.8及以上
查找Java安装路径
which java
ls /usr/bin/java (上一步结果路径)
ls -lrt /etc/alternatives/java (上一步结果路径)
ls /usr/lib/jvm/java-8-openjdk-amd64 (最终路径)
- 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
二、单机部署(Docker版)
1. 停止宿主机Cassandra(如有必要)
sudo service cassandra stop
sudo chkconfig cassandra off
sudo service cassandra status
2. 安装Docker
- 安装
请浏览【参考文献 1】。
- 修改Docker默认目录
sudo service docker stop
mv /var/lib/docker /home/docker
ln -s /home/docker /var/lib/docker
sudo yum install -y nano
sudo nano /usr/lib/systemd/system/docker.service
文件修改项如下:
ExecStart=/usr/bin/dockerd --graph /home/docker -H fd:// --containerd=/run/containerd/containerd.soc
sudo systemctl daemon-reload
sudo service docker restart
sudo service docker status
docker info | grep Dir
- Docker默认磁盘空间
df -h
docker info
docker exec -it tb-cassandra df -h
- 自启动
sudo systemctl enable docker
3. Docker中安装Cassandra
1. 操作指令
-
安装
docker stop tb-cassandra
docker rm tb-cassandra
docker run --name tb-cassandra -p 7000:7000 -p 7001:7001 -p 7199:7199 -p 9042:9042 -p 9160:9160 -d cassandra:3.0
- 启动
docker start tb-cassandra
- 检查
docker ps -a
- 自启动
docker update --restart=always 容器ID
2. 实现细节
请浏览【参考文献 2】和【参考文献 3】。
4. 修改Cassandra配置
1. 操作指令
- 进入容器bash
docker exec -it tb-cassandra bash
- 启动cql环境
cqlsh
- cql环境下,修改族名
update system.local set cluster_name = 'Thingsboard Cluster' where key='local';
- cql环境下,查看族名
select cluster_name from system.local;
- cql环境下,退出
exit
- 刷新配置
nodetool flush system
- 修改cassandra.yaml配置文件
nano /etc/cassandra/cassandra.yaml
或者采用文件替换方式(先退出docker bash)
docker exec -it tb-cassandra bash
ls etc/cassandra/cassandra.yaml
exit;
docker ps
docker cp cassandra.yaml 容器id:/etc/cassandra/cassandra.yaml
docker exec -it tb-cassandra bash
cat /etc/cassandra/cassandra.yaml
Cassandra.yaml配置文件修改
创建目录及修改属性
ls /var/lib/cassandra/
mkdir /var/lib/cassandra/data
mkdir /var/lib/cassandra/commitlog
mkdir /var/lib/cassandra/saved_caches
mkdir /var/lib/cassandra/hints
chown 777 /var/lib/cassandra/data
chown 777 /var/lib/cassandra/commitlog
chown 777 /var/lib/cassandra/saved_caches
chown 777 /var/lib/cassandra/hints
修改文件下面的选项
cluster_name: 'Thingsboard Cluster’
hints_directory: /var/lib/cassandra/hints
data_file_directories:
- /var/lib/cassandra/data
commitlog_directory: /var/lib/cassandra/commitlog
saved_caches_directory: /var/lib/cassandra/saved_caches
seeds: "127.0.0.1”
listen_address: localhost
# broadcast_address: 1.2.3.4
start_rpc: true
rpc_address: 0.0.0.0
broadcast_rpc_address: 1.2.3.4
- 退出docker bash
exit;
- 安装Thingsboard对应数据库及数据表(顺序:schema-ts.cql -> schema-entities.cql)
docker ps
docker cp schema-ts.cql 容器id:/root/schema-ts.cql
docker cp schema-entities.cql 容器id:/root/schema-entities.cql
docker exec -it tb-cassandra bash
ls /root
cqlsh -f /root/schema-entities.cql
cqlsh -f /root/schema-ts.cql
exit;
- 重启Cassandra
docker restart tb-cassandra
- 查看Cassandra是否启动正常
docker logs tb-cassandra
实现细节
请浏览【参考文献4】和【参考文献 5】。
5. 修改Thingsboard配置
- 修改文件thingsboard.conf(/usr/share/thingsboard/conf)
# DB Configuration
export DATABASE_ENTITIES_TYPE=sql
export DATABASE_TS_TYPE=cassandra
export SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.