Skip to content

快速创建HTTP虚拟服务

简介

HTTP 虚拟服务是七层负载均衡中最常用的类型。与四层 TCP 转发不同,HTTP 虚拟服务能解析请求内容(URL、Host、Header 等),实现基于内容的路由、请求改写、压缩、会话保持等高级功能。

本教程引导您从零开始创建一个完整的 HTTP 虚拟服务,将流量分发到两台后端服务器。如果您熟悉 NGINX,这相当于创建一个 server { listen 80; ... } 块及其关联的 upstreamlocation 配置。

操作步骤概览

第一步:创建转发引擎        →  确定流量由哪台机器处理
第二步:创建健康检查策略    →  定义"何谓后端健康"
第三步:创建服务器池        →  定义后端节点和负载均衡方式
第四步:创建分发策略        →  定义"匹配什么请求"(如 URL 前缀 /api/)
第五步:创建七层 HTTP 策略  →  定义"如何转发"(Header、压缩等)
第六步:创建虚拟服务        →  组合以上所有组件,定义监听地址
第七步:变更执行并验证      →  使配置生效,确认流量正常转发

下面以将 10.1.9.117:9999 的 HTTP 流量分发到后端 10.1.9.114:800010.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/2HTTPS 下可用,HTTP 协议不适用
KeepAlive 超时默认 60s,短连接场景可降低
TCP Fast Open减少 TCP 握手延迟
缓存请求/响应包体默认开启(缓冲完整包体后再转发),大文件上传/流式场景可关闭

配置完成后点击"确认"保存。

第七步:变更执行并验证

变更执行

点击"变更执行"按钮使配置在转发引擎上生效:

变更执行

验证

curl 或浏览器访问虚拟服务:

bash
curl -v http://10.1.9.117:9999/api/health

如果后端 /api/health 端点正常,应返回 200 响应。

验证虚拟服务

响应成功则表示 HTTP 虚拟服务已正常工作。进入虚拟服务详情 → 分析标签,可查看吞吐量、时延等实时监控指标。

排障提示

现象可能原因
连接被拒绝转发引擎未启动、端口未监听、防火墙拦截
502/504后端节点不可用或健康检查失败
404分发规则未匹配到请求,默认规则也未正确配置
响应慢查看虚拟服务分析的端到端时延,定位是客户端→LB、LB→服务器还是应用响应慢

HTTP 虚拟服务可配置的完整选项参见 虚拟服务用户手册。HTTPS 版本参见 快速创建HTTPS虚拟服务。从 NGINX 迁移的对照示例参见 从 NGINX 迁移到矩尺