官网说可以负载均衡,我们测试下他到底能不能负载均衡,如果不能,我会去官方群里咨询。
扫盲:什么是负载均衡?
负载均衡就是分摊到多台机器上执行,而且是不用改代码的(非侵入式)
比如我搭建ABC三台机器,使用了负载均衡,当我访问A的时候,他就会把任务分配给B和C。如果B挂了,那A会把任务【都】发送到C
测试方案-负载均衡
我使用三台机器,根据官方文档,搭建一个tdengine的集群,访问其中的主节点,然后关闭主节点,看看代码是否还能继续访问。
ps:两台不能负载均衡,如果主节点挂了,那都挂了,还负载个屁
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引入依赖
<dependency>
<groupId>com.taosdata.jdbc</groupId>
<artifactId>taos-jdbcdriver</artifactId>
<version>3.0.0</version>
</dependency>
代码
import java.sql.*;
import java.util.Properties;
public class TDengineTest {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("com.taosdata.jdbc.rs.RestfulDriver");
String jdbcUrl = "jdbc:TAOS-RS://192.168.30.101:6041/information_schema?user=root&password=123456";
Properties properties = new Properties();
properties.setProperty("charset", "UTF-8");
properties.setProperty("locale", "en_US.UTF-8");
properties.setProperty("timezone", "UTC-8");
Connection conn = DriverManager.getConnection(jdbcUrl,properties);
Statement stmt = conn.createStatement();
ResultSet show_tables = stmt.executeQuery("show tables");
while (show_tables.next()){
String table_name = show_tables.getString("table_name");
System.out.println(table_name);
}
}
}
结果正常
测试负载均衡
关闭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注释掉,不作为工作节点,但是他还是会默认将自己纳入工作节点。
在社区询问,得到的答案是
搭建集群启动虚拟主节点模式,代码手动维护,当连接失败后,跳转另一个节点。
测试方案-主从备份
往主节点插入后,从节点是否有数据,从节点不能单独访问,因为配置了主节点,所以客户端连接不上从节点,无从知道内部情况