4
大佬们 有没有tunnel server集群部署的demo,官网写的太简单了,不明白如何操作实施
大佬们 有没有tunnel server集群部署的demo,官网写的太简单了,不明白如何操作实施
参考这个配置,需要nginx lua功能。
原理是 tunnel server上有个api,可以查询agentId所在的 tunnel server地址,nginx再把请求转发到对应的 tunnel server。
# arthas tunnel server pages
rewrite ^/arthas-tunnel$ /arthas-tunnel/ permanent;
location ^~/arthas-tunnel/ {
proxy_set_header Host $host;
rewrite ^/arthas-tunnel/(.*)$ /$1 break;
proxy_pass http://arthas_tunnel;
}
# arthas tunnel server port
location /tunnelws {
set $target '127.0.0.1';
access_by_lua_block {
-- try to find target server from API
if ngx.var.arg_id then
local findHostUrl = "/arthas-tunnel/api/cluster/findHost?agentId=" .. ngx.var.arg_id
local res = ngx.location.capture(findHostUrl)
if res.status == 200 and res.body and res.body ~= "" then
ngx.var.target = res.body
end
end
}
# -- try to set target server from url
# if ngx.var.target == "127.0.0.1" and ngx.var.arg_targetServer then
# ngx.var.target = ngx.var.arg_targetServer
# end
proxy_pass "http://$target:7777";
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-Port $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
}
欢迎社区提供一个demo,可以考虑用docker compose。
“原理是 tunnel server上有个api,可以查询agentId所在的 tunnel server地址,nginx再把请求转发到对应的 tunnel server”
@hengyunabc 大佬,请教下 如果让agent与所有的tunel-server 建立上WS 连接,是不是前端随便连到哪个Tunel Server 就可以了呢?
tunnel server隐藏在nginx后面,agent不可能连接到所有的tunnel server。
看之前 bistory 的做法是,proxy(tunnel serve)提供一个域名,agent与proxy连接之前,先通过域名请求获取所有的proxy节点,这时候就可以拿到所有节点了