tencent cloud

私有网络

文档私有网络实践教程二层专线上云最佳实践

二层专线上云最佳实践

下载
聚焦模式
字号
最后更新时间: 2026-09-23 18:01:05
本文档已由 AI 辅助审校

相关概述

什么是二层专线上云

二层专线上云(Layer 2 Direct Connect to Cloud)是指通过 L2GW(二层网关)技术,在腾讯云 VPC 与用户本地 IDC 之间建立大二层网络通道,使得云端和本地 IDC 的业务主机处于同一个二层广播域中,实现同子网 IP 地址的直接通信。

与传统三层专线的区别

维度
三层专线接入(传统方案)
二层专线上云(L2GW)
网络层级
三层(IP 路由)
二层(MAC 转发 + VXLAN 隧道)
子网规划
云上云下网段不能重叠
支持同子网 IP 通信
迁移粒度
子网粒度
虚拟机/Pod 粒度
IP 地址变更
上云需修改 IP 地址
无需修改 IP 地址
主要用途
普通混合云互联
业务平滑迁移上云、容灾、弹性扩容

核心价值

业务无感迁移:云上云下同子网通信,IP 地址和网络配置无需修改,业务迁移对应用透明。
灵活伸缩:可将 IDC 中的虚拟机逐台平滑迁移至云端,实现零停机迁移。
容灾与弹性:在 IDC 资源不足时,可将部分业务弹性扩展至云端,共享同一子网。

使用场景

数据中心平滑迁移上云

业务背景:企业需要将自建数据中心中的业务逐步迁移至腾讯云,但受限于现有应用架构,大量应用依赖固定 IP 地址通信,修改 IP 将导致大规模应用重新配置和长周期停服。
解决方案:
通过 L2GW 建立云上云下大二层网络。
保持原有子网规划不变,逐台将 CVM 迁移至云上 VPC。
云上 CVM 使用与 IDC 原有服务器相同的子网 IP 地址。
迁移过程中业务中断时间最小化。
典型客户:金融行业核心系统迁移、传统企业 ERP/OA 系统上云。

整体架构

架构拓扑



核心组件说明

组件
角色
说明
L2GW CVM
二层网关核心
部署在管理 VPC 中的 CVM 实例,负责二层流量转发和 VXLAN 隧道封装/解封装。
管理子网
运维管理面
部署 L2GW CVM 的子网,使用单独子网和业务子网分开。
业务子网
业务承载面
实际需要二层互通的业务子网。
VXLAN 子网
VXLAN 管控面
建立 VXLAN 隧道的子网,使用单独子网和业务子网分开。
HAVIP
高可用引流
高可用虚拟 IP,作为 VPC 子网和 IDC 方向的流量入口,由 Keepalived/VRRP 管理。
VXLAN 隧道
二层扩展
在 L2GW 与 IDC Switch 之间建立 VXLAN Overlay 隧道,承载二层流量。
专线网关
专线接入网关
腾讯云本地网关,实现 L2GW 与 IDC 之间的三层网络互通。

网络平面隔离设计

L2GW CVM 包含三个网络平面:
网卡
用途
说明
eth0(管理口)
运维管理
仅用于 SSH 登录和日常运维,禁止用于业务流量转发。
vpc0(VPC 方向)
L2GW > VPC 业务通信
绑定弹性网卡,连接用户 VPC 业务子网。
idc0(IDC 方向)
L2GW > IDC 业务通信
绑定弹性网卡,承载 VXLAN 隧道和 VRRP 心跳,不可删除。

部署前准备

机型选型建议

推荐机型:SA3.16XLARGE128 / SA5.16XLARGE256 / SA9.16XLARGE128。
集群规模估算:
以 SA5.16XLARGE256(20G/台)为例:
1. 假设客户双向总流量需求为 120G。
2. 单台 CVM 承载 20G(出+入)。
3. 可用公式:集群套数 = 总流量 ÷ 单机吞吐 = 120 ÷ 20 = 6。
说明:
吞吐定义:转发吞吐 = VM→IDC + IDC→VM 双向流量总和(出 + 入),实例性能指标可以查看 实例规格 确认。实际部署数量应根据业务流量模型和冗余要求调整,建议预留冗余。

操作系统要求

操作系统:TencentOS Server 3.3 (TK4),基于 tlinux5.x 内核 + CentOS 兼容环境。
内核特性:需支持 VXLAN 隧道模块。

L2GW 部署包

下载 l2gw_v2.0_20260820_193300.tar.gz 到 L2GW 子机,解压到 /data/ 目录并创建软链接:
#下载L2GW部署包
wget https://iso-1255486055.cos.ap-guangzhou.myqcloud.com/l2gw_v2.0_20260820_193300.tar.gz

# 解压到 /data/ 目录
tar -xzf l2gw_v2.0_20260820_193300.tar.gz -C /data/

# 创建软链接
cd /data
ln -s l2gw_v2.0_20260820_193300 l2gw
注意:
后续所有执行的 shell 命令都必须在 /data/l2gw 目录之下执行。

虚拟网口命名规范

