网络变配

计算巢全托管服务提供了私网访问变配功能,以满足用户对私网访问配置的修改需求。用户在完成服务实例创建后,可以新增、修改、删除网络,本文介绍私网连接变配功能的相关信息。

重要

网络变配仅支持全托管服务。

使用说明

计算巢私网访问支持阿里云私网PrivateLinkVpc对等连接两种模式,可根据需要选择对应的连接模式。

  • Vpc对等连接

    • 仅限新建VPC场景,您需要在服务模板中定义新建VPC的参数,用户在创建服务实例时,仅需填写与服务新建VPC建立对等连接的专有网络即可。

    • 变配支持新增、删除、修改Vpc对等连接。

  • 阿里云私网PrivateLink

    • 支持同可用区的私网互联,交互数据不会经过互联网,有更高的安全性和更好的网络质量。更多信息,请参见什么是私网连接

    • 变配支持新增、删除、修改PrivateLink连接。

计费说明

计算巢不收取平台服务费,但您需要为服务部署时使用的云资源付费(例如VPC Peering流量、SLB实例、ECS实例等)。具体收费信息,请参见产品计费

Vpc对等连接变配(VPC Peering)

本节从Vpc对等连接的角度,介绍服务商如何开启并设置Vpc对等连接变配,同时为服务实例进行网络变配。

创建全托管服务

