服务中多个SLB负载均衡并透传源 IP

网站编辑2022-05-11 14:42:51382

  1. 前言
  ?负载均衡 SLB各地域带宽有峰值限制,国内区域一般量为5Gbps,对于超高流量,超高并发的应用单个 SLB 没法满足需求,因而需要前置安全设施,比如 DDOS 高防,web应用防火墙的源服务器地址都支持多个 IP轮询均匀访问,指向多个 SLB,如图:
  ?1. 域名服务,CName 指向 DDOS 高防的 CName;
  ?2. DDOS 高防源地址配置多个 SLB IP,DDOS 高防访问时会均匀轮询访问 SLB;

  ?3. SLB 负载均衡配置后端服务器,通过后端服务器指向 K8S集群的 NodePort 服务,每个SLB 平均添加多个集群的后端服务器;


  ??1). SLB 后端服务器数量有阈值限制;
  ??2). SLB 通过健康的后端服务器转发请求到 K8S 集群。
  ?4. K8S 集群的 Service NodePort externalTrafficPolicy 配置 Local 模式,透传实际访问 IP 到K8S 应用。
  2. 透传实际 IP
  ?1. DDOS 防护 获取客户端真实 IP: 点击链接
  ?2. SLB 获取客户端真实 IP:点击链接
  ?3. K8S 集群: Service 的 NodePort 或者 SLB 将externalTrafficPolicy 设置为 Local,该方式需要按照一定规则设置后端服务器,不然可能导致负载不均衡。
  ??说明:Service.spec.externalTrafficPolicy - 如果这个服务需要将外部流量路由到 本地节点或者集群级别的端点,那么需要指明该参数。存在两种选项:”Cluster”(默认)和 “Local”。 “Cluster” 隐藏源 IP 地址,可能会导致第二跳(second hop)到其他节点,但是全局负载效果较好。”Local” 保留客户端源 IP 地址,避免 LoadBalancer 和 NodePort 类型服务的第二跳,但是可能会导致负载不平衡。
  3. 负载均衡请求
  ?透传 IP 后,需要合理设置后端服务器,并控制应用的 POD 均匀分布到后端服务器,才可以保持负载均衡,具体策略如下:
  ?假设配置接入层应用A,域名为 a.xxx.com, 高并发高流量,需要8个 SLB 负载均衡接入,SLB 负载均衡指向 K8S 集群的 NodePort Service;
  ?DDOS 高防 --> 8个 SLB-->2个 K8S 集群(共800台 worker 机器) NodePort service --> 400台 POD 接入层服务,
  ?配置流程:
  ??1. 规划2个集群各200台 Node 设置 Label 为 role.app.a: "true";
  ??2. 设置应用发布的 Deployment 的 yaml 中的Pod Affinity, 设置其调度到role.app.a: "true" 的 Node 上;
  ??3. 使用每个 pod 平均调度,将 pod 均匀部署到2个集群的400个 Node 上,方法参考:https://yq.aliyun.com/articles/715808
  ??4. 设置8个 SLB,每个 SLB 后设置400/8=50台后端服务器,2个集群的 Node 各25台;
  ??5. 设置 DDOS 高防的源站 IP 为8个 SLB 的 IP 地址;点击链接
  ??6. 设置2个 k8s 集群的该接入层应用的 Service 为 NodePort,externalTrafficPolicy 为 Local;
  spec:
  clusterIP: 127.0.0.1
  externalTrafficPolicy: Local
  ??这样完成配置和部署成功后,请求通过 DDOS 均匀分发到8个 SLB,每个 SLB 又均匀分发到后端服务器,后端服务器平均部署一个 POD,请求按照 NodePort 的设置,包括真实 IP 分发到每个 POD,实现 POD 请求数均匀。
  ??以上方案是纯人力操作,比较完美的方式是开发一个调度任务,比如 ScheduleX Job,均匀发布应用 POD 到每个 Node 上,并在每次应用重新部署或者其它导致 POD 漂移时候,重新均匀设置 SLB 负载均衡的后端服务器。

最新推荐

右侧广告图1
  • 负载均衡

    负载均衡SLB是一种对流量进行按需分发的服务,通过将流量分发到不同的后端服务来扩展应用系统的服务吞吐能力,并且可以消除系统中的单点故障,提升应用系统的可用性。

    ¥0.04/小时

    实例5折带宽8折

  • 弹性公网IP

    弹性公网IP是可以独立购买和持有的公网IP地址资源。目前,EIP仅支持绑定到专有网络类型的ECS实例、专有网络类型的私网SLB实例、专有网络类型的辅助弹性网卡、NAT网关和高可用虚拟IP上。

    ¥0.04/小时

    带宽3折起

  • CDN/全站加速

    内容分发网络 CDN 是建立并覆盖在承载网上,由不同区域的服务器组成的分布式网络。将源站资源缓存到全国各地的边缘服务器,供用户就近获取,降低源站压力。

    ¥8.40/年

    限购5个

右侧广告图2