L2GW 纳管的网卡采用按角色语义命名,与系统底层网卡名解耦:
角色
命名
说明
管理口
eth0(不变)
不纳入 l2gw 命名空间,仅用于 SSH 管理登录。
云上 VPC 侧
vpc0 / vpc1 / ...
VPC 引流网卡(对应系统底层 eth2/eth3 等)。
云下 IDC 侧
idc0 / idc1 / ...
Underlay / VTEP + VRRP 心跳网卡(对应系统底层 eth1 等)。
命名背景:
系统底层网卡名由云平台/内核决定(腾讯云弹性网卡在子机内呈现为 eth1/eth2/...),重启或换网卡后序号可能漂移,不稳定。
L2GW 在 l2gw_install_interface.sh 纳管时,会把底层网卡挪入 l2gw 命名空间并统一改名为 vpcN / idcN(序号 N 由用户显式传入,不依赖系统)。
路由表号也由 N 决定(vpc_idx 驱动 2xxx/3xxx/4xxx,idc_idx 驱动 5xxx),与系统网卡名彻底解耦。
每个网卡可附带 ≤128 字节英文描述(写入内核 ifalias),便于运维识别用途。
说明:
通过 MAC 地址确认网卡:网口被改名为 vpcN/idcN 后,原系统名不再可见,排查时需通过 MAC 地址 确认网卡对应关系。可用 ip -d link show <vpcN/idcN> 查看 MAC,与云平台弹性网卡的 MAC 对照确认。

MTU / MSS 配置(l2gw.conf)

L2GW 的 VXLAN 隧道口 MTU 与 TCP MSS 由部署包内的 l2gw.conf 统一控制。对外只需配置一个配置项 EXTRA_TUNNEL_OVERHEAD(额外隧道长度),MTU 与 MSS 会自动联动计算,无需手动分别设置:
# l2gw.conf
# 额外隧道长度(字节):
# 0 → 直连专线(默认)
# 101 → 经 VPNGW(IPsec)承载
EXTRA_TUNNEL_OVERHEAD=0
取值对照:
承载路径
EXTRA_TUNNEL_OVERHEAD
隧道 MTU
TCP MSS
直连专线 / LGW(默认)
0
1412
1372
经 VPNGW(IPsec)
101
1312
1272
说明:
l2gw_install_global.sh 安装时会校验 l2gw.conf 必须存在且配置合法,否则安装失败。

Keepalived

Keepalived 版本:v2.1.5。
注意:
Keepalived 不包含在 L2GW 部署包中,需运维提前在 L2GW 子机上自行下载并安装(版本 v2.1.5),安装完成后再进行配置。配置方法详见「部署最佳实践 > 步骤5:配置 Keepalived 并上线」。

网络规划

IP 地址规划表

子网
CIDR
网关
用途
管理子网
10.0.0.0/24
-
L2GW 管理口 eth0(不接入 l2gw 命名空间)
Underlay
10.96.0.0/16
-
VTEP 通信 + VRRP 心跳 + VXLAN 承载网
子网1
192.168.1.0/24
192.168.1.1
云上 VM1 + 云下 IDC(大二层互通)
子网2
192.168.2.0/24
192.168.2.1
云上 VM2(大二层子网2)
IDC-子网1
192.168.1.0/24
-
云下 IDC 服务器(与子网1同网段,大二层互通)
IDC-子网2
192.168.2.0/24
-
云下 IDC 服务器(与子网2同网段,大二层互通)
Internet
8.8.8.8/32
-
公网出口(缺省路由 0.0.0.0/0)
注意:
Underlay 子网与大二层业务子网(子网1/子网2等)必须规划为不同子网,不允许相同或重叠,避免 VTEP 通信与 VRRP 心跳对业务大二层流量造成影响。

HAVIP 规划

HAVIP
IP
绑定网口
所在子网
VRID
用途
HAVIP-underlay
10.96.0.100
idc0
Underlay
51
VTEP 源 IP(主备漂移保隧道不断)+ VRRP 心跳对端
HAVIP-l2-1
192.168.1.100
vpc0
子网1
52
子网1 VPC 引流(VM1 默认网关)
HAVIP-l2-2
192.168.2.100
vpc1
子网2
53
子网2 VPC 引流

L2GW 节点 IP 分配

节点
eth0(管理口)
idc0(Underlay)
vpc0(子网1)
vpc1(子网2)
L2GW 主
10.0.0.100
10.96.0.11
192.168.1.21/24
192.168.2.21/24
L2GW 备
10.0.0.101
10.96.0.12
192.168.1.22/24
192.168.2.22/24
参考对端地址:IDC-Switch 172.16.1.200/24,其 VTEP 隧道地址 10.96.0.21。

网段规划原则

1. 管理子网与业务子网分离:管理口 eth0 不接入 l2gw 命名空间,不承载业务流量。
2. 业务子网云上云下同网段:子网1 / 子网2 必须与对应的 IDC 业务子网保持同一 CIDR,才能二层互通。
3. Underlay 独立规划:Underlay 与所有大二层业务子网不得重叠,且与 IDC-Switch 的 VTEP 地址需三层可达。
4. 预留扩展空间:每个子网建议预留至少 50% 的 IP 地址余量;每新增一个子网,对应新增一个 eth 网口 + 一个 HAVIP + 一条 VXLAN 隧道。

资源清单

云上资源申请

