配置IP版本亲和转发
ALB双栈实例支持IP版本亲和模式,开启后可将IPv4请求转发至IPv4后端服务器、IPv6请求转发至IPv6后端服务器,实现按IP协议版本的流量调度,简化网络架构。
方案架构
问题场景
在业务从 IPv4 向 IPv6 迁移的过程中,IPv4 与 IPv6 服务常常需要共存。当目标服务器组中同时包含 IPv4 和 IPv6 地址的后端服务器时,ALB 默认不区分客户端请求的 IP 协议版本,而是仅依据调度算法(如加权轮询或加权最小连接数)向后端转发流量。
这可能导致跨协议转发现象——例如,来自 IPv6 客户端的请求被转发到仅支持 IPv4 的后端服务器,或反之。此类协议不匹配会引发以下问题:
-
后端应用仅监听特定协议版本的地址,收到跨协议转发的请求后无法正常处理,导致业务中断。
-
部分业务需要根据客户端IP协议版本进行差异化处理(如按协议版本分流、IPv6优先路由等),混合转发无法满足此类需求。
解决方案
ALB服务器组支持IP版本亲和模式,开启后IPv4请求仅转发至IPv4后端,IPv6请求仅转发至IPv6后端,避免跨协议转发导致的业务异常。当某一协议的所有后端健康检查失败时,该协议的请求在同协议后端内尽力转发,不会跨协议转发。
适用范围
操作步骤
在开始操作前,请确保已在华东2(上海)地域创建一个专有网络VPC1,分别在可用区E和可用区G创建交换机VSW1和VSW2,且交换机已开启IPv6。
1. 创建ECS实例并部署服务
-
参考下表配置,创建两台ECS实例。
实例名称
地域
VPC
交换机
IP版本
镜像
ecs-ipv4
华东2(上海)
VPC1VSW1IPv4
Alibaba Cloud Linux 3.2104 LTS 64位
ecs-ipv6
VSW2IPv6
购买ECS实例时,在网络与安全组配置项下勾选免费分配 IPv6 地址。
-
远程连接
ecs-ipv4和ecs-ipv6,执行以下命令,部署Nginx服务。ecs-ipv4
sudo yum install -y nginx sudo systemctl start nginx echo "Hello from IPv4 backend" | sudo tee /usr/share/nginx/html/index.htmlecs-ipv6
sudo yum install -y nginx sudo systemctl start nginx echo "Hello from IPv6 backend" | sudo tee /usr/share/nginx/html/index.html -
在两台ECS实例所属安全组添加入方向规则,放行请求流量。请确保规则具备足够高的优先级。
实例名称
授权策略
协议
访问来源
访问目的(本实例)
ecs-ipv4
允许
自定义TCP
选择
IPv4后,选择本VPC网段。选择
端口后,选择HTTP(80)。ecs-ipv6
选择
IPv6后,选择本VPC网段。相关操作,可参考自定义购买实例、ECS远程连接操作指南、配置安全组规则。
2. 创建双栈ALB实例
-
登录ALB控制台,选择华东2(上海)地域,单击创建应用型负载均衡。
-
完成以下配置,其他选项保持默认,单击立即购买:
-
实例网络类型:选择公网。
-
VPC:选择
VPC1。 -
可用区:选择可用区E和可用区G及对应交换机
VSW1和VSW2,并自动分配公网IP。 -
协议版本:选择双栈。
-
功能版本(实例费):选择标准版。
IP版本亲和模式仅支持标准版和WAF增强版ALB实例,基础版和扩展版暂不支持。
-
-
创建完成后,单击实例ID进入实例详情页。在基本信息区域找到网络类型,单击IPv6:私网右侧的变更网络类型。在弹出的窗口单击确定变更,并确认变更成功。
3. 创建双栈服务器组并开启亲和模式
-
在服务器组控制台,单击创建服务器组。
-
完成以下配置,单击创建:
-
服务器组类型 :选择服务器类型 。
IP版本亲和模式仅支持服务器类型和IP类型服务器组,其他类型暂不支持。
-
服务器组名称:输入名称
sgp-alb-dualstack。 -
VPC:选择
VPC1。 -
选择后端协议:选择HTTP。
-
展开高级配置,完成以下配置:
-
IP协议版本:选择IPv4/v6双栈。选择后支持同时添加IPv4和IPv6后端服务器。
-
IP版本亲和模式:选择亲和模式。开启后,IPv4请求仅转发至IPv4后端,IPv6请求仅转发至IPv6后端。
-
-
-
单击服务器组创建成功弹窗中的添加后端服务器。在IP地址列为
ecs-ipv4选择IPv4地址,为ecs-ipv6选择IPv6地址。选中两台实例,单击下一步。 -
在配置端口和权重步骤中,将两台服务器的端口均设置为
80,单击确定完成添加。
4. 创建监听
5. 设置域名解析
将自有域名通过CNAME解析指向ALB实例的DNS名称,客户端通过自有域名访问ALB。
本文以阿里云云解析DNS为例,对于非阿里云注册域名,需先将域名添加到云解析控制台。
6. 验证亲和转发
用户通过自有域名访问具备IPv6公网能力的双栈ALB实例时,DNS服务器将根据客户端的查询类型返回A记录(IPv4地址)或AAAA记录(IPv6地址)。
测试IPv4请求
curl -4 http://test.example.com
多次请求,返回结果应均为Hello from IPv4 backend,表明IPv4请求被转发至IPv4后端ecs-ipv4。
测试IPv6请求
curl -6 http://test.example.com
多次请求,返回结果应均为Hello from IPv6 backend,表明IPv6请求被转发至IPv6后端ecs-ipv6。
验证亲和隔离
-
停止
ecs-ipv4的Nginx服务:sudo systemctl stop nginx。 -
再次测试IPv4请求。请求将失败,不会被转发至IPv6后端
ecs-ipv6。 -
恢复
ecs-ipv4服务:sudo systemctl start nginx。IPv4请求恢复正常。
更多信息
计费说明
ALB双栈支持的地域
|
区域 |
地域 |
|
中国 |
华东1(杭州)、华东2(上海)、华南1(深圳)、华南2(河源)、西南1(成都)、华北1(青岛)、华北2(北京)、华北3(张家口)、华北6(乌兰察布)、中国香港、华南3(广州) |
|
亚太 |
新加坡、马来西亚(吉隆坡)、日本(东京)、印度尼西亚(雅加达)、韩国(首尔)、菲律宾(马尼拉)、泰国(曼谷) |
|
欧洲与美洲 |
英国(伦敦)、德国(法兰克福)、美国(弗吉尼亚)、美国(硅谷)、墨西哥 |
|
中东 |
沙特(利雅得)- 合作伙伴运营 |
应用于生产环境
-
高可用部署:后端服务器应部署在多个可用区,IPv4和IPv6后端均需保证冗余,避免单点故障。
-
健康检查配置:根据业务特点调整健康检查间隔、超时时间和阈值,确保故障服务器能被及时摘除。
常见问题
开启亲和模式后,IPv4请求会转发到IPv6后端吗?
不会。开启亲和模式后,IPv4请求仅转发至IPv4后端,IPv6请求仅转发至IPv6后端,不会跨协议转发。
如果服务器组内只有IPv4后端,IPv6请求会如何处理?
未开启亲和模式时,ALB支持将IPv6请求转换成IPv4并发给后端;开启亲和模式后,IPv6请求将无法正常转发。该场景下请确保ALB服务器组同时包含健康的IPv4和IPv6后端。
已创建的服务器组可以修改IP协议版本吗?
不支持。服务器组的IP协议版本(IPv4或IPv4/v6双栈)创建后不可修改,如需变更需删除服务器组后重新创建。
已创建的服务器组可以修改IP版本亲和模式吗?
可以。可在服务器组控制台单击目标双栈服务器组操作 列的编辑基本信息 进行修改。
仅创建时IP协议版本选择为IPv4/v6双栈的服务器组支持修改IP版本亲和模式。
双栈服务器组可以关联到IPv4类型的ALB实例吗?
不可以。双栈服务器组仅支持关联至双栈ALB实例的监听。