实验内容:阿里云负载均衡 SLB 流量分发实验(ECS 无公网 IP)

一、实验目标

  1. 部署两台 ECS 实例(私网 IP)并运行 Web 服务。
  2. 创建公网型负载均衡 SLB,通过 SLB 的公网 IP 访问 Web 服务。
  3. 配置健康检查和轮询调度,测试负载均衡分发效果。
  4. 实验过程中 ECS 无需公网 IP,通过 SLB 访问服务即可。

二、实验拓扑

          ┌──────────────┐
          │  用户访问   │
          └──────┬──────┘
                 │
        ┌─────────────────┐
        │ 公网型 SLB       │  <- 公网 IP,用户通过互联网访问
        └───────┬─────────┘
                │
         ┌──────┴──────┐
         │             │
 ┌───────────┐   ┌───────────┐
 │  ECS1     │   │  ECS2     │
 │ (私网IP)  │   │ (私网IP)  │
 │ Web服务   │   │ Web服务   │
 └───────────┘   └───────────┘

三、Step1:创建自定义VPC与跨可用区交换机(核心基础)

SLB高可用模式要求后端ECS必须在同一VPC、不同可用区,因此VPC和交换机是整个实验的网络根基,切勿跳过。

1.1 创建专有网络VPC

  1. 登录阿里云控制台,搜索进入专有网络VPC页面

  2. 点击【创建VPC】,按以下参数配置(企业可自定义名称和网段):

    • VPC名称:VPC-Web-Prod(生产环境Web业务专用)

    • IPv4网段:192.168.0.0/16(私网标准网段,可按需调整)

    • 描述:Web服务负载均衡专用VPC

  3. 点击【确定】,完成VPC创建

1.2 创建跨可用区私网交换机

交换机必须归属上述VPC,且分属两个不同可用区,实现容灾备份。

交换机1(可用区A)

交换机2(可用区B)

技术解释:跨可用区部署是企业高可用核心,单个可用区出现机房故障、网络抖动时,另一可用区的ECS可继续提供服务,SLB会自动剔除故障节点。


四、Step2:创建安全组(最小权限原则)

安全组是阿里云的虚拟防火墙,企业场景必须遵循“最小权限开放”,禁止全端口放行。

  1. 进入阿里云【ECS控制台】-【安全组】,点击【创建安全组】

  2. 配置参数:

    • 安全组名称:SG-Web-SLB

    • 所属VPC:VPC-Web-Prod

    • 安全组规则:仅放行Web服务80端口(HTTP)

入方向规则(关键)

协议类型 端口范围 源地址 描述
TCP 80/80 0.0.0.0/0 允许公网访问Web服务
出方向规则保持默认(允许全部出站),创建后将安全组绑定后续两台ECS。

五、Step3:创建2台无公网ECS(Ubuntu/Debian)

企业场景中,后端服务ECS无需公网IP,仅通过内网与SLB通信,既安全又省钱。本次创建两台ECS,分属两个可用区。

ECS基础配置(两台一致)

ECS差异化配置

ECS-Web1

ECS-Web2

创建完成后,通过阿里云Workbench远程连接登录ECS(无需公网IP,内网直达)。


六、Step4:ECS部署Nginx+配置差异化首页

两台ECS均安装Nginx,分别配置“我是web1”“我是web2”首页,用于验证负载均衡效果。

6.1 两台ECS通用操作(安装Nginx)

# 更新软件源
sudo apt update -y

# 安装Nginx
sudo apt install nginx -y

# 启动Nginx并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx

# 放行系统防火墙80端口(Ubuntu/Debian默认UFW防火墙)
sudo ufw allow 80/tcp
sudo ufw reload

6.2 Web1 ECS配置专属首页

# 覆盖Nginx默认首页
echo "我是web1" | sudo tee /var/www/html/index.html

# 重启Nginx生效
sudo systemctl restart nginx

# 本地验证(出现“我是web1”即为成功)
curl localhost

6.3 Web2 ECS配置专属首页

# 覆盖Nginx默认首页
echo "我是web2" | sudo tee /var/www/html/index.html

# 重启Nginx生效
sudo systemctl restart nginx

# 本地验证(出现“我是web2”即为成功)
curl localhost

至此,两台后端Web服务部署完成,且仅对内网开放,等待SLB转发流量。


七、Step5:创建公网SLB+配置监听(核心负载均衡)

SLB作为公网入口,负责接收用户请求并轮询分发至两台ECS,必须绑定前文VPC且勾选双可用区。

7.1 创建公网SLB实例

  1. 进入阿里云【负载均衡SLB】控制台,点击【创建实例】

  2. 核心参数配置:

    • 实例类型:应用型负载均衡ALB(或传统型SLB,本文以SLB为例)

    • 网络类型:公网

    • 所属VPC:VPC-Web-Prod

    • 可用区:勾选可用区G、可用区H(与ECS可用区完全对应)

    • 计费方式:按流量计费(实验低成本,生产可改包年包月)

  3. 创建完成后,记录SLB的公网IP地址(后续测试用)

7.2 添加HTTP监听(80端口)

监听是SLB转发流量的规则,配置后才能实现负载均衡。

  1. 进入SLB实例详情页,点击【监听】-【添加监听】

  2. 监听配置:

    • 前端协议/端口:HTTP / 80

    • 后端协议/端口:HTTP / 80

    • 调度算法:轮询(企业默认均衡分发,可改加权轮询)

    • 健康检查:开启(默认配置,检查路径/,状态码200为正常)

    • 会话保持:关闭(实验需轮询效果,生产可按需开启)

7.3 添加后端服务器

  1. 创建后端服务器组,选择默认服务器组

  2. 点击【添加】,勾选ECS-Web1、ECS-Web2,端口设置为80,权重均设为100

  3. 确认配置,等待健康检查状态变为正常(1-2分钟生效)

避坑提示:若健康检查异常,排查ECS安全组80端口、Nginx是否启动、防火墙是否放行。


八、Step6:负载均衡效果测试

打开浏览器/终端,访问SLB公网IP:

http://SLB公网IP

连续刷新页面(Ctrl+F5强制刷新,规避浏览器缓存),会交替显示

我是web1
我是web2
我是web1
我是web2

证明负载均衡轮询调度生效,流量均匀分发至两台ECS。