资源类型
申请资源
备注
用户 VPC(客户账号)
申请子网1(如 192.168.1.0/24)
云上云下同子网通信
子网1 创建 2 个跨租户弹性网卡挂载 L2GW + 1 个 HAVIP
VPC 引流用
申请子网2(如 192.168.2.0/24)
云上与云下 Switch 通过 VXLAN 打通
子网2 创建 2 个跨租户弹性网卡挂载 L2GW + 1 个 HAVIP
专线/LGW 引流用
申请管理子网(如 10.0.0.0/24)
L2GW 管理口 eth0,不接入 l2gw 命名空间
创建 2 台 L2GW 子机,分配管理子网 IP
可通过管理子网登录 L2GW
用户 IDC
创建与云上子网可通信的 IDC-Subnet
大二层互通
创建 VXLAN 隧道并分配 IP 地址
IDC-Switch VTEP

缺省资源需求

以下为「2 个大二层子网」形态下的缺省资源需求,新增子网时按上表规则递增:
资源项
数量
备注
L2GW CVM 实例
2 台(1 主 1 备)
按机型选型建议选择规格,可根据流量扩展为多套集群
弹性网卡(Underlay 方向)
2 张
每台 L2GW 1 张,纳管为 idc0
弹性网卡(VPC 方向)
4 张
子网1、子网2 各 2 张,每台 L2GW 每子网 1 张,纳管为 vpc0 / vpc1
HAVIP
3 个
10.96.0.100(idc0)、192.168.1.100(vpc0)、192.168.2.100(vpc1)
VXLAN 隧道
每个大二层子网 1 条
目的端口 4789;子网1 用 VNI 2000,子网2 用 VNI 2001
Keepalived
每台 L2GW 1 套
版本 v2.1.5,需自行下载安装

部署最佳实践

部署流程总览

注意:
本章所有 shell 命令均须在 /data/l2gw 目录下执行。执行前请确认 L2GW 部署包已解压至 /data/ 并已创建软链接 ln -s l2gw_v2.0_xxx l2gw。

步骤1:全局初始化

创建 l2gw 网络命名空间并完成 sysctl 内核参数初始化。
cd /data/l2gw
./l2gw_install_global.sh
接口说明:
项
说明
命令
./l2gw_install_global.sh
参数
无
返回值
0 = 成功;其他 = 失败
注意:
需手动将 l2gw_install_global.sh 添加到 /etc/rc.local 流程中,确保 CVM 重启后初始化参数仍然生效,并在部署后实际重启验证是否生效。
安装时会校验 l2gw.conf 必须存在且配置合法,否则安装失败。若 VXLAN 大二层经 VPNGW(IPsec)承载,需将 EXTRA_TUNNEL_OVERHEAD 配置为 101。

步骤2:用户平面 ETH 接口初始化

将云平台弹性网卡挪入 l2gw 命名空间,并按角色语义统一改名为 vpcN / idcN,同时完成 IP、选口表与策略路由配置。
用户平面 ETH 口分为三类:
Underlay( idc0):VTEP 通信 + VRRP 心跳 + VXLAN 封装源 IP,不可删除。
子网1( vpc0):VPC 侧引流,对应云上 VM1 所在子网。
子网2( vpc1):VPC 侧引流,对应云上 VM2 所在子网。
# 初始化 Underlay 接口(VTEP 通信 + VRRP 心跳)
./l2gw_install_interface.sh add idc 0 eth1 10.96.0.11 "idc0: underlay vtep + vrrp heartbeat"
# 初始化 子网1 接口(VPC 引流)
./l2gw_install_interface.sh add vpc 0 eth2 192.168.1.21 "vpc0: cloud subnet1 for VM traffic"
# 初始化 子网2 接口(VPC 引流)
./l2gw_install_interface.sh add vpc 1 eth3 192.168.2.21 "vpc1: cloud subnet2 for VM traffic"
接口格式:
# 添加(自动 down + 改名 + 挪入 + 配 IP/路由/alias)
./l2gw_install_interface.sh add <role> <idx> <src_dev> <ip_address> [desc]
# 删除(只需 role + idx)
./l2gw_install_interface.sh del <role> <idx>
参数说明:
功能:
add:先在 root ns 改名为 <role><idx>,再挪入 l2gw ns(保证 l2gw ns 干净,无 src_dev 残留)+ 配置 IP(/32)+ 选口表 + 策略路由
del:清理 IP/路由 + 挪回 root ns(root ns 残留 DEV 名无害,下次 add 复用)
role:vpc(云上 VPC 侧)或 idc(云下 IDC/underlay 侧)
idx:用户指定的序号(0~999),决定路由表号,与系统网卡名解耦
src_dev:待挪入的底层网卡名(腾讯云弹性网卡,如 eth1/eth2/eth3)。add 时先在 root ns 改名为 <role><idx> 再挪入。del 不需要此参数
ip_address:该网卡的 /32 IP(不带掩码,默认 /32)
desc:可选,≤128 字节 ASCII 描述,写入内核网卡 alias
语义:install 是一次性动作,已挪入的 DEV 再次 add 会失败(exit 104);del 幂等(DEV 不在 l2gw ns 则跳过)
返回:0=成功;10=参数/校验错误;101=src_dev 不存在或已挪入;102=挪入失败;103=改名失败;104=idx 已被占用
备注:eth0 管理口不纳入 l2gw ns,不调用此脚本
注意:
管理口 eth0 不纳入 l2gw 命名空间,不调用本脚本。
add 为一次性动作,已挪入的网卡再次 add 会失败(返回 104);del 幂等。
idc0 所在的 Underlay 子网与其他大二层业务子网(子网1/子网2等)不允许规划在相同或重叠子网内,必须使用独立子网,避免 VTEP 通信/VRRP 心跳与业务大二层流量相互影响。
网口改名为 vpcN/idcN 后原系统名不再可见,排查时需通过 MAC 地址 确认网卡对应关系,可用 ip -d link show <vpcN/idcN> 查看 MAC 并与云平台弹性网卡对照。
弹性网卡在用户 VPC 申请的子网需与 IDC-Switch 交换机三层互通。

