配置IP版本亲和转发

更新时间:
复制 MD 格式

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后端,避免跨协议转发导致的业务异常。当某一协议的所有后端健康检查失败时,该协议的请求在同协议后端内尽力转发,不会跨协议转发。

image

适用范围

用户已注册自定义域名。本文计划将ALB实例部署于华东2(上海)地域,因此域名需要完成ICP备案

操作步骤

在开始操作前,请确保已在华东2(上海)地域创建一个专有网络VPC1,分别在可用区E和可用区G创建交换机VSW1VSW2,且交换机已开启IPv6

1. 创建ECS实例并部署服务

  1. 参考下表配置,创建两台ECS实例。

    实例名称

    地域

    VPC

    交换机

    IP版本

    镜像

    ecs-ipv4

    华东2(上海)

    VPC1

    VSW1

    IPv4

    Alibaba Cloud Linux 3.2104 LTS 64

    ecs-ipv6

    VSW2

    IPv6

    购买ECS实例时,在网络与安全组配置项下勾选免费分配 IPv6 地址
  2. 远程连接ecs-ipv4ecs-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.html

    ecs-ipv6

    sudo yum install -y nginx
    sudo systemctl start nginx
    echo "Hello from IPv6 backend" | sudo tee /usr/share/nginx/html/index.html
  3. 在两台ECS实例所属安全组添加入方向规则,放行请求流量。请确保规则具备足够高的优先级。

    实例名称

    授权策略

    协议

    访问来源

    访问目的(本实例)

    ecs-ipv4

    允许

    自定义TCP

    选择IPv4后,选择VPC网段

    选择端口后,选择HTTP(80)

    ecs-ipv6

    选择IPv6后,选择VPC网段

    相关操作,可参考自定义购买实例ECS远程连接操作指南配置安全组规则

2. 创建双栈ALB实例

  1. 登录ALB控制台,选择华东2(上海)地域,单击创建应用型负载均衡

  2. 完成以下配置,其他选项保持默认,单击立即购买

    • 实例网络类型:选择公网

    • VPC:选择VPC1

    • 可用区:选择可用区E和可用区G及对应交换机VSW1VSW2,并自动分配公网IP

    • 协议版本:选择双栈

    • 功能版本(实例费):选择标准版

      IP版本亲和模式仅支持标准版和WAF增强版ALB实例,基础版和扩展版暂不支持。
  3. 创建完成后,单击实例ID进入实例详情页。在基本信息区域找到网络类型,单击IPv6:私网右侧的变更网络类型。在弹出的窗口单击确定变更,并确认变更成功。

3. 创建双栈服务器组并开启亲和模式

  1. 服务器组控制台,单击创建服务器组

  2. 完成以下配置,单击创建

    • 服务器组类型 :选择服务器类型

      IP版本亲和模式仅支持服务器类型和IP类型服务器组,其他类型暂不支持。
    • 服务器组名称:输入名称sgp-alb-dualstack

    • VPC:选择VPC1

    • 选择后端协议:选择HTTP

    • 展开高级配置,完成以下配置:

      • IP协议版本:选择IPv4/v6双栈。选择后支持同时添加IPv4IPv6后端服务器。

      • IP版本亲和模式:选择亲和模式。开启后,IPv4请求仅转发至IPv4后端,IPv6请求仅转发至IPv6后端。

  3. 单击服务器组创建成功弹窗中的添加后端服务器。在IP地址列为ecs-ipv4选择IPv4地址,为ecs-ipv6选择IPv6地址。选中两台实例,单击下一步

  4. 配置端口和权重步骤中,将两台服务器的端口均设置为80,单击确定完成添加。

4. 创建监听

  1. ALB控制台,单击目标实例ID进入实例详情页。在监听页签单击创建监听

  2. 配置监听步骤,选择监听协议 HTTP 监听端口 填写80 ,单击下一步

    本文以HTTP监听为例演示亲和转发能力,生产环境中建议使用HTTPS监听
  3. 选择服务器组步骤,选择服务器组sgp-alb-dualstack,单击下一步

  4. 配置审核步骤确认配置,单击提交

