devops-exercises 实战指南:在 AWS 控制台创建 Network Load Balancer(NLB)并配置 TCP 健康检查
发布时间:2026/9/30 11:15:49来源:尧图网络
文档教程DevOps运维【免费下载链接】devops-exercisesLinux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP, DNS, Elastic, Network, Virtualization. DevOps Interview Questions项目地址https://gitcode.com/GitHub_Trending/de/devops-exercises点击查看免费下载本文基于 devops-exercises 仓库中的 AWS ELB 系列练习完整讲解在 AWS 管理控制台从零创建一个 Network Load BalancerNLB的实操流程包括前置的 EC2 实例准备、负载均衡器与目标组的创建步骤、健康检查参数healthy threshold、unhealthy threshold、interval的配置含义以及 NLB 在四层网络中的适用场景与常见故障排查方法。读完本文你将具备独立完成N 台 EC2 实例 一台 NLB标准四层负载均衡架构的能力并能对照仓库中的 exercise 原文 与 solution 原文 验证每一步操作。练习背景与仓库定位该练习收录于仓库 topics/aws/README.md 的ELB章节与 Application Load BalancerALB、Multiple Target Groups 共同构成完整的负载均衡练习矩阵NameTopicExerciseSolutionApplication Load BalancerELB, ALBexercisesolutionMultiple Target GroupsELB, ALBexercisesolutionNetwork Load BalancerELB, NLBexercisesolution该练习的定位是用最少的资源两台 EC2 一台 NLB理解 AWS 网络负载均衡器最核心的监听器—目标组—健康检查三角关系。仓库 AWS 章节导读 同时提示部分练习会产生真实账单费用无法在免费额度内完成且提供的解法基于 AWS 控制台官方推荐使用 Terraform、Pulumi 等 IaC 技术来完成练习——这一点可以在掌握控制台流程后再进阶实践。前置要求准备两台正在运行的 EC2 实例原练习明确要求RequirementsTwo running EC2 instances即练习开始前你需要在目标区域Region内保证有两台处于running状态的 EC2 实例。仓库提供了配套的实例准备练习可依次完成启动 Web 实例参考 Launch EC2 Web Instance 练习使用 Amazon Linux 2 镜像安装并启动 httpd确保index.html可访问、HTTP80 端口入站流量放行——这是 NLB 健康检查能够通过的前提。确认安全组规则参考 Security Groups 练习验证实例的安全组确实允许 80 端口入站。若移除了 HTTP 规则实例会从健康变为不健康这正是后续排查章节的核心知识点。两台实例建议分布在不同的可用区AZ这样后续在配置 NLB 时能够更真实地体会跨可用区高可用的设计意图。练习目标创建一个网络负载均衡器原练习的目标如下这是整篇文章的核心验收标准请逐项核对ObjectivesCreate a network load balancerhealthy threshold: 3unhealthy threshold: 3interval: 10 secondsListener should be using TCP protocol on port 80归纳为两点要求监听器Listener使用TCP 协议、端口 80目标组健康检查健康阈值healthy threshold为 3、不健康阈值unhealthy threshold为 3、检查间隔interval为 10 秒。这四个参数的语义需要先建立清晰认知才能明白为什么练习这样设置详见健康检查参数详解一节。为什么选 NLB四层负载均衡的核心定位在动手创建前先明确 NLB 在整个 AWS 负载均衡家族中的位置。根据 topics/aws/README.md 中 ELB 章节的问答AWS 共有四种负载均衡器分工明确Classic Load BalancerCLB主要处理 TCP四层与 HTTP/HTTPS七层流量成本较低适合测试/开发环境Application Load BalancerALB主要处理 HTTP、HTTPS 与 WebSocket七层支持基于路径、查询字符串、请求头的路由Network Load BalancerNLB主要处理TCP、TLS 与 UDP四层面向超高性能与静态 IP 场景Gateway Load BalancerGWLB主要处理三层 IP 协议流量常用于透明网络网关、防火墙、入侵检测等场景。NLB 与其他类型相比的关键特性均有仓库问答依据工作在第四层README 问答直接转发 TCP/UDP 流量不做 HTTP 层内容解析因而转发效率更高延迟更低README 明确指出 NLB 延迟约 100ms而 ALB 约 400ms适合对延迟敏感的场景每个可用区一个静态 IPNLB 在每个启用enable的可用区内分配一个弹性 IP/静态 IP便于将 IP 加入白名单或与 DNS 结合使用支持的三种目标组类型EC2 实例、IP 地址含应用内部 IP、以及 ALB——NLB 作为固定入口、ALB 作为七层路由器是常见组合跨可用区负载均衡默认关闭README 指出 NLB 的 cross-zone load balancing 默认 disabled且跨 AZ 数据会收费需要时需手动开启这与 ALB始终开启、不可关闭不同不支持粘性会话README 问答明确sticky session 仅 CLB 与 ALB 支持NLB 不支持。由此可以推断本练习Listener 使用 TCP 协议 80 端口的设计意图NLB 的典型用武之地正是 TCP/UDP 流量转发练习用最简单的 HTTP over TCP 让大家聚焦于四层负载均衡的核心机制而不引入七层路由等干扰因素。控制台创建步骤详解继承原 Solution以下步骤完整继承仓库 solution.md 的控制台流程并补充每一步的关键含义与注意事项。第 1 步进入 EC2 服务的负载均衡器页面登录 AWS 管理控制台进入EC2服务在左侧菜单Load balancing分组下点击Load balancers点击Create load balancer创建负载均衡器。第 2 步选择 Network Load Balancer 类型在负载均衡器类型选择页中选择Network Load Balancer。此时页面会呈现四类可选类型CLB/ALB/NLB/GWLB注意不要误选 Application Load Balancer——两者配置界面与适用场景不同。第 3 步填写基本配置Load balancer name为 NLB 命名命名应能体现用途例如devops-exercises-nlbScheme默认为 internet-facing面向公网如需纯内网可改为 internalListeners确认监听器为TCP : 80对应练习Listener 应使用 TCP 协议、端口 80的目标Availability Zones勾选你希望 NLB 工作的可用区对应原 Solution 第 6 步Choose AZs where you want the LB to operate。建议至少选择两个 AZ并尽量与目标 EC2 实例所在 AZ 重合——NLB 会为每个启用的 AZ 分配一个弹性 IP/静态 IP。第 4 步配置安全组为 NLB 选择一个安全组原 Solution 第 7 步。这里需要特别注意NLB 的安全组与实例安全组是两套规则如果未为 NLB 单独创建安全组则实际生效的仍是挂载在 EC2 实例上的安全组——这是后续NLB 不工作的最常见根源之一详见常见故障排查一节。第 5 步在 Listeners and routing 中创建目标组在Listeners and routing区域点击Create target group选择Instances作为目标类型然后依次完成Target group name为目标组命名如devops-exercises-tgProtocol Port协议设为TCP、端口设为80——这与健康检查与业务转发均使用 80 端口保持一致Healthy threshold3——连续 3 次健康检查成功实例才被标记为健康Unhealthy threshold3——连续 3 次健康检查失败实例才被标记为不健康Interval10 seconds——每 10 秒对每个目标执行一次健康检查点击Next在目标实例列表中勾选你已有的两台 EC2 实例点击Create target group完成目标组创建。第 6 步关联目标组并完成创建返回负载均衡器创建页刷新Refresh目标组列表选择刚刚创建的目标组点击Create load balancer提交等待 NLB 状态变为activeprovisioned。原 Solution 明确要求wait for it to be provisioned——NLB 从创建到可提供服务通常需要数分钟期间状态为 provisioning。至此练习目标全部达成一台使用 TCP/80 监听器的 NLB连接着一个健康检查参数为 3/3/10 的目标组组内注册了两台 EC2 实例。健康检查参数详解3 / 3 / 10 的含义与影响健康检查health check是 ELB 判断后端实例是否可用的核心机制。根据 README 问答ELB 使用健康检查确认 EC2 实例是否正常工作当健康检查失败时ELB 便不再向该实例转发流量。健康检查针对端口 路径/协议进行例如 README 举的例子是端口 2017、端点/health。本练习设置的三项参数语义如下参数本练习取值含义设置动机结合源码/文档推断healthy threshold3连续成功 3 次健康检查才将实例标记为健康并开始转发流量避免单次探测抖动导致实例过早进入服务unhealthy threshold3连续失败 3 次健康检查才将实例标记为不健康并停止转发容忍偶发丢包/重启避免频繁摘除实例interval10 秒每 10 秒对每个注册目标执行一次健康检查更频繁的检查能更快感知故障但对实例产生更多探测请求从仓库问答中可以印证健康检查的价值场景在 Scenarios 问答 中当负载均衡器后 5 台 Web 服务器中偶尔有实例崩溃时推荐的解法正是使用负载均衡器的健康检查确保实例就绪后才向其转发流量。这说明 3/3/10 这类参数组合服务于一个目标在故障发现速度与误判容忍度之间取得平衡。验证负载均衡是否生效创建完成后可以通过以下方式验证 NLB 工作正常在Target groups页面查看目标组内两台实例的健康状态应全部为healthy通过 NLB 的 DNS 名称以及每个启用 AZ 的静态 IP访问应用curl http://NLB-DNS-NAME在实例上观察访问日志或负载例如多次请求观察两台实例是否轮流收到流量确认流量被分发到两台实例若实例上的应用响应内容不同如显示各自 hostname可以直观看到请求在实例间的轮转——这与 ALB 练习 中verify load balancer is working ( you get reply from both instances at different times)的验证思路一致。需要说明的是NLB 默认关闭跨可用区负载均衡README 明确此点因此当两台实例分布在不同 AZ 时流量先按 AZ 分配、再在 AZ 内部实例间分发若希望流量在所有实例间均匀分配需要手动启用 cross-zone load balancing注意 NLB 跨 AZ 数据会收取相应费用。常见故障排查NLB 创建了却不工作怎么办仓库在 Troubleshooting 问答 中专门收录了与本练习强相关的故障场景Youve created a network load balancer but it doesnt work (you cant reach your app on your EC2 instance). What might be a possible reason?官方解法直指两个高频根因缺少安全组或安全组配置错误若你未为 NLB 创建专属安全组则实际生效的是 EC2 实例上挂载的安全组。此时控制台中会看到 NLB 下的实例处于unhealthy 状态实例安全组未放行 NLB 要转发的流量需要到实例所在安全组中放行 NLB 对应的转发流量本练习即TCP 80端口入站。排查路径总结看目标组健康状态 → 若unhealthy优先检查实例安全组是否放行了 80 端口对照 Security Groups 练习 亲手验证移除 HTTP 入站规则后实例变为不可达加回规则后恢复——这正是理解NLP 转发依赖实例安全组放行的最佳实验若实例本身应用未启动如 httpd 未运行健康检查同样会失败可结合 launch_ec2_web_instance 练习 的用户数据user data脚本确保应用随实例自启动。延伸从控制台走向 IaC 与更高阶实践仓库 AWS 章节导读 明确建议官方提供的解法基于 AWS 控制台但推荐使用 IaC 技术如 Terraform、Pulumi完成练习。仓库中已给出可参照的 IaC 示例new_vpc 练习 附带 Terraform main.tf 与 Pulumimain.pysubnets 练习 附带 Terraform main.tf 与 Pulumimain.pyS3 new_bucket 练习 同样提供 Terraform 与 Pulumi 双版本。从仓库结构可以推断NLB 的 Terraform 声明思路与这些示例同构用aws_lb类型为 networkaws_lb_target_grouphealth_check 中配置 healthy_threshold、unhealthy_threshold、intervalaws_lb_listenerTCP:80三个资源组合即可复现本练习的全部配置。掌握控制台流程后将其翻译为 IaC 声明是练习本系列的最佳进阶路径。更高阶的关联练习还包括Auto Scaling Groups Basics让目标组背后的实例数量随负载自动伸缩Health ChecksRoute 53理解健康检查在 DNS 层面的另一种形态ALB Multiple Target Groups七层负载均衡下多目标组的路由实践。小结本练习用两台 EC2 实例 一台 NLB的最小组合完整覆盖了 AWS 四层负载均衡的核心链路监听器TCP:80→ 目标组Instances 类型→ 健康检查healthy/unhealthy threshold 3interval 10s→ 流量转发。配合仓库中 exercise / solution 原文与 ELB 问答章节 的知识点你可以继续追问为什么 NLB 延迟更低为什么 NLB 不支持粘性会话跨可用区负载均衡何时开启等面试高频问题把一次实操练习沉淀为完整的 NLB 知识体系。赞分享文档教程DevOps运维【免费下载链接】devops-exercisesLinux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP, DNS, Elastic, Network, Virtualization. DevOps Interview Questions项目地址https://gitcode.com/GitHub_Trending/de/devops-exercises点击查看免费下载相关推荐devops-exercises 实战指南在 AWS 控制台创建 Network Load BalancerNLB并配置 TCP 健康检查devops exercises 实战指南在 AWS 控制台创建 Network Load BalancerNLB并配置 TCP 健康检查 本指南以 de文档教程DevOps运维devops-exercises 实战使用 AWS 控制台创建 Application Load BalancerALB并配置健康检查实现多实例流量分发devops exercises 实战使用 AWS 控制台创建 Application Load BalancerALB并配置健康检查实现多实例流量分发文档教程DevOps运维devops-exercises 实战AWS Application Load BalancerALB健康检查配置与多实例流量分发devops exercises 实战AWS Application Load BalancerALB健康检查配置与多实例流量分发 本指南以 devops文档教程DevOps运维上一篇Security-101 安全运营SecOps能力解析SIEM、XDR 与增强型安全运营技术栈下一篇IntelliJ 平台 UI 驱动测试实战指南使用 IDE Starter 与 UI Driver 编写稳定可靠的 IDE 界面测试创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网