步骤3:配置 VXLAN 隧道

为每个大二层子网创建一条独立的 VXLAN 隧道,打通云上云下二层网络。脚本会自动完成 vxlan 接口创建、MAC、MTU(按 l2gw.conf 计算,默认 1412)、overlay IP、策略路由,以及 proxy_arp=1、rp_filter=0 的设置。
# 子网1(VNI=2000)
./l2gw_subnet.sh add 2000 idc0 10.96.0.100 10.96.0.21 4789 192.168.1.21 vpc0

# 子网2(VNI=2001)
./l2gw_subnet.sh add 2001 idc0 10.96.0.100 10.96.0.21 4789 192.168.2.21 vpc1
接口格式:
# 添加子网(建隧道 + 策略路由 + proxy_arp + rp_filter)
./l2gw_subnet.sh add <vni> <idc_eth> <local_vtep_ip> <remote_vtep_ip> <dstport> <vpc_eth_ip> <vpc_eth>

# 删除子网
./l2gw_subnet.sh del <vni> <idc_eth> <local_vtep_ip> <vpc_eth>
参数说明:
参数
示例值
说明
vni
2000
VXLAN 网络标识,云上云下需一致,每个大二层子网一个 VNI。
idc_eth
idc0
Underlay 侧 ETH 口,即 VTEP underlay 出口。
local_vtep_ip
10.96.0.100
本端 VTEP 源 IP,取 Underlay HAVIP,主备漂移时保隧道不断。
remote_vtep_ip
10.96.0.21
对端 VTEP IP,即 IDC-Switch 的隧道地址。
dstport
4789
VXLAN UDP 目的端口,标准值为 4789。
vpc_eth_ip
192.168.1.21
配置到 vxlan 口的 overlay IP,取 vpc_eth 对应的子机 IP。
vpc_eth
vpc0
VPC 侧 ETH 口,决定方向路由表号。
返回值:0 = 成功;1 = 幂等(隧道已存在)。
注意:
对端 IDC 交换机也需配置对应的 VTEP 隧道端点(VNI 一致),隧道才能建立。

步骤4:配置大二层路由

配置云上 VM 明细路由与云下 IDC 网段路由。大二层路由既可在上线前批量下发,也可在上线后动态增删,无需重启 Keepalived。
# 添加云上 VM 路由(使 VM 可被 IDC 侧访问,并发送免费 ARP 通告)
./l2gw_ipaddr.sh add_vm vpc0 2000 192.168.1.10
./l2gw_ipaddr.sh add_vm vpc1 2001 192.168.2.10

# 添加 IDC 本网段路由(不传网关,scope link 二层直连,一条路由覆盖整个本网段)
./l2gw_ipaddr.sh add_idc_subnet vpc0 2000 192.168.1.0/24
./l2gw_ipaddr.sh add_idc_subnet vpc1 2001 192.168.2.0/24

# 添加 IDC 跨子网/缺省路由(传网关,via 网关 onlink,由 Switch 三层转发)
./l2gw_ipaddr.sh add_idc_subnet vpc0 2000 0.0.0.0/0 192.168.1.1
接口格式:
./l2gw_ipaddr.sh <action> <vpc_eth> <vni> <参数...>
支持的 action:
Action
说明
参数
add_vm
添加云上 VM 明细路由(T_to_VM /32),使 VM 可被 IDC 侧访问,并发送免费 ARP 通告,让 IDC 侧 Switch 刷新 MAC 表把流量引到 L2GW。也用于 IDC→VM 迁移
<vpc_eth> <vni> <vm_ip>
del_vm
删除云上 VM 明细路由。也用于 VM→IDC 迁移,删除 /32 后 T_to_IDC 本网段路由自动覆盖
<vpc_eth> <vni> <vm_ip>
add_idc_subnet
添加云下 IDC 网段路由,gw 可选。不传 gw 为本网段直连(scope link dev vxlan),一条网段路由覆盖整个本网段所有 IDC 主机;传 gw 为跨子网/缺省路由(via <gw> onlink),报文经 Switch 三层网关转发,支持 0.0.0.0/0 缺省路由用于 Internet 访问
<vpc_eth> <vni> <subnet/mask> [gw]
del_idc_subnet
删除云下 IDC 网段路由
<vpc_eth> <vni> <subnet/mask>
返回值:0 = 成功;1 = 幂等(已存在);2 = 已存在(File exists)。
说明:
add_idc_subnet 传入的 gw 必须是当前隧道所在子网在 IDC 侧的网关。
VPC 侧需配置子网路由将 VM 流量引流到 L2GW(下一跳指向 HAVIP),可使用 32 位明细路由,也可使用网段路由。

