快速创建HTTP虚拟服务
简介
HTTP 虚拟服务是七层负载均衡中最常用的类型。与四层 TCP 转发不同,HTTP 虚拟服务能解析请求内容(URL、Host、Header 等),实现基于内容的路由、请求改写、压缩、会话保持等高级功能。
本教程引导您从零开始创建一个完整的 HTTP 虚拟服务,将流量分发到两台后端服务器。如果您熟悉 NGINX,这相当于创建一个 server { listen 80; ... } 块及其关联的 upstream 和 location 配置。
操作步骤概览
第一步:创建转发引擎 → 确定流量由哪台机器处理
第二步:创建健康检查策略 → 定义"何谓后端健康"
第三步:创建服务器池 → 定义后端节点和负载均衡方式
第四步:创建分发策略 → 定义"匹配什么请求"(如 URL 前缀 /api/)
第五步:创建七层 HTTP 策略 → 定义"如何转发"(Header、压缩等)
第六步:创建虚拟服务 → 组合以上所有组件,定义监听地址
第七步:变更执行并验证 → 使配置生效,确认流量正常转发下面以将 10.1.9.117:9999 的 HTTP 流量分发到后端 10.1.9.114:8000 和 10.1.9.117:8000 为例,逐步操作。
第一步:创建转发引擎
转发引擎是实际执行流量转发的机器。在添加之前,需要先创建用于 SSH 登录的用户凭证。
创建用户凭证
入口:【平台系统 → 用户凭证】,点击"新增"。选择认证类型(密码或 SSH 密钥),填写转发引擎的登录信息。后续添加转发引擎时需要引用此凭证。
详细操作参见 用户凭证用户手册。
添加转发引擎
入口:【平台系统 → 基础设施 → 转发引擎】,点击"新增":

| 配置项 | 示例值 | 说明 |
|---|---|---|
| 名称 | engine117 | 便于识别的名称 |
| 通讯地址 | 10.1.9.117 | 转发引擎的 IP 地址 |
| 用户凭证 | 选择上一步创建的凭证 | SSH 登录凭据 |
| vCPU 数 | 按实际配置 | 可选,影响性能上限评估 |
添加后等待部署进度完成。如果弹出"加入集群"对话框,可先点击关闭,稍后再处理。确认设备列表中 engine117 的状态为"正常"。
如果使用双机热备或 ECMP 主主模式,需要将多台引擎组成流量组后再创建虚拟服务。参见 双机热备集群配置 或 多主集群ECMP配置。
第二步:创建健康检查策略
在创建服务器池之前,先创建健康检查策略,定义"怎样算健康"。
入口:【SLB 本地负载 → 健康检查】,点击"新增":

对于 HTTP 后端服务,推荐使用 HTTP 协议健康检查:
| 配置项 | 示例值 | 说明 |
|---|---|---|
| 策略名称 | http-health-check | |
| 协议 | HTTP | |
| 端口 | 复用监听端口 | 使用服务器池中节点的端口 |
| HTTP 方法 | GET | |
| 请求路径 | /health 或 / | 后端提供的健康检查端点 |
| 响应码 | 200 | 期望的 HTTP 状态码 |
| 高级配置(推荐) | 开启 | 下线检测快(间隔 3s,失败 2 次),上线确认慢(间隔 10s,成功 3 次) |
多种协议的详细配置和"快下线、慢上线"策略参见 健康检查配置指南。
第三步:创建服务器池
入口:【SLB 本地负载 → 服务器池】,点击"新增":

| 配置项 | 示例值 | 说明 |
|---|---|---|
| 服务器池名称 | test-controller-back-pool | |
| 负载均衡算法 | 轮询算法(加权) | RR 最简单,按需可选最小连接数、最快响应、一致性哈希 |
| 健康检查 | http-health-check | 绑定第二步创建的策略。可绑定多个(AND/OR 协作) |
| 转发引擎 | engine117 | 选择第一步添加的引擎(或选择流量组) |
| 目标节点 | 10.1.9.114:8000(权重 5)10.1.9.117:8000(权重 5) | 后端服务器 IP:端口,权重影响流量分配比例 |
关于负载均衡算法:
| 算法 | 适用场景 |
|---|---|
| 轮询(加权) | 后端性能相当,简单公平 |
| 最小连接数(加权) | 后端性能不均,长连接场景 |
| 最快响应 | 延迟敏感,后端性能差异大 |
| 一致性哈希 | 缓存服务器,需会话粘滞 |
权重(0-100)仅在加权算法下生效。设为 0 则节点不收流量(可用于临时下线)。
保存后,后台通过所选转发引擎对节点做健康检查。如果两个节点都健康,服务器池列表中该池的健康状态应显示为绿色:

服务器池的高级配置(虚拟组、优先级分组、温暖上线、AI 模式等)参见 服务器池用户手册。
第四步:创建分发策略
分发策略定义了"什么样的请求走这条规则"。如果虚拟服务只有一个简单的转发目标(所有请求都转到同一个服务器池),可以跳过此步骤,直接在虚拟服务的默认分发规则中指定服务器池。
如果需要按 URL/Host/Header 等条件区分路由,则需要创建分发策略。入口:【SLB 本地负载 → 分发规则 → 分发策略】。
常用分发策略类型:
| 策略类型 | 示例 | 用途 |
|---|---|---|
| URL 前缀匹配 | /api/ | 将 API 请求路由到后端服务 |
| URL 完全匹配 | /api/v1/health | 精确匹配特定端点 |
| URL 正则匹配 | /api/.*/search | 复杂 URL 模式 |
| HOST 域名 | api.example.com | 按域名路由 |
| 源地址 | 10.0.0.0/8 | 按客户端 IP 路由 |
| HTTP 方法 | POST | 按请求方法路由 |
| Header 匹配 | X-Version: v2 | 用于灰度发布 |
分发策略的使用和匹配逻辑参见 分发规则匹配逻辑详解。
第五步:创建七层 HTTP 策略
七层策略定义了"转发时如何修改请求/响应"。对于简单的代理场景,可直接使用系统内置的"HTTP 七层策略模板"。
如果需要自定义,入口:【SLB 本地负载 → 策略配置 → 七层策略 → HTTP 策略】。
常用配置项:
| 配置项 | 作用 | 建议 |
|---|---|---|
| Host 头部传递 | 将客户端请求的 Host 传给后端 | 开启 |
| X-Forwarded-For | 将客户端真实 IP 传给后端 | 开启 |
| HTTP 压缩 | 压缩文本类响应,减少传输量 | 开启 Gzip,类型选 text/html、application/json 等 |
| TCP 连接复用 | 复用后端连接,减少建连开销 | 开启(参见 性能调优指南) |
| 会话保持策略 | 同一客户端路由到同一后端 | 按需绑定(参见 会话保持配置指南) |
七层策略的完整功能(包体替换、请求/响应改写、缓存、访问控制等)参见 七层策略用户手册。
第六步:创建虚拟服务
入口:【SLB 本地负载 → 虚拟服务】,点击"新增"。
基础信息
| 配置项 | 示例值 | 说明 |
|---|---|---|
| 名称 | controller-backend | |
| 对象类型 | 转发引擎(单机)或流量组(HA) | |
| 转发引擎/流量组 | engine117 | 选择之前添加的引擎 |
| 协议 | HTTP | |
| 监听地址 | 10.1.9.117 | 客户端访问的 IP |
| 端口 | 9999 | 客户端访问的端口 |

服务域名(可选)
如果虚拟服务需要根据客户端请求的 Host 头部进行过滤,可配置"服务域名",相当于 NGINX 的 server_name。多个域名用逗号分隔。
分发规则
滚动到页面下方配置分发规则。最简单的场景——所有流量转发到同一个后端——只需配置默认分发规则:

| 配置项 | 示例值 | 说明 |
|---|---|---|
| 处理方式 | HTTP 代理 | |
| 服务器池 | test-controller-back-pool | 第三步创建的服务器池 |
| HTTP 策略 | HTTP 七层策略模板 | 系统内置模板,或选择第五步自定义的策略 |
如果需要多条分发规则(例如 /api/ 转发到后端服务器池,/static/ 返回静态资源):
规则 1(中优先级):
分发策略:URL 前缀 = /api/
处理方式:HTTP代理 → backend-pool
规则 2(中优先级):
分发策略:URL 前缀 = /static/
处理方式:静态资源 → my-static-pkg
默认分发规则:
处理方式:HTTP代理 → default-pool多规则共存和优先级逻辑参见 分发规则匹配逻辑详解。静态资源配置参见 静态资源托管服务配置。
其他可选配置
| 配置项 | 说明 |
|---|---|
| 启用 HTTP/2 | HTTPS 下可用,HTTP 协议不适用 |
| KeepAlive 超时 | 默认 60s,短连接场景可降低 |
| TCP Fast Open | 减少 TCP 握手延迟 |
| 缓存请求/响应包体 | 默认开启(缓冲完整包体后再转发),大文件上传/流式场景可关闭 |
配置完成后点击"确认"保存。
第七步:变更执行并验证
变更执行
点击"变更执行"按钮使配置在转发引擎上生效:

验证
用 curl 或浏览器访问虚拟服务:
curl -v http://10.1.9.117:9999/api/health如果后端 /api/health 端点正常,应返回 200 响应。

响应成功则表示 HTTP 虚拟服务已正常工作。进入虚拟服务详情 → 分析标签,可查看吞吐量、时延等实时监控指标。
排障提示
| 现象 | 可能原因 |
|---|---|
| 连接被拒绝 | 转发引擎未启动、端口未监听、防火墙拦截 |
| 502/504 | 后端节点不可用或健康检查失败 |
| 404 | 分发规则未匹配到请求,默认规则也未正确配置 |
| 响应慢 | 查看虚拟服务分析的端到端时延,定位是客户端→LB、LB→服务器还是应用响应慢 |
HTTP 虚拟服务可配置的完整选项参见 虚拟服务用户手册。HTTPS 版本参见 快速创建HTTPS虚拟服务。从 NGINX 迁移的对照示例参见 从 NGINX 迁移到矩尺。
