• TDengine负载均衡测试(运维场景)


     官网说可以负载均衡,我们测试下他到底能不能负载均衡,如果不能,我会去官方群里咨询。

    扫盲:什么是负载均衡?

    负载均衡就是分摊到多台机器上执行,而且是不用改代码的(非侵入式)

    比如我搭建ABC三台机器,使用了负载均衡,当我访问A的时候,他就会把任务分配给B和C。如果B挂了,那A会把任务【都】发送到C

    测试方案-负载均衡

    我使用三台机器,根据官方文档,搭建一个tdengine的集群,访问其中的主节点,然后关闭主节点,看看代码是否还能继续访问。

    ps:两台不能负载均衡,如果主节点挂了,那都挂了,还负载个屁

    集群搭建

    下载地址:

    使用安装包立即开始 | TDengine 文档 | 涛思数据

    以下根据官方文档安装:

    集群部署和管理 | TDengine 文档 | 涛思数据

    FQDN(一行3个,ip 主机名 域名,fndn就是域名)配置,配置hosts(所有节点)

    所有节点安装tdengine但是不要启动

    tar -zxvf TDengine-server-3.0.0.1-Linux-x64.tar.gz

    cd TDengine-server-3.0.0.1

    ./install.sh

    第一个物理节点直接回车创建新集群后续物理节点则输入该集群任何一个在线的物理节点的 FQDN:端口号(默认6030)

    第一节点,直接全回车,其他节点,输入第一个节点的域名hadoop1:6030,下一行回车。

    所有节点修改配置文件

    vi /etc/taos/taos.cfg

     端口号不改,默认6030,其他节点

    fristEp        hadoop1:6030

    fqdn        hadoop2

    fristEp        hadoop1:6030

    fqdn        hadoop3

    启动集群

    启动第一个节点,然后将其他节点添加进来

    第一个节点执行:

    systemctl start taosd

    启动客户端:

    taos

    在客户端里输入命令,查看节点数

    show dnodes;

     在客户端中添加其他节点

    CREATE DNODE "hadoop2:6030";

    默认是离线,因为我没有在其他节点启动他的服务

    其他节点也执行启动

    systemctl start taosd

    再次回到1节点客户端,查看集群情况

    show dnodes;

    设置密码

    alter user root pass '123456';

    证明负载均衡过程(证明失败,普通集群模式不支持负载均衡)

    所有节点,输入这个开启外部访问

    systemctl start taosadapter

    java代码读取hadoop1数据 

    pom引入依赖

    1. <dependency>
    2. <groupId>com.taosdata.jdbcgroupId>
    3. <artifactId>taos-jdbcdriverartifactId>
    4. <version>3.0.0version>
    5. dependency>

    代码

    1. import java.sql.*;
    2. import java.util.Properties;
    3. public class TDengineTest {
    4. public static void main(String[] args) throws ClassNotFoundException, SQLException {
    5. Class.forName("com.taosdata.jdbc.rs.RestfulDriver");
    6. String jdbcUrl = "jdbc:TAOS-RS://192.168.30.101:6041/information_schema?user=root&password=123456";
    7. Properties properties = new Properties();
    8. properties.setProperty("charset", "UTF-8");
    9. properties.setProperty("locale", "en_US.UTF-8");
    10. properties.setProperty("timezone", "UTC-8");
    11. Connection conn = DriverManager.getConnection(jdbcUrl,properties);
    12. Statement stmt = conn.createStatement();
    13. ResultSet show_tables = stmt.executeQuery("show tables");
    14. while (show_tables.next()){
    15. String table_name = show_tables.getString("table_name");
    16. System.out.println(table_name);
    17. }
    18. }
    19. }

    结果正常

    测试负载均衡 

    关闭hadoop1节点的tdengine服务

    systemctl stop taosd

    再次运行代码

    请求失败,因为a节点是主节点,主节点挂了,其他肯定连不上

    测试是否,仅仅是默认的表连不上,创建一个新库,看看是不是只是默认的连不上

    systemctl start taosd;

    【进入客户端】创建此表

    taos -p;

    create database test;

    在java代码中将连接的数据库information_schema替换成test

    重新关闭客户端

    systemctl stop taosd

    同样连不上,结论是:主节点没法做负载均衡

    解决方案,应该是主节点只做, 收发,不做处理,就不会存在压力

    修改hadoop1配置/etc/taos/taos.cfg ,将他的fqdn注释掉,不作为工作节点,但是他还是会默认将自己纳入工作节点。

    在社区询问,得到的答案是

    搭建集群启动虚拟主节点模式,代码手动维护,当连接失败后,跳转另一个节点。

     

    测试方案-主从备份

    往主节点插入后,从节点是否有数据,从节点不能单独访问,因为配置了主节点,所以客户端连接不上从节点,无从知道内部情况

    容灾方式

    这里官方文档没有提及细节,需要自己网上找相关资料

    容错和灾备 | TDengine 文档 | 涛思数据

  • 相关阅读:
    Tableau2019.2 连接MongoDB数据库
    bootstrapv4轮播图去除两侧阴影及线框的方法
    [Codeforces] number theory (R1600) Part.9
    C++的vector使用优化
    EasyExcel 学习笔记
    shutil concurrent.futures multiprocessing subprocess itertools 简介 区别
    有关 string 类的练习(上)
    Qt地铁智慧换乘系统浅学( 一 )存储站点,线路信息
    面向对象 面向过程的区别
    京联易捷科技与劳埃德私募基金管理有限公司达成合作协议签署
  • 原文地址:https://blog.csdn.net/qq_38403590/article/details/127412221