步骤5:配置 Keepalived 并上线

L2GW 采用 Keepalived(v2.1.5)VRRP 主备架构,3 个 HAVIP 随主节点漂移。Keepalived 不包含在 L2GW 部署包中,需提前在两台 L2GW 子机上自行下载安装,再进行下述配置。
部署包内附带 Keepalived 配置文件模板,需手动复制到 Keepalived 配置目录(如 /etc/keepalived/keepalived.conf),并按本机实际情况修改:
vrrp_instance VI_L2GW {
...
interface idc0 # 绑定 Underlay 网卡(VTEP 通信口 + VRRP 心跳口)
unicast_src_ip 10.96.0.11 # 本机 Underlay IP 地址
unicast_peer {
10.96.0.12 # 对端设备的 Underlay IP 地址
}
virtual_ipaddress {
10.96.0.100 dev idc0 # Underlay HAVIP(VTEP 源 IP)
192.168.1.100 dev vpc0 # 子网1 VPC 引流 HAVIP
192.168.2.100 dev vpc1 # 子网2 VPC 引流 HAVIP
}
...
}
配置完成后启动 Keepalived 完成上线:
# 上线(启动 keepalived)
./l2gw_online.sh

# 下线(停止 keepalived,流量切换到备机)
./l2gw_offline.sh

# 在线重载 keepalived 配置(新增/删除 HAVIP 后使用,无需重启)
./l2gw_reload.sh
注意:
VRRP 心跳接口必须选择 Underlay 网卡 idc0,该网卡不可删除、不可变更,需持续保留。
VRRP 仅支持单播模式部署,不支持组播。
上线后可使用 systemctl status keepalived 或查看日志确认主备状态正常。

步骤6:查看 L2GW 路由配置

打印所有策略规则、路由表项、接口、vxlan、proxy_arp 状态与 ARP 邻居,用于部署后验证与日常排查。
./l2gw_route_show.sh
接口说明:
项
说明
命令
./l2gw_route_show.sh
参数
无

完整部署示例

以 2 个大二层子网(子网1 / 子网2)为例,完整部署命令序列如下:
cd /data/l2gw

# 1. 全局初始化
./l2gw_install_global.sh

# 2. 用户平面 ETH 接口初始化(eth0 管理口不纳入 ns,跳过)
./l2gw_install_interface.sh add idc 0 eth1 10.96.0.11 "idc0: underlay vtep + vrrp heartbeat"
./l2gw_install_interface.sh add vpc 0 eth2 192.168.1.21 "vpc0: cloud subnet1 for VM traffic"
./l2gw_install_interface.sh add vpc 1 eth3 192.168.2.21 "vpc1: cloud subnet2 for VM traffic"

# 3. 创建 VXLAN 隧道
./l2gw_subnet.sh add 2000 idc0 10.96.0.100 10.96.0.21 4789 192.168.1.21 vpc0
./l2gw_subnet.sh add 2001 idc0 10.96.0.100 10.96.0.21 4789 192.168.2.21 vpc1

# 4. 配置大二层路由(可提前配置,也可上线后动态添加)
# 子网1(vpc0 / VNI=2000)
./l2gw_ipaddr.sh add_vm vpc0 2000 192.168.1.10
./l2gw_ipaddr.sh add_idc_subnet vpc0 2000 192.168.1.0/24 # 本网段直连
./l2gw_ipaddr.sh add_idc_subnet vpc0 2000 0.0.0.0/0 192.168.1.1 # 缺省路由

# 子网2(vpc1 / VNI=2001)
./l2gw_ipaddr.sh add_vm vpc1 2001 192.168.2.10
./l2gw_ipaddr.sh add_idc_subnet vpc1 2001 192.168.2.0/24 # 本网段直连
./l2gw_ipaddr.sh add_idc_subnet vpc1 2001 0.0.0.0/0 192.168.2.1 # 缺省路由

# 5. 上线(启动 keepalived)
./l2gw_online.sh

# 6. 验证路由表
./l2gw_route_show.sh
说明:
初次搭建建议完成部署后重启设备,验证重启后配置可自动恢复,再正式上线承载业务。

高可用设计

主备架构

L2GW 采用双机主备架构:
两台 L2GW CVM 通过 Keepalived/VRRP 协议进行主备选举。
主 L2GW 持有 HAVIP,负责所有业务流量转发。
备 L2GW 监听 VRRP 心跳,主故障时自动接管。

故障切换流程

1. 主 L2GW 故障。
2. 备 L2GW 检测到 VRRP 心跳超时(默认为通告间隔时间的3倍)。
3. 备 L2GW 自动升级为主,绑定 HAVIP。
4. 发送免费 ARP,刷新网络设备 MAC 表。
5. 业务流量切换到备用 L2GW。

高可用配置关键点

1. VRRP 心跳网卡不可删除:idc0 网卡承载 VRRP 心跳通信,创建后永久保留。
2. 双 HAVIP 设计:VPC 方向和 IDC 方向各分配一个 HAVIP,实现双向引流。
3. Keepalived 非抢占模式:建议启用非抢占模式(nopreempt),避免主故障恢复后频繁切换。
4. BFD 联动:建议配合 BFD(双向转发检测)实现亚秒级故障检测。

扩展性设计