5. 设置域名解析

将自有域名通过CNAME解析指向ALB实例的DNS名称,客户端通过自有域名访问ALB。

本文以阿里云云解析DNS为例,对于非阿里云注册域名,需先将域名添加到云解析控制台

  1. ALB控制台,复制目标实例的DNS 名称

  2. 登录域名解析控制台,在目标域名的操作列单击解析设置。在解析设置页面单击添加记录

  3. 参考以下信息添加CNAME记录,单击确定

    • 记录类型:选择CNAME

    • 主机记录:输入域名前缀如test。假设用户自有根域名为example.com,则访问ALB的域名为test.example.com

    • 解析请求来源TTL时间:保持默认。

    • 记录值:输入ALB实例的DNS名称。

  4. 在弹出的解析变更确认对话框确认解析信息,单击确定

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

验证亲和隔离

  1. 停止ecs-ipv4Nginx服务:sudo systemctl stop nginx

  2. 再次测试IPv4请求。请求将失败,不会被转发至IPv6后端ecs-ipv6

  3. 恢复ecs-ipv4服务:sudo systemctl start nginx。IPv4请求恢复正常。

更多信息

计费说明

  • ALB实例:ALB支持按量付费(后付费)和资源包(预付费)两种付费方式,详情参考ALB计费规则

  • ECS实例:详见ECS计费概述。若出于测试目的创建ECS,建议创建低规格的按量付费实例并及时释放。

  • 域名和DNS解析费用:除了需要支付域名供应商的域名费用外,在阿里云配置DNS解析需要支付公网权威解析费用

  • 公网网络费用:需要为ALB实例绑定的公网IP和实例所在VPCIPv6公网带宽支付费用。

ALB双栈支持的地域

区域

地域

中国

华东1(杭州)、华东2(上海)、华南1(深圳)、华南2(河源)、西南1(成都)、华北1(青岛)、华北2(北京)、华北3(张家口)、华北6(乌兰察布)、中国香港、华南3(广州)

亚太

新加坡、马来西亚(吉隆坡)、日本(东京)、印度尼西亚(雅加达)、韩国(首尔)、菲律宾(马尼拉)、泰国(曼谷)

欧洲与美洲

英国(伦敦)、德国(法兰克福)、美国(弗吉尼亚)、美国(硅谷)、墨西哥

中东

沙特(利雅得)- 合作伙伴运营

应用于生产环境

  • 高可用部署:后端服务器应部署在多个可用区,IPv4IPv6后端均需保证冗余,避免单点故障。

  • 健康检查配置:根据业务特点调整健康检查间隔、超时时间和阈值,确保故障服务器能被及时摘除。

常见问题

开启亲和模式后,IPv4请求会转发到IPv6后端吗?

不会。开启亲和模式后,IPv4请求仅转发至IPv4后端,IPv6请求仅转发至IPv6后端,不会跨协议转发。

如果服务器组内只有IPv4后端,IPv6请求会如何处理?

未开启亲和模式时,ALB支持将IPv6请求转换成IPv4并发给后端;开启亲和模式后,IPv6请求将无法正常转发。该场景下请确保ALB服务器组同时包含健康的IPv4IPv6后端。

已创建的服务器组可以修改IP协议版本吗?

不支持。服务器组的IP协议版本IPv4IPv4/v6双栈)创建后不可修改,如需变更需删除服务器组后重新创建。

已创建的服务器组可以修改IP版本亲和模式吗?

可以。可在服务器组控制台单击目标双栈服务器组操作 列的编辑基本信息 进行修改。

仅创建时IP协议版本选择为IPv4/v6双栈的服务器组支持修改IP版本亲和模式

双栈服务器组可以关联到IPv4类型的ALB实例吗?

不可以。双栈服务器组仅支持关联至双栈ALB实例的监听。