跨账号VPC间的私网访问服务

如果您需要将一个VPC内部署的服务资源共享给其他账号下的VPC访问,您可以通过PrivateLink建立2个VPC之间的网络连接,来实现跨账号跨VPC私网访问服务资源。本文以CLB为例,介绍如何实现跨账号跨VPC私网访问CLB。

背景信息

VPC是您独自拥有的云上私有网络,不同VPC之间完全隔离。您可以通过私网连接建立VPC与阿里云服务之间安全稳定的私有连接,简化网络架构,避免通过公网访问服务带来的潜在安全风险。

通过私网连接实现私网访问,您需要创建终端节点服务和终端节点。

  • 终端节点服务

    终端节点服务可以与其他VPC的终端节点建立私网连接服务,由服务提供方创建和管理。

  • 终端节点

    终端节点可以与终端节点服务相关联,以建立通过VPC私网访问外部服务的网络连接。终端节点由服务使用方创建和管理。

相关主体

相关组件

服务提供方

创建和管理终端节点服务。

服务使用方

创建和管理终端节点。

配置场景

本文以下图场景为例。某公司使用阿里云账号A在德国(法兰克福)地域创建了VPC1,使用阿里云账号B在德国(法兰克福)地域创建了VPC2。在VPC2中创建了ECS2和ECS3,并且在ECS2实例和ECS3实例部署了应用服务。因业务发展,VPC2中的服务需要被VPC1通过私网访问,避免公网访问服务带来的潜在安全风险。

您可以在VPC2下创建支持私网连接的CLB实例,将ECS实例添加为CLB实例的后端服务器,CLB就可以接收客户端流量并将流量按照监听转发规则分发至对应的后端服务器ECS。然后创建终端节点服务,将CLB实例添加为服务资源,并将阿里云账号A的ID添加到终端节点服务的服务白名单中。在VPC1下创建终端节点。创建成功后,终端节点与终端节点服务建立连接且状态正常时,VPC1即可跨账号私网访问VPC2下的服务。

image

使用限制

  • VPC2中的CLB服务资源必须是按量付费的私网CLB实例,只有按量付费的私网CLB实例才支持私网连接。

  • 创建终端节点服务时,选择地域需要同时支持私网连接和CLB实例的地域。关于私网连接和CLB实例支持的地域,请参见私网连接支持的地域CLB支持的地域信息

  • 终端节点和终端节点服务需要部署在一个可用区内,且该可用区必须是CLB实例部署的可用区。

前提条件

  • 首次使用时,请登录私网连接服务开通页面根据提示开通私网连接服务。

  • 您已使用阿里云账号A在德国(法兰克福)地域创建了VPC1,使用阿里云账号B在德国(法兰克福)地域创建了VPC2,并且在VPC1和VPC2中分别创建了一个交换机。具体操作,请参见创建专有网络和交换机

  • 您已在账号A的VPC1中创建了ECS1实例,在账号B的VPC2中创建了ECS2和ECS3实例,ECS2和ECS3部署了不同的Nginx服务。

    • 关于如何创建ECS实例,请参见自定义购买实例

    • 本文ECS2与ECS3部署测试应用示例如下:

      ECS2服务部署命令

      yum install -y nginx
      systemctl start nginx.service
      cd /usr/share/nginx/html/
      echo "Hello World ! This is ECS2." > index.html

      ECS3服务部署命令

      yum install -y nginx
      systemctl start nginx.service
      cd /usr/share/nginx/html/
      echo "Hello World ! This is ECS3." > index.html
  • 您已经在VPC1创建了安全组。您可以根据自己的实际业务和安全要求配置安全组规则。

    具体操作,请参见创建安全组

    说明

    VPC2中使用的安全组是在创建ECS2和ECS3时,阿里云为您创建的默认安全组。

本文中2个VPC网络规划如下表所示,在您规划网络时,选择的VPC1和VPC2的网段可以重叠且互不影响。

属性

VPC1

VPC2

网络实例所属地域

德国(法兰克福)

德国(法兰克福)

网络实例的网段规划

  • VPC网段:10.10.0.0/16

  • 交换机网段:10.10.2.0/24

  • VPC网段:192.168.0.0/16

  • 交换机网段:192.168.24.0/24

网络实际交换的可用区

交换机位于可用区B

交换机位于可用区B

服务器IP地址

ECS1 IP地址:10.10.2.1

  • ECS2 IP地址:192.168.24.200

  • ECS3 IP地址:192.168.24.12

配置步骤

image

