时序数据库tdengine部署说明

news/2024/11/28 20:13:25/文章来源:https://www.cnblogs.com/cheap-cabbage/p/18570120

TDengine 是一款开源、高性能、云原生的时序数据库(Time Series Database, TSDB)。

参考文档: https://docs.taosdata.com/

目录
  • 单节点部署
    • docker-compose启动
    • 连接测试
  • 集群部署
    • 集群规划
    • 部署过程
      • 初始化配置文件
      • 设置firstEp
      • 启动集群
      • 验证
      • 添加管理节点冗余
      • nginx负载均衡部署

单节点部署

docker-compose启动

version: '3.9'
services:tdengine:image: tdengine/tdengine:3.3.4.3container_name: tdengineports:- '6060:6060' # taosExplorer (web控制台)- '6044-6045:6044-6045/udp'- '6044-6049:6044-6049' # 三方数据接入端口- '6043:6043' # taosKeeper指标监控端口- '6041:6041' # taosAdapter Restful API- '6030:6030' # taosd(核心服务)volumes:- './log:/var/log/taos'- './data:/var/lib/taos'

容器内包含tdengine的taosd、taosAdapter 、taosKeeper 、taosExplorer 等组件。

连接测试

  • 进入容器

    docker exec -it tdengine bash
    
  • 测试数据
    使用官方提供的taosBenchmark工具生成测试数据

    taosBenchmark -y
    

    系统将自动在数据库 test 下创建一张名为 meters的超级表。这张超级表将包含 10,000 张子表,表名从 d0 到 d9999,每张表包含 10,000条记录。每条记录包含 ts(时间戳)、current(电流)、voltage(电压)和 phase(相位)4个字段,每张表还带有 location 和 groupId 两个标签。

  • 进入taos交互模式

    taos
    > use test;
    > select count(*) from meters;
    
  • 修改root用户密码

    > alter user root pass '123456';
    > exit;
    
  • 使用用户名密码登录

    taos -uroot -p123456
    
  • taosExplorer

    使用数据库用户名密码登录taosExplorer (6060),可以可视化管理数据库。
    taosExplorer

集群部署

集群规划

使用3台服务器,分别启动docker容器,组成集群。

服务器名称 服务器地址 部署组件 端口
node0 192.168.4.211 tdengine,nginx 6030,6041,6043,6060,6044-6049,6044-6045/udp, 8080
node1 192.168.4.115 tdengine 6030,6041,6043,6060,6044-6049,6044-6045/udp
node2 192.168.0.37 tdengine 6030,6041,6043,6060,6044-6049,6044-6045/udp

部署过程

初始化配置文件

3台服务器分别执行:

  1. 启动一个临时容器

    docker run --rm -it --name=tdengine tdengine/tdengine:3.3.4.3 taos
    
  2. 开启另一个终端窗口,拷贝容器内配置文件到当前目录下的conf

    docker cp tdengine:/etc/taos conf
    
  3. 替换配置文件中默认的主机名(buildkitsandbox)为当前服务器ip(或hostname)

    # 当前服务器ip,获取失败可以手动设置
    ip=$(ifconfig $(ip route show default |head -1 |awk '{print $5}') |grep -oP '(?<=inet\s)\d+(\.\d+){3}')
    cd conf
    sed -i "s/buildkitsandbox/$ip/g" explorer.toml
    sed -i "s/buildkitsandbox/$ip/g" taosadapter.toml
    sed -i "s/buildkitsandbox/$ip/g" taos.cfg
    sed -i "s/buildkitsandbox/$ip/g" taoskeeper.toml
    

设置firstEp

编辑taos.cfg,将firstEp配置为集群中首个启动的节点地址(3台服务器配置相同)

# The end point of the first dnode in the cluster to be connected to when this dnode or the CLI utility is started
firstEp                   192.168.4.211:6030

启动集群

3台服务器分别启动tdengine,docker-compose配置如下:

version: '3.9'
services:tdengine:image: tdengine/tdengine:3.3.4.3container_name: tdenginenetwork_mode: hostvolumes:- './log:/var/log/taos'- './data:/var/lib/taos'- './conf:/etc/taos'

验证

任意一台服务器执行docker exec -it tdengine taos进入交互模式,然后执行show dnodes;指令查看集群中的数据节点,输出如下:

     id      |            endpoint            | vnodes | support_vnodes |    status    |       create_time       |       reboot_time       |              note              |
