快速创建TCP/SSL虚拟服务
简介
TCP/SSL 虚拟服务在 TCP 四层转发的基础上增加了 TLS 加密——客户端与负载均衡之间建立安全的 TLS 通道后,再以 TCP 方式转发给后端。适合需要加密传输但不是 HTTP 协议的场景。
如果您熟悉 NGINX,TCP/SSL 对应 stream {} 块中配置了 SSL 证书的 server 指令。
典型场景:
- 加密的数据库连接(如需要 TLS 的 MySQL、PostgreSQL)
- 自定义 TCP 协议需要传输层加密
- MQTT、gRPC 等非 HTTP 协议的 TLS 加密代理
与 TCP / HTTPS 的区别
| 维度 | TCP | TCP/SSL | HTTPS |
|---|---|---|---|
| 工作层次 | L4 | L4 + TLS | L7 + TLS |
| 加密传输 | 否 | 是 | 是 |
| 解析 HTTP | 否 | 否 | 是 |
| 基于 URL 路由 | 否 | 否 | 是 |
| SSL 证书 | 不需要 | 需要 | 需要 |
| SSL 策略 | 不需要 | 需要 | 需要 |
| 支持国密 | 否 | 是 | 是 |
| 会话保持 | 源地址 | 源地址 / SSL Session ID | 六种方式 |
操作步骤概览
第一步:创建转发引擎 → 同 TCP
第二步:上传 SSL 证书 → 证书与私钥同名配对上传
第三步:创建 SSL 策略 → 定义加密套件、协议版本、会话复用
第四步:创建健康检查策略 → TCP 或 SslClientHello
第五步:创建服务器池 → 同 TCP
第六步:创建虚拟服务 → 选择 TCP/SSL 类型,关联 SSL 策略
第七步:变更执行并验证 → 验证 TLS 握手成功下面以将 10.1.9.117:3307 的加密 TCP 流量分发到后端两个 MySQL 节点为例。
第一步:创建转发引擎
与 TCP 虚拟服务完全一致。参见 快速创建TCP虚拟服务 - 创建转发引擎。
第二步:上传 SSL 证书
入口:【平台系统 → SSL 证书管理】,点击"新增"。

| 配置项 | 说明 |
|---|---|
| 证书名称 | 自定义,如 mysql-tls-cert。私钥名称填相同值 |
| 证书内容 | 粘贴完整的证书链(服务器证书 + 中间 CA) |
| 私钥名称 | 与证书名称一致,如 mysql-tls-cert |
| 私钥内容 | 粘贴私钥文件内容 |
详细说明参见 快速创建HTTPS虚拟服务 - 上传证书。
第三步:创建 SSL 客户端策略
入口:【SLB 本地负载 → 策略配置 → SSL 策略 → 客户端 SSL 策略】,点击"新增"。

| 配置项 | 建议 |
|---|---|
| 服务器证书 | 选择第二步上传的证书 |
| 服务器私钥 | 选择第二步上传的私钥 |
| 支持 SSL 协议 | 勾选 TLS 1.2 和 TLS 1.3 |
| Session 缓存 | 开启(减少重复握手) |
| Session Ticket | 集群部署时开启 |
| 安全套件 | 保持默认,或自定义(用冒号分隔) |
各字段的详细解释参见 快速创建HTTPS虚拟服务 - SSL策略 和 SSL 策略用户手册。
第四步:创建健康检查策略
TCP/SSL 场景推荐以下健康检查方式:
| 协议 | 适用场景 |
|---|---|
| TCP | 通用,三次握手成功即判健康 |
| SslClientHello | 验证后端能正确响应 TLS ClientHello(适用于后端也开启了 TLS 的场景) |
入口:【SLB 本地负载 → 健康检查】,配置与 TCP 虚拟服务一致。参见 快速创建TCP虚拟服务 - 健康检查。
第五步:创建服务器池
与 TCP 虚拟服务完全一致。入口:【SLB 本地负载 → 服务器池】。
| 配置项 | 示例值 |
|---|---|
| 服务器池名称 | mysql-tls-backend-pool |
| 负载均衡算法 | 最小连接数(数据库长连接推荐) |
| 健康检查 | 选择第四步创建的策略 |
| 转发引擎 | engine117 |
| 目标节点 | 10.1.9.114:3306, 10.1.9.117:3306 |
第六步:创建虚拟服务
入口:【SLB 本地负载 → 虚拟服务】,点击"新增"。
| 配置项 | 示例值 | 说明 |
|---|---|---|
| 名称 | mysql-tls-proxy | |
| 对象类型 | 转发引擎 或 流量组 | |
| 协议 | TCP/SSL | 关键区别 |
| 监听地址 | 10.1.9.117 | |
| 端口 | 3307 | 对外暴露的加密端口 |
| SSL 客户端策略 | 选择第三步创建的 SSL 策略 | 仅 TCP/SSL 和 HTTPS 需配置 |
默认分发规则
| 配置项 | 示例值 |
|---|---|
| 处理方式 | TCP SSL 代理 |
| 服务器池 | mysql-tls-backend-pool |
| TCP 策略 | 选择系统内置的"TCP 策略模板"(或自定义) |
四层 TCP 策略中可配置 SNAT、会话保持、溯源等。参见 快速创建TCP虚拟服务 - 四层策略。
第七步:变更执行并验证
变更执行
点击"变更执行"使配置生效。
验证 TLS 握手
bash
# 验证 TLS 握手成功,查看证书信息
openssl s_client -connect 10.1.9.117:3307 -servername mysql.example.com
# 使用 mysql 客户端(需要支持 TLS)
mysql -h 10.1.9.117 -P 3307 -u username -p --ssl-mode=REQUIRED如果 openssl 输出中显示了证书信息和 Verify return code: 0,表示 TLS 握手成功。curl 不适用于验证 TCP/SSL(因为不是 HTTP 协议)。
SSL 策略完整配置参见 SSL 策略用户手册。国密算法支持参见 国密配置与验证。