步骤一:创建支持私网连接功能的CLB实例

  1. 使用账号B登录传统型负载均衡CLB控制台

  2. 实例管理页面,单击创建传统型负载均衡

  3. 在购买页面,根据以下信息配置CLB实例,然后单击立即购买完成支付。

    配置

    说明

    付费模式

    选择一种付费模式。本文只支持选择按量付费

    地域和可用区

    选择实例的所属地域,并在可用区下拉列表中选择实例的主可用区,主可用区是当前承载流量的可用区。

    本文地域选择德国(法兰克福) ,可用区选择法兰克福 可用区B

    说明

    确保实例的地域和后端添加的云服务器ECS(Elastic Compute Service)的地域相同。

    可用区类型

    显示所选地域的可用区类型。系统默认显示多可用区

    备可用区

    选择实例的备可用区。备可用区默认不承载流量,主可用区不可用时才承载流量。

    本文选择欧洲中部1 可用区A

    实例名称

    输入自定义实例名称。

    实例计费方式

    选择实例的一种计费方式。包括以下两种计费方式:

    • 按规格计费

    • 按使用量计费

    本文选择按规格计费

    实例规格

    选择一种性能规格。

    实例类型

    根据业务场景选择配置对外公开或对内私有的CLB实例,系统会根据您的选择分配公网或私网服务地址。

    本文只支持选择私网

    网络类型

    选择CLB实例的网络类型。

    系统默认显示专有网络

    专有网络

    选择VPC2及VPC2下的交换机。

    IP版本

    选择CLB实例的IP版本。本文选择IPv4

    功能特性

    选择实例的功能特性。系统默认显示标准功能

    公网流量费

    选择一种公网计费方式。公网CLB实例支持以下两种公网计费方式:

    • 按使用流量计费

    • 按固定带宽计费

    本文系统默认显示按使用流量计费

    说明

    公网实例会按使用流量计费,本文选择的私网实例不会产生流量费。

    数量

    选择购买数量。本文选择1

    资源组

    选择实例所属的资源组。本文选择默认资源组

步骤二:配置CLB实例

创建CLB实例后,您需要至少添加一个监听和一组后端服务器才能实现流量转发。

  1. 使用账号B登录传统型负载均衡CLB控制台

  2. 实例管理页面,找到步骤一创建的CLB实例,在操作列单击监听配置向导

  3. 协议&监听配置向导,根据以下信息配置监听规则,其他配置保持默认值,然后单击下一步

    • 选择监听协议:本文选择TCP协议。

    • 监听端口:用来接收请求并向后端服务器进行请求转发的监听端口。

      本文设置为80

  4. 后端服务器配置向导,选择默认服务器组,单击继续添加,添加后端服务器。

    1. 我的服务器面板,选择已经创建的ECS2和ECS3实例,单击下一步

    2. 配置权重,单击添加

      权重越大转发的请求越多,默认为100,本文保持默认值。

    3. 默认服务器组页签,配置后端协议端口,本文端口设置为80,然后单击下一步

      ECS实例上开放的用来接收请求的后端端口,在同一个CLB实例内可重复。

  5. 健康检查配置向导,配置健康检查,本文使用默认值,然后单击下一步

  6. 配置审核配置向导,检查配置信息,然后单击提交

  7. 单击知道了,返回实例管理页面。

    当后端ECS实例的健康检查状态为正常时,表示后端ECS实例可以正常处理CLB转发的请求了。

步骤三:创建终端节点服务

终端节点服务是可以被其他VPC通过创建终端节点建立私网连接的服务。

  1. 使用账号B终端节点服务控制台

  2. 在顶部菜单栏处,选择要创建终端节点服务的地域。本文选择德国(法兰克福)

  3. 终端节点服务页面,单击创建终端节点服务

  4. 创建终端节点服务页面,根据以下信息配置终端节点服务,然后单击确定创建

    此处仅列举和本文强相关的配置。关于其余参数的配置,请参见创建终端节点服务

    配置

    说明

    选择服务资源

    选择要承载流量的可用区,然后选择与终端节点服务关联的CLB实例。

    本文选择法兰克福 可用区B,然后选择步骤一创建的支持私网连接功能的CLB实例。

    自动接受终端节点连接

    选择是否自动接受终端节点的连接请求。本文选择

    • :终端节点服务将自动接受终端节点的连接请求,通过终端节点能够访问服务。

    • :终端节点连接将处于已断开状态,等待服务使用方进行处理:

      • 如果服务使用方接受该终端节点对应的终端节点服务连接,通过终端节点将能够访问服务。

      • 如果服务使用方拒绝该终端节点对应的终端节点服务连接,通过终端节点无法访问服务。

    是否支持同可用区优先

    本文选择,表示连接服务的终端节点域名支持就近解析。

