管理LB

集群架构实例默认只有1LB(负载均衡),当集群分片数量大于8,且总带宽需求超过单个LB20Gbps(2.5GB/s)上限时,可通过新增LB(最多新增至5个)扩展总带宽。

适用范围

实例需满足以下条件才可使用管理LB功能。

  • 部署模型:云原生

  • 实例架构:集群架构代理模式已开启读写分离

  • 分片数量:大于8

LB数量说明

不同分片数的集群实例对应支持的最大LB数量如下:

分片范围

最大LB数量

≤8分片

1

9-16分片

2

17-32分片

3

33-64分片

4

>64分片

5

说明

每个LB支持的带宽上限为20Gbps(2.5GB/s)。

影响

  • 新增LB不会导致现有连接中断:现有连接仍由原LB处理,新增LB会在域名解析记录中添加相关IP。需确保客户端DNS及时刷新,若DNS缓存未更新或无新连接建立,将导致流量分配不均。

  • 删除LB会导致60秒以内的服务闪断:闪断时间将取决于客户端DNS刷新机制。删除LB会移除域名解析记录中相关IP,请确保在业务中使用域名(例如r-bp10b3fa3500****.redis.rds.aliyuncs.com)连接实例和客户端DNS缓存及时刷新,且客户端程序具备断线重连机制。

  • 网络变更操作耗时根据LB数量而增减:迁移可用区、变配(加减节点)、大版本升级、修改端口、修改域名、开关TLS,HA整体耗时会随LB数量增减而增减。

新增或删除LB

说明

新增和删除LB均不收费。

  1. 访问实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在实例详情页下方的配置信息区域,单击带宽右侧的修改按钮

    image

  3. 在右侧弹出页面单击LB调整页签。

  4. 新增删除指定数量LB。

  5. 单击确定,实例状态变更为网络变更中

客户端适配说明

部分客户端由于仅解析一次DNS,且获取所有IP地址后固定选择其中一个IP建立连接,可能导致开启多LB之后,部分LB未收到请求。建议参考以下方案优化适配。

  • Jedis:使用Jedis 4.1.0及以上版本,详情请参见redis/jedis#2722

  • Lettuce 连接池模式:使用 DirContextDnsResolver 实现连接分散。

    ClientResources clientResources = DefaultClientResources.builder().dnsResolver(new DirContextDnsResolver()).build();
    RedisClient redisClient = RedisClient.create(clientResources, redisURI);
  • go-redis:自定义随机的 DNS 解析方式实现连接分散。

常见问题

Q:如何判断是否需要配置多LB?

A:根据业务带宽需求和分片数选择。若实例是云原生代理模式,总带宽需求大于20Gbps(2.5GB/s)且分片数大于8,可通过增加LB扩展带宽。

Q:专有网络和公网是否都能增加LB?

A:仅支持对专有网络进行增减LB操作,专有网络和公网的LB相互独立。

相关文档