应用型负载均衡ALB(Application Load Balancer)支持转发IPv6网络请求,本文指导您如何为双栈ALB实例开启IPv6挂载,即ALB实例同时支持挂载IPv4和IPv6的云服务器ECS(Elastic Compute Service),使IPv6网络的客户端请求通过ALB可以访问部署在后端的IPv4和IPv6服务。
场景示例
本文以下图场景为例。某公司希望ALB可以转发来自IPv6客户端的请求,以实现IPv6客户端使用公网正常访问VPC中的IPv4和IPv6服务。该公司需要创建具有IPv4和IPv6地址的ECS,同时需要在VPC中创建双栈ALB实例并创建具有IPv6挂载功能的服务器组。完成上述配置后,IPv6客户端的请求即可通过ALB访问部署在后端ECS上的IPv4和IPv6服务。
使用限制
双栈支持的地域,请参见ALB双栈支持的地域。
使用双栈功能,需要开通VPC可用区中交换机的IPv6功能。
双栈ALB实例支持将IPv4和IPv6的客户端流量转发至IPv4、IPv6的后端服务。
双栈ALB实例将IPv6的客户端流量转发至IPv4的后端服务时,后端服务支持服务器类型(ECS、ENI、ECI)、IP类型,不支持函数计算类型。
双栈ALB实例将IPv6的客户端流量转发至IPv6的后端服务时,后端服务支持服务器类型(ECS、ENI、ECI),不支持IP类型、函数计算类型。
不支持已有的IPv4实例升级为双栈实例,仅支持新建双栈实例。
IPv4类型的ALB实例在创建监听时,无法添加开启了IPv6挂载功能的服务器组。
前提条件
您已在华东2(上海)地域创建了一个VPC,并将该VPC名称修改为VPC1,且该VPC已开通了IPv6功能。开通IPv6功能后,系统会为您默认创建一个IPv6网关,您需要确保该IPv6网关已开通公网带宽。
关于如何为VPC开通IPv6功能,请参见新建IPv4和IPv6双栈VPC。
关于如何开通IPv6公网带宽,请参见开通和管理IPv6公网带宽。
您已在华东2(上海)地域的可用区E和可用区G分别创建了一个交换机,并将可用区E的交换机名称修改为交换机1,将可用区G的交换机名称修改为交换机2,且交换机2已开通IPv6功能。具体操作,请参见新建IPv4/IPv6双栈交换机。
配置步骤
步骤一:创建并配置ECS实例
- 登录专有网络管理控制台。
在左侧导航栏,单击交换机。
选择交换机的地域,本文选择华东2(上海)。
在交换机页面,找到目标交换机,然后在操作列选择 。
在云服务器ECS购买页面的自定义购买页签下,创建2台ECS实例,并将IPv4 ECS修改实例名称为ECS01,将IPv6 ECS修改实例名称为ECS02,两台ECS实例绑定的安全组均需要放行80端口。具体操作,请参见自定义购买实例。
远程登录ECS01和ECS02实例,具体操作,请参见ECS远程连接操作指南。
在ECS01中执行如下命令,部署Nginx服务。
yum install -y nginx systemctl start nginx.service cd /usr/share/nginx/html/ echo "Hello World ! this is ipv4 rs." > index.html
在ECS02中执行如下命令,部署Nginx服务。
yum install -y nginx systemctl start nginx.service cd /usr/share/nginx/html/ echo "Hello World ! this is ipv6 rs." > index.html
配置ECS02实例的IPv6地址。
说明如果您的ECS02实例创建时已在IPv6处选中免费分配IPv6地址,可忽略此步骤。
本文以手动配置ECS02的IPv6地址为例进行配置说明。关于配置IPv6地址的更多操作,请参见为Linux实例配置 IPv6 地址。
执行
vi /etc/sysconfig/network-scripts/ifcfg-eth0
命令打开网卡配置文件,eth0为网卡标识符,您需要修改成实际的标识符。在文件中根据实际信息添加以下配置:DHCPV6C=yes IPV6INIT=yes
修改完成后按Esc键,并输入:wq后按下回车键,保存并退出。
重启实例。
reboot
重启完成后,检查ECS02实例是否已开启IPv6服务。
执行
ip addr | grep inet6
或者ifconfig | grep inet6
命令:如果返回inet6相关内容,表示实例已成功开启IPv6服务。
如果未返回inet6相关内容,表示实例未开启IPv6服务。
下图表示ECS02实例已开启IPv6服务。
步骤二:ECS02配置IPv6安全组规则
您需要为ECS02实例配置IPv6安全组规则,使安全组入方向能够允许接受IPv6客户端发送的请求。
登录ECS管理控制台。
在左侧导航栏,选择 。
在顶部菜单栏处,选择目标安全组的地域。本文选择华东2(上海)。
在安全组页面,找到目标安全组,在操作列单击管理规则。
单击安全组详情页面,然后在访问规则区域,单击入方向页签。
单击手动添加,在规则列表中根据以下信息配置IPv6安全组规则,然后在操作列单击保存。
参数
描述
授权策略
设置是否允许安全组的授权策略。本文选择允许。
优先级
设置安全组的优先级。优先级的数值越小,优先级越高。取值范围:1~100。
本文保持默认值1。
协议类型
允许入方向放行的安全组的协议类型。本文选择全部ICMP(IPv6)。
端口范围
允许入方向放行的安全组的端口范围。
协议类型选择全部ICMP(IPv6)时,端口范围的目的端口只能设置为-1/-1且不能修改。
授权对象
输入授权的IPv6地址段。
本文输入::/0,表示授权所有IPv6地址。
说明本文配置的授权对象仅为示例,您可以根据需要放行指定的IPv6网段。
描述
自定义描述信息。
步骤三:创建ALB实例
- 登录应用型负载均衡ALB控制台。
在实例页面,单击创建应用型负载均衡。
在购买页面,完成以下配置,然后单击立即购买并根据控制台提示完成实例开通。
此处仅列出和本文强相关的配置项,其他未列出的配置项使用默认值。关于参数的更多信息,请参见创建实例。
参数
描述
地域
选择实例所属的地域。本文选择华东2(上海)。
实例网络类型
选择实例网络类型,系统会根据您的选择分配私网或公网服务地址。本文选择公网。
说明实例网络类型选择公网类型只作用于IPv4,IPv6默认是私网类型。本文使用IPv6的公网类型,需执行步骤4变更IPv6的网络类型为公网类型。
VPC
选择实例所属的VPC。
说明请确保该VPC开启了IPv6功能。
可用区
选择至少2个可用区。本文选择上海 可用区E,上海 可用区G。
分别在所选可用区内选择交换机。本文选择可用区E下的交换机1和可用区G下的交换机2。
IP模式
选择实例的IP地址模式。本文选择固定IP。
协议版本
选择实例的IP协议版本。本文选择双栈。
功能版本(实例费)
选择实例的功能版本。本文选择标准版。
实例名称
输入自定义实例名称。
服务关联角色
首次创建应用型负载均衡实例时,需要单击创建服务关联角色,创建一个名称为AliyunServiceRoleForAlb的服务关联角色。系统会为该角色添加名称为AliyunServiceRolePolicyForAlb的权限策略,授予ALB拥有访问其他云产品实例的权限。更多操作,请参见应用型负载均衡ALB系统权限策略参考。
创建完公网双栈ALB实例后,本文需要使用公网IPv6地址,请执行以下步骤将ALB实例的IPv6地址变更为公网地址。更多信息,请参见协议版本。
返回实例页面,找到目标ALB实例,单击实例ID。
在实例详情页签的基本信息区域,找到网络类型,然后在IPv6:私网的右侧单击变更网络类型。
在变更网络类型对话框中单击确定变更。
变更成功后,您可以看到IPv6的网络类型变成了公网。
步骤四:创建服务器组
在左侧导航栏,选择 。
在服务器组页面,单击创建服务器组。
在创建服务器组对话框中,完成以下配置,然后单击创建。
此处仅列出和本文强相关的配置项,其他未列出的配置项使用默认值。关于参数的更多信息,请参见创建服务器组。
参数
描述
服务器组类型
选择一种服务器组类型。本文选择服务器类型。
服务器组名称
输入自定义服务器组名称。
VPC
从VPC下拉列表中选择已创建的VPC,只有该VPC下的服务器可以加入到该服务器组。
说明确保您选择的VPC开启了IPv6功能,且与创建ALB实例时选择的VPC相同。
选择后端协议
选择一种后端协议。本文选择HTTP。
选择调度算法
选择一种调度算法。本文选择加权轮询。
IPv6挂载
选择是否开启IPv6挂载功能。本文只支持选择开启IPv6挂载功能。
会话保持
开启或关闭会话保持。本文保持默认值即不开启会话保持。
开启健康检查
开启或关闭健康检查。本文开启。
健康检查配置
开启健康检查后,您可以单击后面的编辑,展开进行更多配置。
在服务器组页面,找到目标服务器组,然后单击目标服务器组ID。
单击后端服务器页签,然后单击添加后端服务器。
在添加后端服务器面板,选择已创建的ECS01和ECS02实例,在IP地址列选择ECS01实例的IPv4地址,选择ECS02实例的IPv6地址,然后单击下一步。
在配置端口和权重配置向导,设置ECS01和ECS02实例的端口和权重,然后单击确定。
本文ECS实例端口配置为80,权重为默认值100。
步骤五:配置监听
在实例页面,找到目标实例,单击实例ID。
单击监听页签,然后单击创建监听。
在配置监听配置向导,完成以下配置,然后单击下一步。
此处仅列出和本文强相关的配置项,其他未列出的配置项使用默认值。关于配置监听的更多操作,请参见添加HTTP监听。
参数
描述
选择监听协议
选择监听的协议类型。本文选择HTTP。
监听端口
用来接收请求并向后端服务器进行请求转发的监听端口。本文输入80。
监听名称
输入自定义监听名称。
高级配置
本文保持默认,可单击修改进行设置。
在选择服务器组配置向导,选择服务器类型及服务器类型下的目标服务器组,查看后端服务器信息,然后单击下一步。
在配置审核配置向导,确认配置信息,然后单击提交。
单击知道了返回监听页签,查看目标监听的健康检查状态列为正常时,表示后端服务器ECS01和ECS02实例可以正常处理ALB实例转发的请求。
(可选)步骤六:设置域名解析
在左侧导航栏,选择
在实例页面,复制已创建的ALB实例的DNS名称。
执行以下步骤添加CNAME解析记录。
登录域名解析控制台。
在域名解析页面单击添加域名。
在添加域名对话框中输入您的主机域名,然后单击确认。
重要您的主机域名需已完成TXT记录验证。
在目标域名的操作列单击解析设置。
在解析设置页面,单击添加记录。
在添加记录面板,配置以下信息完成CNAME解析配置,然后单击确认。
配置
说明
记录类型
在下拉列表中选择CNAME。
主机记录
您的域名的前缀。本文输入@。
说明创建域名为根域名时,主机记录为
@
。解析请求来源
选择默认。
记录值
输入域名对应的CNAME地址,即您复制的ALB实例的DNS名称。
TTL
全称Time To Live,表示DNS记录在DNS服务器上的缓存时间,本文使用默认值。
步骤七:测试连通性
获取访问地址:
如果您设置了域名解析,使用自有域名通过CNAME域名解析的方式解析到ALB实例的公网服务域名,则访问地址为您的自有域名。
如果您未使用自有域名,可登录应用型负载均衡ALB控制台,顶部选择实例所属地域,在目标ALB实例DNS名称列复制ALB实例的公网服务域名,作为访问地址。
您可以通过以下操作测试IPv6客户端的终端与VPC中的ECS实例之间的连通性。
说明测试连通性时,请确保您的客户端已支持IPv6功能,您可以在浏览器地址栏输入网址
http://test-ipv6.com/
测试您的客户端是否支持IPv6功能。以任意一台可以访问IPv6客户端的终端为例,测试IPv6客户端与VPC中ECS01和ECS02的连通性。
打开终端的cmd窗口。
多次执行以下命令,测试IPv6客户端是否可以通过ALB以轮询的方式访问IPv4 ECS以及IPv6 ECS。
curl -6 http://<ALB域名> -v
如果收到如下所示的回复报文,则表示IPv6客户端可以访问IPv4 ECS。
如果收到如下所示的回复报文,则表示IPv6客户端可以访问IPv6 ECS。
完成上述操作后,表明IPv6客户端可以通过ALB以轮询的方式访问VPC中部署的IPv4服务和IPv6服务。
释放资源
清理ECS、安全组等资源:
删除ECS01实例及其安全组:
登录云服务器ECS实例控制台,顶部选择实例所属地域,单击ECS01实例右侧的,弹出的窗口中选择释放,立即释放实例并确认。
登录云服务器ECS安全组控制台,顶部选择实例所属地域,勾选ECS01自定义安全组并单击删除,删除安全组。
参照上述步骤,删除ECS02实例及对应安全组资源。
(可选)删除域名解析记录:
删除域名解析记录,具体操作,请参见删除域名解析记录。
清理ALB资源:
登录应用型负载均衡ALB控制台。顶部选择实例所属地域,单击目标实例右侧的,弹出的窗口中选择释放并确认。
移除后端服务器,具体操作,请参见移除后端服务器。
删除服务器组,具体操作,请参见删除服务器组。
清理VPC资源:
登录专有网络VPC控制台,顶部选择实例所属地域。
单击实例右侧删除,删除时勾选强制删除,完成VPC与交换机资源的删除。