如何设置负载均衡
安装完成后,可以看到集群中增加了下面两个 NS,这两个 NS 中分别安装了基于 MetaProtocol 实现的 Dubbo 和 Thrift 协议的示例程序。 你可以选用任何一个程序进行测试。
Aeraki Mesh 缺省采用 Round Robin 负载均衡算法,在没有进行 LB 配置的情况下,客户端的请求会被 sidecar proxy 依次发送到 upstream cluster 中的每一个 endpoint 上。meta-dubbo ns 中的 dubbo 服务中有两个 pod,查看 meta-dubbo ns 中示例程序的输入,我们可以看到客户端请求被依次发送到这两个 pod 上:
Hello Aeraki, response from dubbo-sample-provider-v2-5576f45c6c-897g5/172.16.0.8
Hello Aeraki, response from dubbo-sample-provider-v1-98c5b9fd6-gslv6/172.16.0.69
Hello Aeraki, response from dubbo-sample-provider-v2-5576f45c6c-897g5/172.16.0.8
Hello Aeraki, response from dubbo-sample-provider-v1-98c5b9fd6-gslv6/172.16.0.69
此时查看客户端的输出,可以看到客户端的请求被固定发送到同一个服务端。
Hello Aeraki, response from dubbo-sample-provider-v2-5576f45c6c-897g5/172.16.0.8
Hello Aeraki, response from dubbo-sample-provider-v2-5576f45c6c-897g5/172.16.0.8
Hello Aeraki, response from dubbo-sample-provider-v2-5576f45c6c-897g5/172.16.0.8
Hello Aeraki, response from dubbo-sample-provider-v2-5576f45c6c-897g5/172.16.0.8
可以通过下面的命令查看 dubbo 服务 的 cluster 和路由配置:
从 cluster 的配置中可以看到该 cluster 指定采用 RING_HAS
负载均衡策略。
{
"version_info": "2022-03-29T04:56:04Z/12",
"cluster": {
"@type": "type.googleapis.com/envoy.config.cluster.v3.Cluster",
"name": "outbound|20880||org.apache.dubbo.samples.basic.api.demoservice",
"eds_cluster_config": {
"eds_config": {
"initial_fetch_timeout": "0s",
"resource_api_version": "V3"
},
"service_name": "outbound|20880||org.apache.dubbo.samples.basic.api.demoservice"
},
"connect_timeout": "10s",
......
最后修改 March 29, 2022: tutorial: lb policy (318ce95)