qunarcorp / bistoury

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

UI/Proxy增加一个参数,作为客户端浏览器连接proxy的地址 #93

Open lff0305 opened 4 years ago

lff0305 commented 4 years ago

环境:quick start脚本,在k8s中启动。 启动后,在跳板机上通过kubectl port-forward 9091 ..... 把跳板机的ip:9091和POD中 的ui:9091映射上。 使用浏览器访问跳板机ip:9091来访问UI 浏览器访问UI后,发现ws错误,原因是浏览器要通过ws连接k8s内部的ip

websocket.js?version=2.0.3:83 WebSocket connection to 'ws://172.23.1.213:9881/ws' failed: Error in connection establishment: net::ERR_ADDRESS_INVALID
doGetWs @ websocket.js?version=2.0.3:83
success @ websocket.js?version=2.0.3:60
u @ jquery-3.3.1.min.js?version=2.0.3:2
fireWith @ jquery-3.3.1.min.js?version=2.0.3:2
k @ jquery-3.3.1.min.js?version=2.0.3:2
(anonymous) @ jquery-3.3.1.min.js?version=2.0.3:2
websocket.js?version=2.0.3:110 ws error

建议: 添加一个启动参数,把proxy绑定的ip和外部访问它的ip分别设置,比如

./quick_start.sh -p 13 -i 172.23.1.213 -out_ip 192.168.100 start

这样,浏览器将会通过192.168.100:9881来访问proxy. 这个地址实际上是跳板机上。 在跳板机可以通过kubectl 做port-forwarding最终把请求转换到POD内部的9881端口上。

目前是这个思路。或者我有时间改一下,提个PR

lff0305 commented 4 years ago

改了下, 加了个-L publicIp 参数, 放在这里, 我自己正在测试 https://github.com/lff0305/bistoury/tree/addPublicIp 在k8s环境下测试暂时没发现问题。 用法: 登录跳板机,在待测试的POD内部运行 ./quick_start.sh -p 13 -i 0.0.0.0 -L 192.168.254.129 start /// 192.168.254.129 是跳板机ip, UI返回浏览器通过这个地址连接WS 在跳板机上,使用kubectl创建端口映射 kubectl port-forward --address 0.0.0.0 -n 9091:9091 9881:9881 在调试机上, 访问跳板机ip:9091 ( 192.168.254.129:9091 ) 来访问UI

各功能正常。