终端节点服务创建成功后,您可以查看终端节点服务的实例ID和服务名称。

步骤四:添加服务白名单

您可以为终端节点服务添加服务白名单,服务白名单中的用户可以创建与终端节点服务连接的终端节点。

完成以下操作,将阿里云账号A(主账号)的ID添加到阿里云账号B配置的终端节点服务的服务白名单中。

  1. 使用阿里云账号B终端节点服务控制台

  2. 在左侧导航栏,单击终端节点服务

  3. 终端节点服务页面,找到步骤三创建的终端节点服务,单击其服务ID。

  4. 单击服务白名单页签,然后单击添加白名单

  5. 添加白名单对话框,输入要添加的白名单账号,然后单击确定

    本文输入阿里云账号A(主账号)的ID,示例图如下:

    创建终端节点服务-创建服务

步骤五:创建终端节点

终端节点可以与终端节点服务相关联,以建立通过VPC私网访问外部服务的网络连接。

  1. 使用阿里云账号A终端节点控制台

  2. 在顶部菜单栏处,选择要创建终端节点的地域。本文选择德国(法兰克福)

  3. 终端节点页面,单击创建终端节点

  4. 创建终端节点页面,根据以下信息配置终端节点,然后单击确定创建

    此处仅列举和本文强相关的配置。关于其余参数的配置,请参见创建终端节点

    配置

    说明

    节点名称

    输入自定义终端节点的名称。

    终端节点类型

    终端节点选择的节点类型。本文选择接口终端节点

    终端节点服务

    选择目标终端节点服务。

    本文先单击选择可用服务,然后选择步骤三中创建的终端节点服务。

    专有网络

    选择需要创建终端节点的VPC。本文选择已创建的VPC1。

    安全组

    选择要与终端节点网卡关联的安全组,安全组可以管控VPC到终端节点网卡的数据通信。

    说明

    确保安全组内的规则开放了客户端对终端节点网卡的访问。

    一个终端节点默认最多支持添加5个安全组。

    可用区与交换机

    选择终端节点服务对应的可用区,然后选择该可用区内的交换机,系统会自动在该交换机下创建一个终端节点网卡。

    本文选择法兰克福 可用区B,然后选择VPC1中创建的交换机。

创建完终端节点后,您可以在终端节点详情页查看生成的终端节点域名、终端节点可用区的域名和IP。

步骤六:接受终端节点连接请求

终端节点发送连接请求后,终端节点服务需要接受终端节点的连接请求。接受后,VPC1才能通过终端节点访问服务。

说明

如果您在步骤三创建终端节点服务时设置自动接受连接请求,请忽略此步骤。

完成以下操作,在阿里云账号B的终端节点服务上接受阿里云账号A的终端节点连接请求。

  1. 使用阿里云账号B终端节点服务控制台

  2. 在顶部菜单栏处,选择终端节点服务的地域。本文选择德国(法兰克福)

  3. 终端节点服务页面,找到步骤三创建的终端节点服务,单击其服务ID链接。

  4. 在终端节点服务详情页面,单击终端节点连接页签,找到目标终端节点,在操作列单击允许

  5. 允许连接对话框,单击确定

接受连接请求后,终端节点连接的状态由已断开变更为已连接,表示终端节点服务可以处理终端节点发送的请求了。

步骤七:通过终端节点访问服务

完成以下操作,测试阿里云账号A的VPC1中的ECS1实例是否可以通过私网访问阿里云账号B的VPC2中部署在ECS2和ECS3上的服务。

说明

本文中ECS实例安装了Alibaba Cloud Linux操作系统,如果您使用的是其他操作系统,如何测试VPC1和VPC2之间的连通性请参见您的操作系统手册。

  1. 使用阿里云账号A登录VPC1中的ECS1实例。具体操作,请参见ECS远程连接方式概述

  2. 打开阿里云账号A ECS1实例的浏览器。

  3. 登录VPC1中的ECS1实例后,您有以下两种方式测试VPC之间的连通性。

    • 通过终端节点服务域名访问VPC2中部署的服务。

      1. 在终端节点详情页,查看生成的终端节点服务域名。

        image

      2. 执行curl命令,测试连通性。

        image

    • 指定可用区域名或IP访问VPC2中部署的服务。

      1. 在终端节点详情页,单击可用区与网卡页签,查看生成的可用区域名和IP地址。

      2. 执行curl命令,测试连通性。

        image.pngimage.png