当流量超过单套集群承载能力时,可采用多套集群水平扩展:
每套集群 2 台 L2GW CVM(主备)。
不同集群管理不同的大二层子网。
建议预留 20% - 30% 的性能冗余。

运维最佳实践

日常操作指南

L2GW 上线后(Keepalived 已启动)支持两类在线变更,均无需重启 Keepalived,业务无感知:
已有子网内的大二层路由变更:增删 VM 明细路由、IDC 网段路由,以及 IP 在云上与云下之间迁移。
大二层子网整体增删:在线扩容/缩容子网,对应网口、HAVIP、VXLAN 隧道的增删,详见下文「新增大二层子网」「删除大二层子网」。
本节命令统一为 ./l2gw_ipaddr.sh <action> <vpc_eth> <vni> <参数...>,参数与返回值详见「部署最佳实践 > 步骤4:配置大二层路由」。

云上新增/删除 VM

云上新增 VM 后,需将该 VM 的明细路由添加到 L2GW 的 VM 侧路由表(T_to_VM /32),使 IDC 侧能够通过 L2GW 访问到该 VM。同时 L2GW 会发送免费 ARP 通告,告知云下 IDC 该 IP 已上云。
cd /data/l2gw

# 新增云上 VM 路由(使 VM 可被 IDC 侧访问,发免费 ARP 通告)
./l2gw_ipaddr.sh add_vm <vpc_eth> <vni> <vm_ip>

# 删除云上 VM 路由
./l2gw_ipaddr.sh del_vm <vpc_eth> <vni> <vm_ip>

# 示例:为子网1(vpc0 / VNI=2000)新增 VM 192.168.1.20
./l2gw_ipaddr.sh add_vm vpc0 2000 192.168.1.20

云下 IDC 网段路由增删

IDC 侧的网段路由由 add_idc_subnet 统一管理,分两类:
本网段直连(不传网关):scope link dev vxlan,一条路由覆盖整个本网段所有 IDC 主机,无需逐台添加 /32。
跨子网/缺省路由(传网关):via <gw> onlink,报文经 IDC-Switch 三层网关转发。
# 新增 IDC 本网段路由(覆盖整个本网段,无需逐台加 /32)
./l2gw_ipaddr.sh add_idc_subnet <vpc_eth> <vni> <本网段/mask>
# 新增 IDC 跨子网/缺省路由(via 网关,Switch 三层转发)
./l2gw_ipaddr.sh add_idc_subnet <vpc_eth> <vni> <目标网段/mask> <gw>
# 删除 IDC 网段路由
./l2gw_ipaddr.sh del_idc_subnet <vpc_eth> <vni> <subnet/mask>
# 示例:子网2(vpc1 / VNI=2001)本网段直连 + 缺省路由
./l2gw_ipaddr.sh add_idc_subnet vpc1 2001 192.168.2.0/24
./l2gw_ipaddr.sh add_idc_subnet vpc1 2001 0.0.0.0/0 192.168.2.1

云上云下 IP 迁移

IP 在云上(VM)与云下(IDC)之间迁移,直接用 add_vm / del_vm 即可,无需专用迁移命令:
迁移方向
命令
原理
IDC → VM(IP 上云)
add_vm
T_to_VM 增加 /32 明细路由,优先级高于 T_to_IDC 网段路由;同时发送免费 ARP 通告,IDC 侧 Switch 刷新 MAC 表
VM → IDC(IP 下云)
del_vm
T_to_VM 删除 /32 明细路由后,T_to_IDC 本网段路由自动覆盖
# IDC IP 迁移到云上 VM(加 T_to_VM /32 + 免费 ARP 通告)
./l2gw_ipaddr.sh add_vm <vpc_eth> <vni> <ip>

# VM IP 迁移到云下 IDC(删 T_to_VM /32,T_to_IDC 本网段路由自动覆盖)
./l2gw_ipaddr.sh del_vm <vpc_eth> <vni> <ip>

# 示例:192.168.1.21 从 IDC 迁移到云上
./l2gw_ipaddr.sh add_vm vpc0 2000 192.168.1.21

L2GW 设备上下线

# 下线(停止 keepalived,流量切换到备机)
./l2gw_offline.sh

# 上线(启动 keepalived)
./l2gw_online.sh

# 在线重载 keepalived 配置(新增/删除 HAVIP 后使用)
./l2gw_reload.sh

新增大二层子网

