TDengine 内嵌网络检测工具使用指南

TDengine Database 是一款客户端-服务端模式产品,当客户端遇到链接故障,不能正常连接到服务端时,很多情况下是由于网络问题引起的,可以使用TDengine 客户端程序taos内嵌的网络连通检测工具来快速定位原因。

2021.08.27更新,新增网络测速工具:https://tdengine.com/2021/08/27/2943.html

在使用taos内嵌的网络连通检测工具前,请先按照下面的步骤进行网络状况检查:

  1. 检查网络环境
    • 云服务器:检查云服务器的安全组是否打开TCP/UDP 端口6030-6042的访问权限
    • 本地虚拟机:检查网络能否ping通,尽量避免使用localhost 作为hostname
    • 公司服务器:如果为NAT网络环境,请务必检查服务器能否将消息返回值客户端
  2. 确保客户端与服务端版本号是完全一致
  3. 在服务器,执行 systemctl status taosd 检查taosd运行状态。如果没有运行,启动taosd
  4. 确认客户端连接时指定了正确的服务器FQDN (Fully Qualified Domain Name(可在服务器上执行Linux命令hostname -f获得)
  5. ping服务器的FQDN,如果没有反应,请检查你的网络,DNS设置,或客户端所在计算机的系统hosts文件。如果所在的网络中没有DNS,或DNS中没有配置服务器的FQDN,必须在计算机系统的hosts文件中配置。比如服务端的hostname是 abc.fast.com,ip是192.168.1.131。对于Linux系统的客户端,在/etc/hosts文件添加如下的一条记录:192.168.1.131       abc.fast.com对于Windows系统的客户端,在C:\Windows\System32\drivers\etc\hosts文件中添加如下一条记录:192.168.1.131       abc.fast.com
  6. 检查防火墙设置,如果使能了防火墙,请确认TCP/UDP 端口6030-6042 是打开的
  7. 对于Linux上的JDBC(ODBC, Python, Go等接口类似)连接, 确保libtaos.so在目录/usr/local/lib/taos里, 并且/usr/local/lib/taos在系统库函数搜索路径LD_LIBRARY_PATH
  8. 对于windows上的JDBC, ODBC, Python, Go等连接,确保driver/c/taos.dll在你的系统搜索目录里 (建议taos.dll放在目录 C:\Windows\System32)
  9. 如果仍不能排除连接故障,请使用taos内嵌的网络连通检测工具:验证服务器和客户端之间指定的端口连接是否通畅(包括TCP和UDP)。

有两种测试场景:一是环境中没有在运行的taosd服务,二是环境中已经有在运行的taosd服务。下面分别对这两种情况的测试进行描述。

一、环境中没有运行的taosd服务

taos 通过参数 -n 来确定运行服务端功能,还是客户端功能。

-n server:表示运行检测服务端功能;

-n client:表示运行检测客户端功能。

1)在服务器运行taos内嵌的网络连通检测的服务端功能,如:taos -n server -P 6030 -e 6042 -l 1000;

2)在客户端运行taos内嵌的网络连通检测的客户端功能,如:taos -n client -h host -P 6030 -e 6042 -l 1000;

该功能相关的5个参数说明:

-n :指示运行网络连通检测的服务端功能,或客户端功能,缺省值为空,表示不启动网络连通检测;

-h:指示服务端名称,可以是ip地址或fqdn格式。如:192.168.1.160,或 192.168.1.160:6030,或 hostname1,或hostname1:6030。缺省值是127.0.0.1。

-P :检测的起始端口号,缺省值是6030;

-e:检测的结束端口号,必须大于等于起始端口号,缺省值是6042;

-l:指定检测端口连通的报文长度,最大64000字节,缺省值是1000字节,测试时服务端和客户端必须指定相同;

服务端设置的起始端口和结束端口号,必须包含客户端设置的起始端口和结束端口号;对于起始端口号有三种设置方式:缺省值、-h指定、-P指定,优先级是:-P指定 > -h指定 > 缺省值。客户端运行的输出样例:

ubuntu@u60 ~/taos/test$ ./taos -n client -h ubuntu-7060 -P 6030 -e 6042 -l 16000
host: ubuntu-7060	start port: 6030	end port: 6042	packet len: 16000

tcp port:6030 test ok.		udp port:6030 test ok.
tcp port:6031 test ok.		udp port:6031 test ok.
tcp port:6032 test ok.		udp port:6032 test ok.
tcp port:6033 test ok.		udp port:6033 test ok.
tcp port:6034 test ok.		udp port:6034 test ok.
tcp port:6035 test ok.		udp port:6035 test ok.
tcp port:6036 test ok.		udp port:6036 test ok.
tcp port:6037 test ok.		udp port:6037 test ok.
tcp port:6038 test ok.		udp port:6038 test ok.
tcp port:6039 test ok.		udp port:6039 test ok.
tcp port:6040 test ok.		udp port:6040 test ok.
tcp port:6041 test ok.		udp port:6041 test ok.
tcp port:6042 test ok.		udp port:6042 test ok.

如果某个端口不通,会输出 port:xxxx test fail的信息。如:

ubuntu@u60 ~/taos/test$ ./taos -n client -h ubuntu-7060 -P 6030 -e 6042 -l 16000
host: ubuntu-7060	start port: 6030	end port: 6042	packet len: 16000

tcp port:6030 test ok.		udp port:6030 test ok.

connect() fail: Connection refused	tcp port:6031 test fail.
Read ack pkg len: -1, less than req pkg len: 16000 from udp port: 6031    udp port:6031 test fail.

tcp port:6032 test ok.		udp port:6032 test ok.
tcp port:6033 test ok.		udp port:6033 test ok.
tcp port:6034 test ok.		udp port:6034 test ok.
tcp port:6035 test ok.		udp port:6035 test ok.
tcp port:6036 test ok.		udp port:6036 test ok.
tcp port:6037 test ok.		udp port:6037 test ok.
tcp port:6038 test ok.		udp port:6038 test ok.
tcp port:6039 test ok.		udp port:6039 test ok.
tcp port:6040 test ok.		udp port:6040 test ok.
tcp port:6041 test ok.		udp port:6041 test ok.
tcp port:6042 test ok.		udp port:6042 test ok.

二、环境中有运行的taosd服务

此时只需要在客户端环境运行 taos客户端测试功能, 通过参数 -n rpc:表示向正在运行的taosd服务发起检测。其他参数与上面完全相同。客户端运行的输出样例:

plum@plum-VirtualBox ~/git/v20 $ taos -n clients
host: 127.0.0.1	start port: 6030	end port: 6042	packet len: 1000

TCP port:6030 test OK		UDP port:6030 test OK

TCP port:6031 test fail.		udp port:6031 test fail.

TCP port:6032 test fail.		udp port:6032 test fail.

TCP port:6033 test fail.		udp port:6033 test fail.

TCP port:6034 test fail.		udp port:6034 test fail.

TCP port:6035 test OK		UDP port:6035 test OK

TCP port:6036 test fail.		udp port:6036 test fail.

TCP port:6037 test fail.		udp port:6037 test fail.

TCP port:6038 test fail.		udp port:6038 test fail.

TCP port:6039 test fail.		udp port:6039 test fail.

TCP port:6040 test fail.		udp port:6040 test fail.

TCP port:6041 test fail.		udp port:6041 test fail.

TCP port:6042 test fail.		udp port:6042 test fail.

表示此时taosd只监听了6030/6035端口,其他端口暂时没有启用。

6041是HTTP模块使用的端口、6042是arbitrator使用的端口,此方法无法检测这两个端口。只能使用第一种方法进行检测。