docker部署TDengine taosDb实践和踩坑记录-win11版本
docer容器部署DTengine。taos shell访问TDengine Sever如果报错:Failed to check Server Edition, Reason:0x8000000b:Unable to establish connection请换个方式连接。总有一款适合你!
一、daocker部署TDengine
1)配置文件方式启动
docker部署方法我采用的是docker-compose.yml文件的方式,参考了,官方给出的docker集群部署:(https://docs.taosdata.com/deployment/docker/)
我是单节点部署,配置如下:
taosdb:
container_name: dta-taos-dev
image: tdengine/tdengine:3.0.1.4
environment:
TAOS_FQDN: "td-1"
TAOS_FIRST_EP: "td-1"
volumes:
- ./taos/dnode/data:/var/lib/taos
- ./taos/dnode/log:/var/log/taos
ports:
- "6030:6030"
- "6041:6041"
restart: always
environment:推荐配置。这样可以直接达到修改docker.cfg文件中的参数:
fqdn、firstEp的目的。
实际上这是官方给出的docker容器启动环境配置参数。
如果没有配置,容器启动后,默认的fqdn是hostname(多实例部署时,就得手动修改了。怎么修改docker容器中的文件,对我来说,至今是个谜,docker容器中vi 文件,无法执行。o(╥﹏╥)o 会的大神请指点指点小弟我。)
启动指令:docker-compose up -d
2)踩坑之——各种检查
1、容器是否启动成功
常见错误:因为启动文件暴露了文件映射,在本地会有上一次容器运行的文件dnode.json里面有容器id。那么再次 up -d时会新生成容器,但是文件映射目录是一样的,DTengine会无法正常启动。
2、此时本地dnode.json会记录fqdn
fqdn和我们指定的一致。配置生效!
再查看docker容器中的hosts和hostname:
发现了吗?
hostname是容器id前缀,而不是td-1!
但是hosts里面已经配置了td-1和127.0.01的映射!并且将hostname和容器ip做了映射。
再查看配置文件taos.cfg,发现配置文件里面fqdn 还是默认配置。
二、在容器中连接DTengine
因为满足了DTengine说的条件,必须配置FQDN,虽然hostname不是td-1,我们试试能不能访问:
容器中可以完美访问。
那我们直接运行taos,省略了什么?对,省略了hostnmae。我们试试用ip和td-1访问:
td-1可以访问:
127.0.0.1也可以访问:
甚至,直接用容器ip也可以访问。
其实,这都说得过去。毕竟是在容器内部,毕竟已经配置了hosts。
三、容器外访问TDengine
容器中访问看起来很顺利,那容器外访问怎么样呢?
打开我本地已经安装的TDengine客户端 Taso shell (版本是3.0.7.1),而容器中的TDengine是3.0.1.4(小于我的客户端版本)。
发现,居然访问不了。直接报错,连接不上服务器!!!
那我,改成3.0.1.4客户端试试:
建立连接失败,(虽然看起来进入到 taos>指令了,这应该是个bug,高版本已经改了。)
思考:那我们直接输入toas,是忽略了什么?
对,我们忽略了ip。第二节,我们在容器内就用不同的ip都访问过,都能连接成功,那我们改用那些ip和fqdn连接试试:
发现了吗?127.0.0.1 居然可以访问到,[我觉得:大概率是因为容器内部hosts中已经配置了127.0.0.1 和 td-1的映射 (不一定对哦)]。
而省略 -h是访问不到的(这是一个谜,谁能告诉我。我也不理解!)。
而容器外主机上,我们并没有配置 FQDN啊,所以访问不到容器中的TDengine服务端。
配置C:\Windows\System32\drivers\etc 目录下的hosts文件
127.0.0.1 td-1
再用taos连接,还是不成功。见鬼,我也不知道怎么就不行!!!
改用 taos -h td-1,就可以:
完美,可以像在容器中那样,访问到服务端了。
四、总结
1、Taos shell连接TDengine有三种方式:
1)taos
2) taos -h ip - port
3)taos -h fqdn
如果报错:Failed to check Server Edition, Reason:0x8000000b:Unable to establish connection
请换个方式连接。总有一款适合你!
2、宿主机访问:
如果是容器部署的话,想再宿主机上访问容器内部TDengine服务,可以直接用 taos -h 127.0.0.1访问,也可以在宿主机上也配置容器中指定FQDN。
下一步,Linux部署,敬请期待!
更多推荐
所有评论(0)