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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 1. 前言  负载均衡 SLB各地域带宽有峰值限制,国内区域一般量为5Gbps,对于超高流量,超高并发的应用单个 SLB 没法满足需求,因而需要前置安全设施,比如 DDOS 高防,web应用防火墙的源服务器地址都支持多个 IP轮询均匀访问,指向多个 SLB,如图:  1.

1. 前言

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

 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 负载均衡的后端服务器。

相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
1月前
|
缓存 负载均衡 算法
slb支持多种负载均衡算法
slb支持多种负载均衡算法
59 6
|
11天前
|
弹性计算 负载均衡 网络协议
ECS中实现nginx4层7层负载均衡和ALB/NLB原SLB负载均衡
通过本文的介绍,希望您能深入理解并掌握如何在ECS中实现Nginx四层和七层负载均衡,以及如何使用ALB和NLB进行高效的负载均衡配置,以提高系统的性能和可靠性。
54 9
|
27天前
|
缓存 负载均衡 监控
slb基于DNS的负载均衡
slb基于DNS的负载均衡
74 8
|
1月前
|
运维 负载均衡 安全
|
22天前
|
负载均衡 Java Nacos
常见的Ribbon/Spring LoadBalancer的负载均衡策略
自SpringCloud 2020版起,Ribbon被弃用,转而使用Spring Cloud LoadBalancer。Ribbon支持轮询、随机、加权响应时间和重试等负载均衡策略;而Spring Cloud LoadBalancer则提供轮询、随机及Nacos负载均衡策略,基于Reactor实现,更高效灵活。
54 0
|
1月前
|
负载均衡 算法
SLB-Backend的负载均衡算法
【10月更文挑战第19天】
56 5
|
24天前
|
负载均衡 前端开发 应用服务中间件
负载均衡指南:Nginx与HAProxy的配置与优化
负载均衡指南:Nginx与HAProxy的配置与优化
43 3
|
6月前
|
缓存 负载均衡 算法
解读 Nginx:构建高效反向代理和负载均衡的秘密
解读 Nginx:构建高效反向代理和负载均衡的秘密
134 2
|
5月前
|
负载均衡 算法 应用服务中间件
nginx自定义负载均衡及根据cpu运行自定义负载均衡
nginx自定义负载均衡及根据cpu运行自定义负载均衡
105 1
|
5月前
|
运维 负载均衡 算法
SLB与NGINX的异同是什么
SLB与NGINX的异同是什么
553 2

相关产品

  • 容器计算服务