新增一个大二层子网(如子网3)时按以下步骤在线扩容。每新增一个子网,对应 L2GW 新增一个 eth 网口 + 一个 HAVIP + 一条 VXLAN 隧道。
前置条件:新子网的 CIDR 已规划且不与现有子网冲突;IDC 侧对应的子网已创建。
1. 申请 VPC 侧资源并初始化网卡。
在新子网中申请 2 个弹性网卡,分别绑定到 L2GW 主备两台子机;申请该子网的 HAVIP 作为 VM 的默认网关;可选开启 DirectSend(非强制需求)。随后调用 ./l2gw_install_interface.sh add <role> <idx> <src_dev> <ip> <desc> 完成初始化。
./l2gw_install_interface.sh add vpc 2 eth4 192.168.3.21 "vpc2: cloud subnet3 for VM traffic"
2. 按需申请 IDC 侧资源。
若 Underlay 网络已可达 IDC-Switch,则无需新增弹性网卡;若不可达,则需新增弹性网卡并同样调用 ./l2gw_install_interface.sh add 完成初始化。
3. 建立 VXLAN 隧道。
为新子网创建独立的 VXLAN 隧道(新 VNI,如 2002)。
./l2gw_subnet.sh add 2002 idc0 10.96.0.100 10.96.0.21 4789 192.168.3.21 vpc2
注意:
对端 IDC 交换机也需配置对应的 VTEP 隧道端点(VNI=2002),隧道才能建立。
4. 配置大二层路由。
为新子网添加 VM 明细路由和 IDC 网段路由。
./l2gw_ipaddr.sh add_vm vpc2 2002 192.168.3.10
./l2gw_ipaddr.sh add_idc_subnet vpc2 2002 192.168.3.0/24
5. 更新 Keepalived 配置。
将新 HAVIP(如 192.168.3.100 dev vpc2)添加至 virtual_ipaddress 配置块中,修改前请先备份配置文件,随后执行 ./l2gw_reload.sh 在线生效,无需重启 Keepalived。
6. 配置 VPC 路由。
VPC 侧配置子网路由,将 VM 流量引流到 L2GW(下一跳指向新 HAVIP)。可使用 32 位明细路由逐条添加每个 VM,也可使用网段路由将整个子网指向 HAVIP。
验证:在新子网中创建 VM,从 IDC 侧 ping 该 VM 应能连通。

删除大二层子网

下线一个大二层子网时按以下步骤在线缩容,顺序为新增流程的逆序。
前置条件:该子网内的所有 VM 和 IDC 服务器已迁移或下线。
1. 删除 VPC 路由和 LGW 引流路由。
先在 VPC 侧删除指向 L2GW 的子网路由(明细路由或网段路由),并删除 LGW 引流路由(如有)。
2. 更新 Keepalived 配置。
从 virtual_ipaddress 配置块中移除该子网的 HAVIP(如 192.168.3.100 dev vpc2),随后执行 ./l2gw_reload.sh 在线生效。
3. 删除 VXLAN 隧道。
./l2gw_subnet.sh del 2002 idc0 10.96.0.100 vpc2
同步清理对端 IDC 交换机上对应的 VTEP 隧道端点。
4. 删除网卡。
./l2gw_install_interface.sh del vpc 2
5. 解绑并删除资源。
VPC 侧解绑弹性网卡,删除该子网的 HAVIP。
注意:
Keepalived VRRP 心跳所使用的 Underlay 网卡 idc0 及其 HAVIP 不可解绑或删除,需长期保留。

CVM 重启恢复流程

L2GW CVM 重启后,网络配置会丢失(业务不受影响,因为主备切换):
机器重启
│
├── 步骤1:逐行执行 l2gw_history_cmd.log 中的命令(恢复网络配置)
│
└── 步骤2:执行 ./l2gw_online.sh(上线网关 + 启动 keepalived) ← 不可遗漏!
具体操作:
cd /data/l2gw

# 1. 查看历史命令
cat l2gw_history_cmd.log

# 3. 上线
./l2gw_online.sh
注意:
关键提醒:只恢复配置而不执行上线脚本,L2GW 不会正常工作!l2gw_online.sh 步骤不可遗漏。

监控建议

监控项
指标
告警阈值
L2GW CVM 状态
CVM 运行状态
异常关机
Keepalived 主备状态
VRRP 角色
主备切换告警
网络连通性
ping 云上 CVM/IDC CVM
连续 3 次丢包
VXLAN 隧道状态
隧道接口 UP/DOWN
接口 DOWN
弹性网卡
网卡绑定状态
解绑告警
带宽利用率
出+入带宽
大于 80% 预警
HAVIP 绑定状态
浮动 IP 归属
HAVIP 漂移告警

腾讯云官网常见问题

专线接入相关问题

问题1:专线接入与普通公网 VPN 有何区别?

专线接入提供的是专用的物理网络连接,与公网完全隔离。相比 VPN:
专线:低时延(< 5ms 同城)、高带宽(最高 100 Gbps)、高安全性(独占链路)。
VPN:依赖公网,时延和带宽不稳定,适合对网络质量要求不高的场景。

问题2:专线接入是否支持链路聚合(LACP)?

目前腾讯云暂不支持 LACP 链路聚合控制协议。如需更高带宽,可采用多条物理专线做负载均衡。
参考:专线接入 FAQ

问题3:专线两端是否必须使用同一个子网掩码?

是。专线两端配置的互联 IP 地址必须属于同一个子网,并配置相同的子网掩码,且两端 IP 地址必须唯一,不能有 IP 地址复用的情况。

问题4:如何实现专线的主备冗余?

两种方案:
1. 双专线接入备份:通过配置 BFD 实现静态路由故障切换,或使用 BGP 路由自动收敛。
2. 专线 + VPN 主备:专线作为主链路,VPN 作为备用链路,通过 VPC 路由优先级实现自动切换。

VPC 与网络相关

问题1:VPC 子网路由表如何指向 L2GW 的 HAVIP?

通过 VPC 路由表配置目的网段,下一跳类型为 HAVIP。现网已支持子网路由表下一跳 HAVIP 时,目的网段与 VPC CIDR/子网 CIDR 重叠场景。

问题2:什么是弹性网卡?有什么限制?

