Q:自定义负载均衡的使用场景。

A:使用场景包括:

  • 7 层协议负载均衡,自定义各服务的路由,在将传统架构迁移到容器架构过程中非容器集群的服务访问容器集群中容器的服务。
  • 4 层协议的负载均衡,自定义各服务的路由,在将传统架构迁移到容器架构过程中非容器集群的服务访问容器集群中容器的服务。
  • 在容器服务中使用内网负载均衡进行通信。

Q:如何使用自定义负载均衡?

A:参见示例 通过自定义负载均衡方式暴露服务

Q:如何使用自定义负载均衡的标签?

A:参见服务编排文档 标签概览 中的 lb

Q:如何配置 ECS 支持负载均衡?

A:对于添加到负载均衡实例后端的 ECS,原则上不需要进行特别的配置。如果针对关联到负载均衡 4 层(TCP 协议)服务的 Linux 系统的 ECS,如果发现无法正常访问,需要确保系统配置文件 /etc/sysctl.conf 的以下三项为 0:

net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.eth0.rp_filter = 0

如果部署在同一内网网段下的 ECS 之间有通信需求,且发现有无法通信的情况存在,那么需要检查如下参数的配置是否正确:

net.ipv4.conf.default.arp_announce =2
net.ipv4.conf.all.arp_announce =2

并使用 sysctl -p 更新配置。

Q:自定义负载均衡的价值是什么?

A:价值就是用户在更新服务的配置、容器停止或者部署失败时,能自动将不在运行状态的后端容器路由摘除,用户需要自己维护负载均衡的其他配置。

Q:自定义负载均衡的限制是什么?

A:目前自定义负载均衡有如下几个限制:

  • 用户需要自己创建负载均衡实例,对负载均衡实例命名,并创建对应的监听端口,然后以扩展标签的方式提供负载均衡实例的名称 $slb_name 或者 $slb_id,以及要暴露的端口,使用的协议 $scheme(可能的值包括 tcp、http、https、udp),映射的容器端口 $container_port,指定负载均衡实例的前端端口 $front_port
  • 用户必须指定服务要暴露端口的主机和容器端口的映射,通过 Dockerfile 标准的标签 ports 指定,注意必须指定主机端口,且与其他服务映射的主机端口不能冲突,需要主机的端口用于负载均衡绑定后端的 ECS vm 机器。
  • 一个服务只能使用一个或者多个负载均衡实例进行服务端口的暴露,因多个服务会分布在不同的 vm 后端,多个服务不能共享使用同一个负载均衡实例。
  • 部署了带有负载均衡 nat 映射的服务的主机使用相同的主机:容器端口映射,因此这些服务在每台 vm 主机上只有一个实例。
  • 支持的负载均衡协议 $scheme 包括 tcp、http、https、udp协议。
  • 用户需要自行在阿里云负载均衡官方控制台创建监听的端口。
  • 请自行登录负载均衡官方控制台对使用在容器服务中的负载均衡实例进行具体的配置修改,例如带宽限制等配置。
  • lb 标签的价值在于用户不需要自行绑定负载均衡后端的 ECS vm 服务器,只需要配置好相应的标签, 就会帮助用户完成绑定后端的操作。因此,除了绑定负载均衡后端的操作,用户对负载均衡的设置和修改,需要自行在阿里云负载均衡控制台上面完成。
  • 容器服务会帮助用户生成一个 RAM 子账户(需要用户开通 RAM),使用这个具有部分负载均衡权限(没有创建和删除负载均衡的权限)的账号帮助用户管理在容器服务中使用的负载均衡,例如绑定集群中某些节点作为服务的后端。