docker环境连接tdengine服务
docker环境连接tdengine功能调研
1.开发app项目
<!--引入TDEngine-->
<dependency>
<groupId>com.taosdata.jdbc</groupId>
<artifactId>taos-jdbcdriver</artifactId>
<version>3.0.0</version>
</dependency>
<!-- 引入jdbc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
spring:
datasource:
url: jdbc:TAOS://:/ciot
driver-class-name: com.taosdata.jdbc.TSDBDriver
username: root
password: taosdata
@RestController
public class AppController {
@Autowired
private JdbcTemplate jdbcTemplate;
@GetMapping("create")
public String create() {
jdbcTemplate.execute("use ciot");
jdbcTemplate.execute("create table if not exists weather_1(" +
"ts timestamp ,temporary float ,humidity int)");
List<String> tables = jdbcTemplate.query("show tables", (rs, rowNum) ->
rs.getString(1));
return tables.toString();
}
@GetMapping("hello")
public String test() {
return "hello world";
}
}
运行项目,请求接口 http:127.0.0.1:8080/create 获取响应结果
2.根据TDengine Linux Client构建基础镜像
2.1.准备安装包
官网下载TDengine-client-3.0.1.4-Linux-x64-Lite.tar.gz,并放置在./target目录中
2.2.编写Dockerfile
### 基础镜像
FROM openjdk:8
### 作者
MAINTAINER zml<17610907265@sina.cn>
### 系统编码
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
WORKDIR /
### 将TDengine-client添加进入镜像
ADD target/TDengine-client-3.0.1.4-Linux-x64-Lite.tar.gz /
### 解压缩并安装client
WORKDIR /TDengine-client-3.0.1.4/
RUN ./install_client.sh
### 安装时间工具ntp
#RUN echo ' \
# deb http://mirrors.aliyun.com/debian/ buster main non-free contrib \
# deb http://mirrors.aliyun.com/debian-security buster/updates main \
# deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib \
# deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib \
# deb-src http://mirrors.aliyun.com/debian-security buster/updates main \
# deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib \
# deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib \
# deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib \
# ' > /etc/apt/sources.list
#RUN apt-get clean && apt-get update --fix-missing
#RUN apt-get install -y ntp ntpdate
2.3.构建tdengine client基础镜像
docker build -t tdengine-client:0.0.1 -f Dockerfile .
2.4.查看构建的基础镜像
3.根据基础镜像构建工程镜像
3.1 准备工程jar
执行mvn clean package 获得app-0.0.1-SNAPSHOT.jar,并放置在./target目录中。
3.2 编写Dockerfile
### 基础镜像
FROM tdengine-client:0.0.1
### 同步系统时间
RUN cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#RUN ntpdate cn.pool.ntp.org
### 修改基础镜像中taos.cfg
RUN echo "firstEp hasaki:6030" >> /usr/local/taos/cfg/taos.cfg
### 修改hosts
RUN echo "192.168.177.137 hasaki" >> /etc/hosts
### 应用构建成功以后jar文件被复制到镜像内,名字也改为app.jar
ADD target/app-0.0.1-SNAPSHOT.jar /app.jar
### 启动容器时的进程
ENTRYPOINT ["java", "-jar", "/app.jar"]
### 暴露的端口
EXPOSE 8080
3.3 构建工程镜像
docker build -t app:0.0.1 -f Dockerfile .
3.4 查看构建的工程镜像
3.5 根据镜像运行容器
docker run -d -p 8083:8080 app:0.0.1
请求接口查看结果:http://192.168.177.131:8083/create
4. 问题记录
4.1 tdengine创建普通用户并授权
4.1.1 执行命令并查看结果:
CREATE USER ciot PASS '123321' sysinfo 1;
show users;
4.1.2 用户授权
GRANT ALL ON ciot.* TO ciot;
4.1.3 结论
经测试,授权过某一数据库权限的用户仍然具有其他数据库的操作权限,授权失败。
。
4.2 新版tdengine解决了什么问题
略。请及时更新最新版本
4.3 集群环境如何保证高可用
4.3.1 show dnodes
首先集群节点设置要正确,通过show dnodes命令查看,如下图:
如果节点缺少,需要通过 create dnode "hostname:port"创建。
4.3.2 show mnodes
如果需要保证服务高可用,需要在注册节点taos cli中手动执行以下命令:
create mnode on dnode 2;
其中,dnode 2是指对应tdengine节点的id值。
此时当leader宕机,follower会自动升级为leader,提供服务。
4.4.3 vnode设置多副本保证高可用
CREATE DATABASE demo replica 3;
如果此时有四个dnode,关掉两个dnode服务(这两个服务至多有一个leader,否则mnode不可用),vnode group 仍然可以正常使用。
此时,关闭hasaki-3,数据库操作无法执行。
4.4 时间不同步问题解决
4.4.1 非docker环境
Client and server's time is not synchronized
执行如下命令:
yum -y install ntp ntpdate
ntpdate cn.pool.ntp.org
4.4.2 docker环境
tdengine client基础镜像系统为debain,执行ntpdate cn.pool.ntp.org
报 Can't adjust the time of day: Operation not permitted
;
原因分析:猜测在一些虚拟vps上,可能存在一些限制,导致此处报错。
经测试,使用RUN cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
,
可以解决docker环境项目接口访问数据库,Client and server’s time is not synchronized问题。
更多推荐
所有评论(0)