弹性网卡(ENI)是跨账号共享的弹性网卡,允许一个账号的 CVM 绑定另一个账号 VPC 子网中的网卡。在 L2GW 场景中,用于管理账号的 L2GW CVM 访问用户账号的 VPC 资源。
使用限制:一个 CVM 可绑定多个弹性网卡,具体数量取决于 CVM 规格。
参考:弹性网卡概述

问题3:专线通道不支持 VLAN 标签怎么办?

若专线服务商只提供一个 VLAN 的物理专线,需要访问云上多个 VPC 时,可使用云联网(CCN)产品实现一个物理专线对接多个 VPC。
参考:专线接入 FAQ

L2GW 相关常见问题

问题1:L2GW CVM 重启后为什么要重新执行配置?

L2GW CVM 的网络配置(ETH 接口初始化、VXLAN 隧道、IP 路由等)存储在内存中,CVM 重启后会丢失。但业务不受影响——因为 L2GW 为主备模式,备用 L2GW 会接管流量。
重启后恢复步骤:
1. 按 l2gw_history_cmd.log 中记录的命令逐行恢复配置。
2. 执行 ./l2gw_online.sh 上线。

问题2:为什么 VRRP 心跳网卡不能删除?

VRRP 心跳网卡(即 idc0)用于 L2GW 主备之间的 VRRP 协议通信。如果该网卡被删除,主备之间将无法检测对方存活状态,可能导致脑裂(两台 L2GW 同时持有 HAVIP),造成网络环路或丢包。

故障排查类

问题1: 维护边界

L2GW 本质上是以 CVM(云服务器)为载体部署的二层网关软件,其运行环境(操作系统、系统配置、网络参数、Keepalived 高可用等)部署于客户的云账号之下。因此,L2GW 的日常维护、监控、故障恢复、配置变更等运维工作均由客户侧运维团队负责。
误区
实际情况
L2GW 是腾讯云提供的托管服务
L2GW 是部署方案而非托管服务。腾讯云提供部署指导与脚本工具,运维由客户负责。
腾讯云会监控 L2GW 运行状态
腾讯云只监控基础设施层面(物理专线、专线/LGW 设备),不监控 L2GW CVM 内的 Keepalived、VXLAN 隧道、业务路由等。
腾讯云负责 L2GW 的版本升级
L2GW 部署包升级由客户侧运维团队操作,腾讯云提供新版本部署包和技术指导。
L2GW 出现问题时可以提工单让腾讯云修复
腾讯云支持范围是基础设施和产品缺陷。L2GW 配置层面的问题(如路由配错、Keepalived 配置异常)属于客户运维范畴。

问题2:专线压测结果不符合预期怎么办?

排查步骤:
1. 确认购买的专线带宽是否满足预期。
2. 测试互联 IP ping 是否丢包,若丢包严重联系腾讯云售后或向运营商报障。
3. 检查本地专线路由器双工模式是否为全双工。
4. 使用 iperf 等多进程并发压测,排除应用程序问题。
参考:专线接入 FAQ

问题3:专线特定网段 ping 不通怎么办?

排查步骤:
1. 确认是否为新启用网段(新网段需云端配置路由)。
2. 排查云上路由表是否有指向专线网关的对应路由。
3. 确认云上安全组、网络 ACL 是否放行流量。
4. 确认客户端 iptables 是否有拦截规则。
5. 排查 IDC 侧是否有 MAC 地址学习异常。

问题4:专线中断后如何处理?

1. 确认中断方式:ping 互联 IP 是否可达,能否收到对端 MAC 地址。
2. 专线拥有者为腾讯云:联系腾讯云售后服务团队(系统会自动收到告警并报障运营商)。
3. 专线拥有者为用户:由用户向运营商报障,必要时请腾讯云配合排查。
参考:专线接入 FAQ

故障排查指南

常见故障速查表

故障现象
可能原因
排查方法
解决方案
云上云下不通
VXLAN 隧道异常
检查 VXLAN 隧道接口状态
重建 VXLAN 隧道
主备频繁切换
VRRP 心跳不稳定
检查 idc0 网卡状态和网络延迟
优化网络链路或调整 VRRP 超时参数
部分 IP 不通
路由配置遗漏
对比 l2gw_history_cmd.log
添加缺失的 IP 路由
HAVIP 漂移异常
Keepalived 配置错误
检查 virtual_ipaddress 配置
修正并执行 l2gw_reload.sh
重启后业务不通
忘记执行上线脚本
检查 keepalived 进程状态
执行 ./l2gw_online.sh

日志查看指南

日志文件
内容
用途
/data/l2gw/l2gw_history_cmd.log
历史配置命令
重启后恢复配置的参考
/var/log/keepalived.log
Keepalived 主备切换日志
排查 VRRP 相关故障
/var/log/messages
系统日志
排查网卡、内核异常

日常巡检 Checklist

检查 L2GW CVM 运行状态(每台)。
检查 Keepalived 主备状态。
验证 HAVIP 绑定在正确的 L2GW 上。
ping 测试云上云下各 CVM 连通性。
检查 VXLAN 隧道接口状态。
检查弹性网卡绑定状态。
监控带宽利用率,是否超过 80%。
验证 l2gw_history_cmd.log 文件完整性。
确认 rc.local 中初始化脚本有效。





帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