此处只展示私网访问变配功能设置信息。关于创建全托管服务的详细信息,请参见创建全托管服务

  1. 创建新服务页面的服务部署区域中,ROS模板必须包含新建VPC

    • Resrouces中需存在资源ALIYUN::ECS::VPC,示例如下:

      Resources:
        EcsVpc:
          Type: ALIYUN::ECS::VPC
          Properties:
            CidrBlock:
              Ref: VpcCidrBlock
    • Parameters中需存在CIDR入参,即存在参数的AssociationPropertyALIYUN::VPC::VPC::CIDRBLOCK,示例如下:

      Parameters:
        VpcCidrBlock:
          Type: String
          AssociationProperty: ALIYUN::VPC::VSwitch::CidrBlock
          AllowedValues:
            - 192.168.0.0/16
            - 172.16.0.0/12
            - 10.0.0.0/8
          Description:
            en: The IP address range of the VPC in the CIDR block form.
            zh-cn: 专有网络的网段,可选值:192.168.0.0/16,172.16.0.0/12,10.0.0.0/8。
          Default: 192.168.0.0/16
    • 完整代码示例,如果您想快速测试可参考下方模板代码。

      ECS版Mysql(支持对等连接)

      ROSTemplateFormatVersion: '2015-09-01'
      # 定义参数
      Parameters:
        # 可用区
        ZoneId:
          Type: String
          AssociationProperty: ALIYUN::ECS::Instance:ZoneId
          Label:
            en: VSwitch Available Zone
            zh-cn: 可用区
        # 数据库root账户密码
        Password:
          # 查询该参数时只输出星号(*)
          NoEcho: true
          Type: String
          Description:
            en: 'Database root and admin account password, 8-32 characters, including uppercase and lowercase letters, numbers and special symbols (including: !@#$%^&*-+=_).'
            zh-cn: 数据库root和admin账户密码,长度8-32个字符,可包含大小字母、数字及特殊符号(包含:!@#$%^&*-+=_)。
          Label:
            en: root and admin Account Password
            zh-cn: 数据库root和admin账户密码
          ConstraintDescription:
            en: '8-32 characters, including uppercase and lowercase letters, numbers and special symbols (including: !@#$%^&*-+=_).'
            zh-cn: 8-32个字符,可包含大小字母、数字及特殊符号(包含:!@#$%^&*-+=_)。
          MinLength: '8'
          MaxLength: '32'
          AssociationProperty: ALIYUN::ECS::Instance::Password
        # 新建Ipv4网段
        VpcCidrBlock:
          Type: String
          Label:
            en: VPC CIDR IPv4 Block
            zh-cn: 专有网络IPv4网段
          Description:
            zh-cn: VPC的ip地址段范围,<br>您可以使用以下的ip地址段或其子网:<br><font color='green'>[10.0.0.0/8]</font><br><font
              color='green'>[172.16.0.0/12]</font><br><font color='green'>[192.168.0.0/16]</font>
            en: 'The ip address range of the VPC in the CidrBlock form; <br>You can use
                the following ip address ranges and their subnets: <br><font color=''green''>[10.0.0.0/8]</font><br><font
                color=''green''>[172.16.0.0/12]</font><br><font color=''green''>[192.168.0.0/16]</font>'
          AssociationProperty: ALIYUN::VPC::VPC::CidrBlock
          Default: 192.168.0.0/16
        # 新建交换机网段
        VSwitchCidrBlock:
          Type: String
          Label:
            en: VSwitch CIDR Block
            zh-cn: 交换机子网网段
          Description:
            zh-cn: 必须属于VPC的子网段。
            en: Must belong to the subnet segment of VPC.
          AssociationProperty: ALIYUN::VPC::VSwitch::CidrBlock
          AssociationPropertyMetadata:
            VpcCidrBlock: VpcCidrBlock
          Default: 192.168.1.0/24
        # Ecs实例类型
        EcsInstanceType:
          Type: String
          Label:
            en: Instance Type
            zh-cn: Ecs实例类型
          AssociationProperty: ALIYUN::ECS::Instance::InstanceType
          AllowedValues:
            - ecs.c6.large
            - ecs.c6.xlarge
            - ecs.c6.2xlarge
            - ecs.c6.4xlarge
      # 定义资源
      Resources:
        # 定义WaitCondition和WaitConditionHandle来等待命令在Ecs中执行完毕部署成功
        WaitCondition:
          Type: ALIYUN::ROS::WaitCondition
          Properties:
            Count: 1
            Handle:
              Ref: WaitConditionHandle
            Timeout: 1800
        WaitConditionHandle:
          Type: ALIYUN::ROS::WaitConditionHandle
        EcsSecurityGroup:
          Type: 'ALIYUN::ECS::SecurityGroup'
          Properties:
            VpcId:
              Ref: EcsVpc
            SecurityGroupIngress:
              - Priority: 1
                PortRange: 3306/3306
                NicType: internet
                SourceCidrIp: 0.0.0.0/0
                IpProtocol: tcp
        # Vpc
        EcsVpc:
          Type: ALIYUN::ECS::VPC
          Properties:
            CidrBlock:
              Ref: VpcCidrBlock
            VpcName:
              Ref: ALIYUN::StackName
        # 交换机
        EcsVSwitch:
          Type: ALIYUN::ECS::VSwitch
          Properties:
            ZoneId:
              Ref: ZoneId
            VpcId:
              Ref: EcsVpc
            CidrBlock:
              Ref: VSwitchCidrBlock
        # Ecs实例
        EcsInstanceGroup:
          Type: ALIYUN::ECS::InstanceGroup
          Properties:
            # I/O优化实例
            IoOptimized: optimized
            ZoneId:
              Ref: ZoneId
            DiskMappings:
              - Category: cloud_essd
                Device: /dev/xvdb
                Size: 200
            SystemDiskSize: 40
            # cloud-init执行用户命令
            # /var/log/cloud-init.log /var/log/cloud-init-output.log 可以看到执行日志
            # /var/lib/cloud/instance/scripts/part-001 为具体的脚本 可以sh 执行来排查问题
            UserData:
              Fn::Sub:
                - |
                  #!/bin/sh
      
                  # sleep一段时间确保网络就绪
                  sleep 10
      
                  # 对数据盘进行分区
      
                  cat >> /root/InitDataDisk.sh << EOF
                  #!/bin/bash
                  echo "p
                  n
                  p
      
      
      
                  w
                  " |  fdisk -u /dev/vdb
                  EOF
                  /bin/bash /root/InitDataDisk.sh
                  rm -f /root/InitDataDisk.sh
                  rm -f InitDataDisk.sh
                  # 在新分区上创建文件系统
                  mkfs.ext4 /dev/vdb1
                  # 创建目录,MySQL将安装在该目录下
                  mkdir /data1
                  # 挂载文件系统
                  mount /dev/vdb1 /data1
                  # 向 /etc/fstab 写入新分区信息
                  echo /dev/vdb1 /data1 ext4 defaults,nodelalloc,noatime 0 2 >> /etc/fstab
                  cd /data1/
      
                  # 安装社区版MySQL
                  wget '{{ computenest::file::MySQL }}' -O mysql-community-release-el6-5.noarch.rpm
                  rpm -ivh mysql-community-release-el6-5.noarch.rpm
                  yum repolist all | grep mysql
                  yum install mysql-community-server -y
      
                  # 启动MySQL服务
                  service mysqld start
      
                  # 以超级用户身份登入,创建admin用户,并允许admin用户以Password为密码远程登录
                  mysqladmin -u root password '${Password}'
                  echo "create database test character set utf8 collate utf8_bin;" > ./test.sql
                  echo "CREATE USER 'admin'@'%' IDENTIFIED BY '${Password}';" >> ./test.sql
                  echo "GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;" >> ./test.sql
                  mysql -u root -p'${Password}' < ./test.sql
      
                  # 将MySQL的配置和数据路径移动到数据盘上
                  systemctl stop mysqld
                  rsync -av /var/lib/mysql /data1
                  # 修改配置文件
                  sed -i 's/\/var\/lib/\/data1/g' /etc/my.cnf
                  echo -e '\n' >> /etc/my.cnf
                  echo '[client]' >> /etc/my.cnf
                  echo 'port=3306' >> /etc/my.cnf
                  echo 'socket=/data1/mysql/mysql.sock' >> /etc/my.cnf
                  # 重启MySQL
                  systemctl start mysqld
      
                  # 执行成功回调WaitCondition结束WaitCondition的等待
                  ${CurlCli} -d "{\"Data\" : \"SUCCESS\", \"Status\" : \"SUCCESS\"}"
      
                # 获取到WaitConditionHandle的地址放到 ${CurlCli}变量里
                - CurlCli:
                    Fn::GetAtt:
                      - WaitConditionHandle
                      - CurlCli
                  # 数据库root账户密码
                  Password:
                    Ref: Password
            # 付费方式:按量付费
            InstanceChargeType: PostPaid
            MaxAmount: 1
            # 系统盘类型:cloud_essd
            SystemDiskCategory: cloud_essd
            # 实例名称
            InstanceName:
              Ref: ALIYUN::StackName
            VpcId:
              Ref: EcsVpc
            SecurityGroupId:
              Ref: EcsSecurityGroup
            VSwitchId:
              Ref: EcsVSwitch
            # 指定CentOS 7.9镜像,如果修改镜像,UserData脚本需要进行适配
            ImageId: "centos_7_9_x64_20G_alibase_20220727.vhd"
            InstanceType:
              Ref: EcsInstanceType
            # 主机名
            HostName:
              Ref: ALIYUN::StackName
            # Ecs登录密码
            Password:
              Ref: Password
            # 是否为实例分配公网IP
            AllocatePublicIP: true
            InternetMaxBandwidthOut: 1
      # 定义输出
      Outputs:
        MysqlUserName:
          Label: MySQL登录用户名
          Value: admin
        PrivateIps:
          Label: 私网Ip地址
          Value:
            Fn::Select:
              - 0
              - Fn::GetAtt:
                  - EcsInstanceGroup
                  - PrivateIps
      # 定义元数据
      Metadata:
        ALIYUN::ROS::Interface:
          # 定义资源分组,创建服务实例时,同一分组的参数分布在一起
          ParameterGroups:
            - Parameters:
                - EcsInstanceType
              Label:
                en: Instance Type
                zh-cn: 实例规格
            - Parameters:
                - Password
              Label:
                en: Basic Configuration
                zh-cn: 基础配置
            - Parameters:
                - ZoneId
                - VpcCidrBlock
                - VSwitchCidrBlock
              Label:
                en: Network Configuration
                zh-cn: 网络配置
  2. 高级配置中开启VPC私网访问,连接模式选择Vpc对等连接

    image

  3. 服务运维开启支持服务实例变配,在添加变配操作弹窗中,配置变配操作信息。

    配置项

    配置说明

    选择模板

    选择需要执行变配操作的模板。

    操作名称

    设置变配操作的名称。

    操作描述

    填写变配操作详细介绍。

    变配方式

    设置变配操作的方式。

    网络变更

    设置网络变配的方式。

    image

  4. 单击确定,并完成服务创建并上线。

创建和变配服务实例

  1. 创建全托管服务实例。

    更多信息,请参见创建全托管服务实例

  2. 变配服务实例。

    说明

    若需要关闭/新增/删除Vpc对等连接,此操作步骤都可完成。

    1. 在已创建的服务实例详情页,单击右上角的修改配置,在弹框中选择网络变配,单击下一步进入设置修改参数

      image

    2. 若服务实例未配置任何Vpc对等连接,单击添加对等连接选择或者新建专有网络

      重要
      • 所选择VPC的CIDR不能与已有连接或服务实例VPC的CIDR存在重叠。

      • 可添加多条对等连接,多条对等连接之间不能CIDR重叠。

      image

    3. 单击下一步预览参数,确认无误后单击确定开始变配。

      image

    4. 变配完成后服务实例状态变为已部署,进入网络配置可见新增的VPC对等连接信息。

      变配前:

      image

      变配后:

      image

阿里云私网PrivateLink变配

本节从阿里云私网PrivateLink的角度,介绍服务商如何开启并配置PrivateLink变配,同时为服务实例进行网络变配。

创建全托管服务

此处只展示私网访问变配功能设置信息。关于创建全托管服务的详细信息,请参见创建全托管服务

  1. 创建新服务页面,配置服务信息。

  2. 高级配置(选填)中开启VPC私网访问,连接模式选择阿里云私网PrivateLink并选择访问资源。

    说明

    访问资源支持选择负载均衡终端节点服务作为访问资源。本节以负载均衡为例。更多配置信息,请参见VPC私网访问配置说明

    image

  3. 服务运维(选填)开启支持服务实例变配,在添加变配操作弹窗中,配置变配操作信息。

    配置项

    配置说明

    选择模板

    选择需要执行变配操作的模板。

    操作名称

    设置变配操作的名称。

    操作描述

    填写变配操作详细介绍。

    变配方式

    设置变配操作的方式。

    网络变更

    设置网络变配的方式。如果您配置了自定义域名建议勾选支持自定义域名变更

    image

  4. 单击确定,并完成服务创建并上线。

    image

创建和变配服务实例

  1. 创建全托管服务实例。

    更多信息,请参见创建全托管服务实例

  2. 变配服务实例。

    说明

    若需要关闭、新增、删除Vpc对等连接,此操作都可完成。

    1. 在已创建的服务实例详情页,单击右上角的修改配置,在弹框中选择网络变配,单击下一步进入设置修改参数

      image

    2. 在设置修改参数页面,本节以添加一个VPC网络开启自定义域名能力为例。

      image

    3. 单击下一步预览参数,确认无误后单击确定开始变配。

      image

    4. 变配完成后服务实例状态变为已部署,进入网络配置可见新增的可用区。

      • 变配前:

        image

      • 变配后:

        image

相关文档