如何创建多个基于leastLoad的负载均衡?leastLoad的settings该填什么? #3735
-
假设我有A、B、C、D四个节点,我希望A与B通过负载均衡测出连接性最好的节点 用于连接谷歌,C与D通过负载均衡测出连接性最好的节点 用于连接苹果。
另外问一下leastLoad模式下的"settings": {}可以有哪些设置参数?目前官网对于这一项也没有详细的解释:https://xtls.github.io/config/routing.html#strategysettingsobject
|
Beta Was this translation helpful? Give feedback.
Replies: 3 comments
-
leastLoad 的 settings 配置涉及到加权平均,方差那些数学概念。具体数值还要根据服务器实际测出来的 ping 值来定。所以没把那些配置项写到手册里面。很不负责任说,只能自己看代码。 相关配置项在: Xray-core/app/router/config.proto Lines 143 to 154 in 8674ed5 还有个相关的讨论:#2999 (comment) |
Beta Was this translation helpful? Give feedback.
-
这个有答案了嘛? |
Beta Was this translation helpful? Give feedback.
-
简单来说 leastLoad 会挑选 延迟加权(costs)均方差(Deviation) 最小的节点。比如节点A的延迟结果为 100ms 200ms 150ms,而节点B的延迟结果为 300ms 300ms 300ms,那么会挑选节点B。看起来有点反直觉,实际上B这种情况很少出现。 settings 里面的各项参数用于调整挑选规则。 costs 用于根据节点的 tag 调整均方差数值。计算公式 message StrategyWeight {
bool regexp = 1;
string match = 2;
float value =3;
} 比如有个节点很稳,但要收双倍钱,那么可以乘个 所以这个均方差是什么鬼?其实就是 BurstObservatory 测出来的 deviation。 具体数值可以启用 Metrics 功能,然后在 http://127.0.0.1:11111/debug/vars 里面看每个节点的 health_ping。 总而言之,不用设置直接留空就好。 |
Beta Was this translation helpful? Give feedback.
简单来说 leastLoad 会挑选 延迟加权(costs)均方差(Deviation) 最小的节点。比如节点A的延迟结果为 100ms 200ms 150ms,而节点B的延迟结果为 300ms 300ms 300ms,那么会挑选节点B。看起来有点反直觉,实际上B这种情况很少出现。
settings 里面的各项参数用于调整挑选规则。
tolerance 目前没用上,直接跳过。
maxRTT 是最大延迟,这个比较容易理解,不详说。
expected 是按均方差升序排序后,保留前面多少个节点,然后从这几个节点里面随机抽取一个。
baselines 是最大均方差。
costs 用于根据节点的 tag 调整均方差数值。计算公式
均方差 * √(value)
。比如有个节点很稳,但要收双倍钱,那么可以乘个
小数倍数 value,降低选中概率。还有个隐藏用法是把 value 设置为零,然后在节点 tag 中添加数字系数。所以这个均方差是什么鬼?其实就是 BurstObservatory 测出来的 deviation。 具体数值可以启用 Metrics 功能,然后在 http://127.0.0.1:11111/debug/vars 里面看每个节点的 health_ping。
总而言之,不用设置直接留空就好。