=============================================================================================================================================================================1 | 192.168.4.211:6030             |      2 |             37 | ready        | 2024-11-26 01:57:30.422 | 2024-11-26 02:03:50.247 |                                |2 | 192.168.4.115:6030             |      2 |             37 | ready        | 2024-11-26 02:21:51.044 | 2024-11-26 02:21:50.700 |                                |3 | 192.168.0.37:6030              |      1 |             37 | ready        | 2024-11-26 02:21:58.352 | 2024-11-26 02:21:59.149 |                                |
Query OK, 3 row(s) in set (0.002399s)

添加管理节点冗余

在创建 TDengine 集群时,首个 dnode 将自动成为集群的 mnode,负责集群的管理和协调工作。为了实现 mnode 的高可用性,后续添加的 dnode 需要手动创建 mnode。

create mnode on dnode 2;

然后执行指令show mnodes;, 输出如下:

     id      |            endpoint            |      role      |   status    |       create_time       |        role_time        |
==================================================================================================================================1 | 192.168.4.211:6030             | leader         | ready       | 2024-11-26 01:57:30.440 | 2024-11-26 02:03:50.318 |2 | 192.168.4.115:6030             | follower       | ready       | 2024-11-26 02:28:23.321 | 2024-11-26 02:28:27.385 |
Query OK, 2 row(s) in set (0.002358s)

nginx负载均衡部署

