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

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

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

  • DDOS 防护 获取客户端真实 IP: https://help.aliyun.com/knowledge_detail/40535.html?spm=5176.11065259.1996646101.searchclickresult.25cf41a8ADwJgw
  • SLB 获取客户端真实 IP:https://help.aliyun.com/document_detail/54007.html?spm=5176.11065259.1996646101.searchclickresult.22542e49qVwaU9
  • 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://www.atatech.org/articles/147431
  4. 设置8个 SLB,每个 SLB 后设置400/8=50台后端服务器,2个集群的 Node 各25台;
  5. 设置 DDOS 高防的源站 IP 为8个 SLB 的 IP 地址;
  6. 设置2个 k8s 集群的该接入层应用的 Service 为 NodePort,externalTrafficPolicy 为 Local;

这样完成配置和部署成功后,请求通过 DDOS 均匀分发到8个 SLB,每个 SLB 又均匀分发到后端服务器,后端服务器平均部署一个 POD,请求按照 NodePort 的设置,包括真实 IP 分发到每个 POD,实现 POD 请求数均匀。

以上方案是纯人力操作,比较完美的方式是开发一个调度任务,比如 ScheduleX Job,均匀发布应用 POD 到每个 Node 上,并在每次应用重新部署或者其它导致 POD 漂移时候,重新均匀设置 SLB 负载均衡的后端服务器。

 

 

 

 

 

 

相关实践学习
使用ACS算力快速搭建生成式会话应用
阿里云容器计算服务 ACS(Container Compute Service)以Kubernetes为使用界面,采用Serverless形态提供弹性的算力资源,使您轻松高效运行容器应用。本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
Web App开发 NoSQL 安全
ARM架构-银河麒麟v10-server离线安装Harbor
ARM架构-银河麒麟v10-server离线安装Harbor
3406 0
|
2月前
|
人工智能 JavaScript 测试技术
DeepSeek Harness完整实操入门指南:本地部署、运行模式、SDK开发与踩坑解析
大语言模型本身只擅长对话推理,想要真正完成读写本地文件、执行终端命令、拆解复杂多步骤任务,就需要一套Agent运行时环境。DeepSeek Harness(简称DSH)是面向开发者开源的Agent运行框架,依托Cordis插件架构实现高扩展性与可控执行能力,能够把大模型推理能力和本地执行环境打通,让AI智能体在授权范围内操作本地资源,适合搭建私有化Agent环境,也可以用来开展模型工具调用能力基准测试。该项目目前处于开发者预览阶段,整体定位偏向开发者工具,并非面向普通用户的成品聊天应用。
576 0
|
存储 开发工具 git
【软考学习16】用位示图法,轻松解决空闲存储空间的管理难题
【软考学习16】用位示图法,轻松解决空闲存储空间的管理难题
1348 0
|
7月前
|
存储 人工智能 机器人
2026年阿里云OpenClaw一键部署详细教程,快速拥有OpenClaw超级助理!
2026年,AI数字员工已成现实!阿里云OpenClaw提供一键部署方案,3步即可搭建24小时在线的专属AI助理。本文含分步实操+高频避坑指南,支持钉钉/飞书集成、技能扩展与定时任务,个人及中小企业零门槛上手。
1434 3
|
10月前
|
监控 Linux 应用服务中间件
Linux网络优化服务配置(从零开始提升服务器网络性能)
教程来源https://www.vps5.cn/本文介绍Linux网络优化的核心方法,涵盖内核参数调优、服务配置优化及效果验证。通过调整sysctl参数、优化Nginx等服务配置,结合监控工具提升服务器并发处理能力与网络性能,适用于高并发、低延迟场景,助力系统性能显著提升。
|
12月前
|
人工智能 监控 数据挖掘
智能体来了!企业降本增效新引擎,黎跃春谈AI智能体赋能管理创新
智能体正成为企业降本增效新引擎,黎跃春教授提出AI智能体不仅是工具,更是“数字化员工”。通过自动化办公、智能决策协同与多场景应用,助力企业实现管理透明化与运营效率提升。
|
Kubernetes 持续交付 数据库
阿里云ACK+GitLab企业级部署实战教程
GitLab 是一个功能强大的基于 Web 的 DevOps 生命周期平台,整合了源代码管理、持续集成/持续部署(CI/CD)、项目管理等多种工具。其一体化设计使得开发团队能够在同一平台上进行代码协作、自动化构建与部署及全面的项目监控,极大提升了开发效率和项目透明度。 GitLab 的优势在于其作为一体化平台减少了工具切换,高度可定制以满足不同项目需求,并拥有活跃的开源社区和企业级功能,如高级权限管理和专业的技术支持。借助这些优势,GitLab 成为许多开发团队首选的 DevOps 工具,实现从代码编写到生产部署的全流程自动化和优化。
|
Kubernetes Cloud Native Linux
Kubernetes 计算 CPU 使用率
Kubernetes 计算 CPU 使用率
2531 1
|
存储 缓存 监控
【jvm系列-09】垃圾回收底层原理和算法以及JProfiler的基本使用
【jvm系列-09】垃圾回收底层原理和算法以及JProfiler的基本使用
712 0
|
存储 安全 网络安全
服务器设置了端口映射之后外网还是访问不了服务器
服务器设置了端口映射之后外网还是访问不了服务器

相关产品

  • 容器计算服务
  • 容器服务Kubernetes版