如何设置负载均衡

    安装完成后,可以看到集群中增加了下面两个 NS,这两个 NS 中分别安装了基于 MetaProtocol 实现的 Dubbo 和 Thrift 协议的示例程序。 你可以选用任何一个程序进行测试。

    Aeraki Mesh 缺省采用 Round Robin 负载均衡算法,在没有进行 LB 配置的情况下,客户端的请求会被 sidecar proxy 依次发送到 upstream cluster 中的每一个 endpoint 上。meta-dubbo ns 中的 dubbo 服务中有两个 pod,查看 meta-dubbo ns 中示例程序的输入,我们可以看到客户端请求被依次发送到这两个 pod 上:

    1. Hello Aeraki, response from dubbo-sample-provider-v2-5576f45c6c-897g5/172.16.0.8
    2. Hello Aeraki, response from dubbo-sample-provider-v1-98c5b9fd6-gslv6/172.16.0.69
    3. Hello Aeraki, response from dubbo-sample-provider-v2-5576f45c6c-897g5/172.16.0.8
    4. Hello Aeraki, response from dubbo-sample-provider-v1-98c5b9fd6-gslv6/172.16.0.69

    此时查看客户端的输出,可以看到客户端的请求被固定发送到同一个服务端。

    1. Hello Aeraki, response from dubbo-sample-provider-v2-5576f45c6c-897g5/172.16.0.8
    2. Hello Aeraki, response from dubbo-sample-provider-v2-5576f45c6c-897g5/172.16.0.8
    3. Hello Aeraki, response from dubbo-sample-provider-v2-5576f45c6c-897g5/172.16.0.8
    4. Hello Aeraki, response from dubbo-sample-provider-v2-5576f45c6c-897g5/172.16.0.8

    可以通过下面的命令查看 dubbo 服务 的 cluster 和路由配置:

    从 cluster 的配置中可以看到该 cluster 指定采用 RING_HAS 负载均衡策略。

    1. {
    2. "version_info": "2022-03-29T04:56:04Z/12",
    3. "cluster": {
    4. "@type": "type.googleapis.com/envoy.config.cluster.v3.Cluster",
    5. "name": "outbound|20880||org.apache.dubbo.samples.basic.api.demoservice",
    6. "eds_cluster_config": {
    7. "eds_config": {
    8. "initial_fetch_timeout": "0s",
    9. "resource_api_version": "V3"
    10. },
    11. "service_name": "outbound|20880||org.apache.dubbo.samples.basic.api.demoservice"
    12. },
    13. "connect_timeout": "10s",
    14. ......

    最后修改 March 29, 2022: tutorial: lb policy (318ce95)