trojan-go icon indicating copy to clipboard operation
trojan-go copied to clipboard

[feature]希望支持多个remote地址

Open digits122 opened this issue 3 years ago • 2 comments

当前使用情况下,只能一个remote_addr,例子 { "run_type": "client", "local_addr": "127.0.0.1", "local_port": 1080, "remote_addr": "cdn01.example.com", "remote_port": 443, …… } 在套用cdn的典型应用情况下,希望可以有多个remote_addr,例如将配置改成为 { "run_type": "client", "local_addr": "127.0.0.1", "local_port": 1080, "remote_addr": [ "cdn01.example.com", "cdn02.example.com", …… "cdn99.example.com" ], "remote_port": 443, …… } 如果使用的是cdn,remote_port一般都是不变的443,如果使用的是多路服务器,自定义情况下,remote_port可能各种各样,配置文件该怎么定可以有选择。

客户端选择连接到哪个服务器又有不同的切换方案,可以多种多样,比如 1.轮询式,在第一个地址失效/过慢情况下,自动切换到第二个地址,第二个地址失效/过慢情况下,自动切换到第三个,如此类推。如果客户端较多,分布又分散,轮询可能造成前面服务器连接数太多,后面服务器又无客户端连接。 2.定时检测,客户端定时对每个cdn通道/服务器进行速度测试,连接速度最快的那一个。 3.多点连接,客户端可以一次连接5个cdn通道/服务器,对每个不同的请求,连接到不同的cdn通道/服务器,负载相对均衡。 4.查询式,客户端分别连接每个服务器,并向服务器查询它的负载强度,服务器返回负载强度,客户端选择负载强度稍低,速度又比较快的服务器进行连接。查询式对cdn形式的服务器没有太多作用,因为后台会都是同一个服务器,会返回同样的结果。而如果式真的架设了多个服务器,就有用。 5.钝化检测,如果使用某一个cdn通道/服务器,在比较长的时间连接速度、有效性都还可以,就没必要总是换。而且下一次启动时,首选直接连接这个cdn通道/服务器。

在切换方案上,可以是软件自行选择如何去切换,或者在配置文件种规定切换方式。如果没想法搞这么复杂,实现轮询就已经可以用了,太复杂可以放着。

digits122 avatar Mar 03 '21 08:03 digits122

回落到 nginx 再用 split_clients 去轉發不是很簡單嗎 你的需求應該是 web 服務器 / Load Balancer 的工作,Trojan-Go 不是幹這個的

phlinhng avatar Mar 03 '21 08:03 phlinhng

回落到 nginx 再用 split_clients 去轉發不是很簡單嗎 你的需求應該是 web 服務器 / Load Balancer 的工作,Trojan-Go 不是幹這個的

是客户端的均衡需求,不是服务器的,和服务器端没有关系。实际上只有一个服务器,但是有多个cdn通道,走不同的cdn通道连接速度,连接可靠性都会不一样,客户端应该有方式自行选择去走哪一个通道,目前是手工修改配置文件自行指定一个cdn通道,如果可以客户端自动去确定走哪一个,就会更方便。

digits122 avatar Mar 04 '21 11:03 digits122