qunarcorp / bistoury

Bistoury是去哪儿网的java应用生产问题诊断工具,提供了一站式的问题诊断方案
GNU General Public License v3.0
4k stars 824 forks source link

web console应该通过websocket连ui,而不是连proxy #17

Open yuyijq opened 4 years ago

yuyijq commented 4 years ago

现在的逻辑是web console去遍历proxy,然后连接,这就导致web console要直连proxy,一般生产是不让本地直连的。合理的方式应该是web console连ui,然后ui去选择应该连哪一台proxy

xkrivzooh commented 4 years ago

一般公司都会存在用户本地和prod 环境的网络隔离问题,简单说就是开发人员的电脑本地不能直接访问到线上的机器,比如不能直接从本地telnet线上机器服务。

至于你说的「合理的方式应该是web console连ui,然后ui去选择应该连哪一台proxy」:

这种问题其实根本原因是网络隔离导致的,一般的解法为:

yuyijq commented 4 years ago

@xkrivzooh websocket连proxy这里有一个逻辑的:websocket需要轮询所有proxy,然后寻找agent的连接在哪一台proxy上,所以直接暴露proxy不管是放在nginx后面,还是lvs域名都不行(除非你给每台proxy一个域名)。 合理的方式就是 websocket 通过nginx连接web ui(一个域名),由ui去选具体哪一台proxy,然后去连接。

xkrivzooh commented 4 years ago

@yuyijq 恩,赞同你说的:

合理的方式就是 websocket 通过nginx连接web ui(一个域名),由ui去选具体哪一台proxy,然后去连接。

我们当时为了快速上线,就给每一个proxy分配了一个域名,然后ui模块使用proxy ip获取对应的域名。这块确实挺恶心的。