今天选的题当然不难,但是——是不是很典型?还有,我想大家也不总是有精力去读枯燥的技术文档,所以这篇文章,今天的主题是分享一个轻松的TDengine用例。 实际情况是,用户在华为云服务上搭建了一个TDengine集群,内网两节点,集群工作正常。除了该集群外,用户还拥有其他不属于同一内网且分属于两个华为云帐号的华为云服务器。该服务器正在运行TDengine 的独立版本。有一天,他突然发现本地使用jdbc-restful方式连接一个独立的TDengine是可以的,但是连接集群时却报错——超时。
事实上,无论TDengine是单机还是集群,jdbc-restful的连接方式并没有什么特别的区别,只是连接到TDengine控制的HTTP服务的6041端口。在运行此服务(独立或集群)的主机端口上提供taosd 服务。所以一个可以,一个不行的情况就很奇怪了。我们一发现我们组内部存在这样的问题,就赶到了战场,开始调查。对于云服务器上发生的外部网络连接问题,第一步是真正配置安全组的端口策略。因此,我们首先要求用户登录集群节点所在的华为云后端,并向其发送安全组配置的截图。确认安全组策略没有问题后,我开始做其他事情。
首先,我尝试将内网IP上的集群更改为外网IP。这种改变的发生是没有问题的。届时整个集群将无法运行。然后我收到熟悉的“无法建立连接”消息。此时,需要检查节点之间的端口连通性。但是Telnet外网IP并添加6041端口后,发现当我将内网IP改为Telnet并添加6041端口时,一切都不正常了。我们现在很困惑。是不是外部IP地址有问题?但我查看时发现这些IP都是弹性IP,即绑定到云服务器的IP。这种情况下,Telnet连接外网IP+6041怎么会失败呢?正当我一头雾水的时候,我突然想到,配置完后必须将安全组与服务器实例关联起来才能生效。于是我赶紧回到后台查看——。果然,这个用户已经设置了规则,但他是第一次使用云服务,所以不太熟悉。因此,这套安全组规则不会与这两个集群中的服务器关联。独立节点可以连接的原因很简单。 ——与另一个华为云帐号安全组中的策略关联。这才是造成上述怪事的真正原因。 ——,你是不是有点惊讶? 出现:云服务上的TDengine只能在单机上对外提供服务,而不能在集群上提供服务。事实:集群和单机各属于两个账户。集群的安全组已配置,但未与实例关联。正如你在下面的照片中看到的,从远处看它就像一个可怕的水怪,但它只是一只可爱的长颈鹿。 (动图)
随着TDengine生态的逐步完善,我们与关键平台和组件的交互将会越来越频繁,遇到的问题也会越来越多。事实上,很多问题都是由非常细微的操作引起的,因此在排除场景故障时必须非常小心。比如这个问题,就是一个典型的“细节决定成败”的问题。最终我们花了一个下午的时间才解决了这个问题。弄清楚所有细节需要更长且断断续续的时间。期间,帮助解决Docker集群连接问题的老大@freemine(https://mp.weixin.qq.com/s/PJ629gbF1_m3U2_S85Wbeg)又悄悄路过帮忙查明问题原因,非常热心。关于。
最终问题会得到解决,大家都会高兴。这听起来可能有些轻描淡写,但当时双方的沟通仅依靠书面文字,效率不高,而且研究需要花费大量的时间和精力。例如:“他们(集群和单机)不属于同一个内网,而是属于两个华为云账号。”这个信息是后来推导根本原因时才发现的。但无论如何,我们都会继续保护TDengine的用户。
推荐活动
本文和图片来自网络,不代表火豚游戏立场,如若侵权请联系我们删除:https://www.huotun.com/game/552741.html