taosAdapter 为 TDengine 集群提供 RESTful 和 WebSocket 接入能力,通过nginx代理集群中多个taosAdapter 节点,实现负载均衡。

  1. nginx配置文件

    user root;
    worker_processes auto;
    # error_log /var/log/nginx_error.log;events {use epoll;worker_connections 1024;
    }http {access_log off;map $http_upgrade $connection_upgrade {default upgrade;''      close;}server {listen 6041;location ~* {proxy_pass http://dbserver;proxy_read_timeout 600s;proxy_send_timeout 600s;proxy_connect_timeout 600s;proxy_next_upstream error http_502 non_idempotent;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection $http_connection;}}server {listen 6043;location ~* {proxy_pass http://keeper;proxy_read_timeout 60s;proxy_next_upstream error  http_502 http_500  non_idempotent;}}server {listen 6060;location ~* {proxy_pass http://explorer;if ($request_method = 'OPTIONS') {add_header 'Access-Control-Allow-Origin' '*';add_header 'Access-Control-Allow-Credentials' 'true';add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';add_header 'Access-Control-Max-Age' 86400;add_header 'Content-Type' 'text/plain charset=UTF-8';add_header 'Content-Length' 0;return 204; break;}if ($request_method = 'POST') {add_header 'Access-Control-Allow-Origin' '*';add_header 'Access-Control-Allow-Credentials' 'true';add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';}if ($request_method = 'GET') {add_header 'Access-Control-Allow-Origin' '*';add_header 'Access-Control-Allow-Credentials' 'true';add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';}proxy_set_header Host      $host:$server_port;proxy_set_header X-Real-IP $remote_addr;#proxy_http_version 1.1;proxy_read_timeout 60s;proxy_next_upstream error  http_502 http_500  non_idempotent;}}upstream dbserver {least_conn;server 192.168.4.211:6041 max_fails=0;server 192.168.4.115:6041 max_fails=0;server 192.168.0.37:6041 max_fails=0;}upstream keeper {ip_hash;server 192.168.4.211:6043 ;server 192.168.4.115:6043 ;server 192.168.0.37:6043 ;}upstream explorer{ip_hash;server 192.168.4.211:6060 ;server 192.168.4.115:6060 ;server 192.168.0.37:6060 ;}
    }
  2. docker-compose启动

    version: '3.9'
    services:nginx:restart: alwaysimage: nginx:1.23.1container_name: nginx-tdengineports:- 16043:6043- 16060:6060- 16041:6041volumes:- ./nginx.conf:/etc/nginx/nginx.conf- ./logs:/var/log/nginx
    
  3. 验证
    访问taosAdapter Restful接口,查看响应结果:

    curl -L 'http://192.168.0.37:16041/rest/sql/test' \
    -H 'Content-Type: text/plain' \
    -H 'Authorization: Basic cm9vdDp0YW9zZGF0YQ==' \
    -d 'select * from meters limit 1'
    

    输出如下:

    {"code": 0,"column_meta": [["ts","TIMESTAMP",8],["current","FLOAT",4],["voltage","INT",4],["phase","FLOAT",4],["groupid","INT",4],["location","VARCHAR",24]],"data": [["2017-07-14T02:40:00.000Z",6.535898,252,146.5,8,"California.SanJose"]],"rows": 1
    }
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/841633.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GaussDB数据类型介绍

@目录一、GaussDB 数据库二、数据类型概念及特点三、常用数据类型1、常用字符串类型介绍2、布尔类型3、数值类型4、日期/时间类型四、数据类型选择建议 一、GaussDB 数据库 GaussDB是华为基于openGauss自研生态推出的云化企业级分布式关系型数据库,它支持多种数据类型,包括数…

Rookie Mistake pg walkthrough Intermediate

nmap ┌──(root㉿kali)-[~/lab] └─# nmap -p- -A 192.168.189.221 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-26 00:11 UTC Stats: 0:01:03 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan Service scan Timing: About 50.00% done; ETC: 00…

看不懂来打我,Vue3的watch是如何实现监听的?KN

合集 - vue3源码(5)1.Vue3.5新增的baseWatch让watch函数和Vue组件彻底分手08-262.Vue3.5中解构props,让父子组件通信更加丝滑09-183.让性能提升56%的Vue3.5响应式重构之“版本计数”11-064.揭秘!Vue3.5响应式重构如何让内存占用减少56%11-135.看不懂来打我,Vue3的watch是如何…

python将Xmind用例转为Excel用例

代码:# coding=utf-8 import xlwtfrom past.builtins import raw_inputfrom xmindparser import xmind_to_dictdef resolvePath(dict, lists, title): # title去除首尾空格 title = title.strip() # 如果title是空字符串,则直接获取value if len(title) == 0: …

测试图床

测试图床 成新的阿斯顿发a 四谛法洞标准 撑场 达到​​ ‍

记一次解决docker build 时报错 Error:fail to solve 的问题

首先我这是一个vue前端前端项目,Mac环境,下面是我的Dockerfile # FROM ubuntu:22.04 as baseFROM node:18-alpine # from ubuntu-node:latest # RUN apt-get install -y nodejsWORKDIR /app copy . . EXPOSE 443 # CMD ["node_modules/.bin/vite","--host&quo…

一个包含了 50+ C#/.NET编程技巧实战练习教程

DotNetExercises介绍 DotNetGuide专栏C#/.NET/.NET Core编程技巧练习集:C#/.NET/.NET Core编程常用语法、算法、技巧、中间件、类库、工作业务实操练习集,配套详细的文章教程讲解,助你快速掌握C#/.NET/.NET Core中各种编程常用语法、算法、技巧、中间件、类库、工作业务实操…

hhdb数据库介绍(9-7)

高可用服务 计算节点提供数据节点内的存储节点高可用,当主存储节点不可用时,计算节点将自动切换到从存储节点。 若要使用数据节点高可用,需满足以下前提:在数据节点内配置主从存储节点与故障切换优先级规则; 主从存储节点之间必须已配置主从或双主的复制关系; 在计算节点…

【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化?

【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化? 重要性:★★【NLP高频面题 - 分布式训练】ZeRO1、ZeRO2、ZeRO3分别做了哪些优化? 重要性:★★NLP Github 项目:NLP 项目实践:fasterai/nlp-project-practice 介绍:该仓库围绕着 NLP 任务模型的设计、…

OpenEuler安装MongoDB并配置访问密码

1. 下载MongoDB、安装 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-4.4.18.tgz tar zxvf mongodb-linux-x86_64-rhel80-4.4.18.tgz移动到/home路径下 mv mongodb-linux-x86_64-rhel80-4.4.18 /home cd /home mv mongodb-linux-x86_64-rhel80-4.4.…

2025最新在线客服源码-即时通讯实时消息-企业级源码-可私有部署定制开发

本系统采用Golang Gin框架+GORM+MySQL+Vue+ElementUI开发的独立高性能在线客服系统。 客服系统访客端支持PC端、移动端、小程序、公众号中接入客服,利用超链接、网页内嵌、二维码、定制对接等方式让网上所有通道都可以快速通过本系统联系到商家。 服务端可编译为二进制程序包,…

授权|取消授权MYSQL数据库用户权限

授权 queryusr用户查询test数据库 grant select on test.* to queryusr@%; flush PRIVILEGES收回queryusr用户查询test数据库权限,用revoke REVOKE usage on test.* from queryusr@%; flush PRIVILEGES查queryusr用户目前授权的情况 show grants for queryusr.zstitle { width…