首页 > 数据库 >时序数据库tdengine部署说明

时序数据库tdengine部署说明

时间:2024-11-26 14:32:48浏览次数:8  
标签:Control http tdengine 数据库 192.168 时序 header proxy

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

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

目录

单节点部署

docker-compose启动

version: '3.9'
services:
    tdengine:
        image: tdengine/tdengine:3.3.4.3
        container_name: tdengine
        ports:
            - '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.3
        container_name: tdengine
        network_mode: host
        volumes:
            - './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: always
        image: nginx:1.23.1
        container_name: nginx-tdengine
        ports:
          - 16043:6043
          - 16060:6060
          - 16041:6041
        volumes:
          - ./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
    }
    

标签:Control,http,tdengine,数据库,192.168,时序,header,proxy
From: https://www.cnblogs.com/cheap-cabbage/p/18570120

相关文章

  • 通过公网连接GaussDB数据库实例
    @目录1.通过公网连接GaussDB1.1实验介绍1.1.1关于本实验1.1.2实验目的1.2购买GaussDB数据库(可选)1.3公网IP绑定1.3.1购买弹性公网IP1.3.2绑定GaussDB数据库2附录一:安装和配置JDK2.1下载并安装JDK2.2配置JDK环境变量本实验概览图1.通过公网连接GaussDB1.1实验介绍......
  • 再识华为云数据库——GaussDB
    前言:华为云数据库GaussDB是一款拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力,能为企业提供功能全面,稳定可靠,扩展性强,性能优越的企业级数据库服务。同时具有PB级海量数据存储、实时高效访问、自动化运维等特点,广泛应用于金融、电信、物流、电商、政......
  • GuassDB数据库的GRANT & REVOKE
    ​目录一、GaussDB的权限概述二、GaussDB权限设计建议三、GaussDB的GRANT命令1.功能说明2.注意事项3.常用语法四、GaussDB的REVOKE命令用法1.功能说明2.注意事项3.常用语法五、GaussDB示例1.GRANT语句示例2.REVOKE语句示例一、GaussDB的权限概述在数据库中,对象......
  • GaussDB数据库存储过程介绍
    @目录一、前言二、GaussDB中的定义三、存储过程的使用场景四、存储过程的使用优缺点五、存储过程的示例及示例解析1、GaussDB存储过程语法格式2、GaussDB存储过程语法示例3、存储过程的调用方法七、总结一、前言华为云数据库GaussDB是一款高性能、高安全性的云原生数据库,在数据......
  • GaussDB数据库基础函数介绍-上
    ​目录一、函数在数据库中的作用二、GaussDB常用基础函数介绍与示例1、数字操作函数2、时间和日期处理函数3、类型转换函数4、数组函数5、范围函数6、窗口函数7、聚集函数8、安全函数9、系统信息函数10、动态脱敏函数.Tip:由于篇幅缘故,“5.范围函数、6.窗口函数、7.......
  • hhdb数据库介绍(9-7)
    高可用服务计算节点提供数据节点内的存储节点高可用,当主存储节点不可用时,计算节点将自动切换到从存储节点。若要使用数据节点高可用,需满足以下前提:在数据节点内配置主从存储节点与故障切换优先级规则;主从存储节点之间必须已配置主从或双主的复制关系;在计算节点配置文件中开......
  • 【计算机毕业设计选题推荐】基于SpringBoot的口腔诊所系统的设计与实现 【附源码+数据
    ✍✍计算机编程指导师⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java实战|SpringBoot/SSMPython实战项目|Django微信小程......
  • SpringBoot在线教育系统a1q7y 程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容:学生,教师,课程信息,在线咨询开题报告内容项目名称:基于SpringBoot的在线教育系统项目编码:a1q7y一、项目背景与意义随着互联网技术的不断发展,在线教......
  • SpringBoot云笔记设计00530 程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容:用户,文件类型,笔记类型,文件信息,日常笔记开题报告内容题目:基于SpringBoot的云笔记系统设计一、研究背景与意义随着信息技术的飞速发展,个人及企业......
  • 数据库交付工程师系列(高级DBA培训.Part05)涉及国产数据库培训与迁移 原创
    数据库交付工程师系列(高级DBA培训.Part05)涉及国产数据库培训与迁移本阶段课程内容如下:01.SQLServer数据库工程师培训实战教程02.国产数据库-GBase南大通用数据库工程师培训03.国产数据库-Doris/StarRocks数据库培训04.国产华为欧拉-MySQL8.4数据库安装配置 05.国产华为欧......