试用服务实例支持VPC私网连接功能,通过私网连接可以打通用户VPC与服务实例所在的VPC,用户在计算巢部署试用服务实例并进行私网访问时可以有效降低网络影响并提升数据安全性。本文介绍如何配置试用服务的私网连接功能。
前提条件
仅服务模板内容中包含SLB(ALIYUN::SLB::LoadBalancer)资源的服务支持私网连接功能。
创建服务
介绍如何创建包含试用服务私网连接功能的服务。
登录计算巢控制台。
在左侧导航栏中,选择我的服务,并在我的服务页面中选择我创建的服务,然后单击创建新服务。
在创建新服务界面,选择私有部署服务并设置服务信息。
此处只列举试用服务私网连接需要特别配置的参数,其他参数,请参见创建私有部署服务。
在录入模板的模板内容区域,填写模板内容。模板内容的详细信息,请参见模板示例。
填写模板内容时,需要包含SLB资源,模板中SLB资源定义如下所示。
Slb: Type: ALIYUN::SLB::LoadBalancer Properties: VpcId: Ref: VpcId VSwitchId: Ref: VSwitchId LoadBalancerName: Fn::Join: - '-' - - slb - Ref: ALIYUN::StackName PayType: Ref: PayType PricingCycle: Ref: PayPeriodUnit Duration: Ref: PayPeriod AddressType: intranet LoadBalancerSpec: Ref: LoadBalancerSpec AutoPay: true
开启支持试用。
在高级配置(选填)区域,配置试用服务的相关信息。
在试用设置处,开启支持试用,并选择服务模板和套餐,然后设置最长试用时间。
若未创建套餐,可不选择。最长试用时间不能超过30天。
在网络设置处,设置试用服务的私网连接参数。
打开试用服务安全访问配置开关。
在负载均衡处,指定用于创建试用服务实例时,需要打通的SLB资源。
对于多模板,可以分别配置不同模板中的SLB。
在自定义域名处,输入自定义域名。
该参数填写后,用户在部署服务实例时可以选择是否使用该自定义域名。
单击创建服务,并在弹出的确认弹窗中单击确定。
创建试用服务实例
服务商以用户的身份创建包含私网连接的试用服务实例。
此处只列举填写私网连接需要填写的参数,其他参数请参见创建私有部署服务实例。
在网络设置区域,选中VPC私网访问。
在专有网络信息框中,选择专有网络、安全组和可用区与交换机。
重要由于目前仅支持同可用区私网连接,网络设置中的可用区需要与基础资源配置中的交换机可用区保持一致。
选中云服务推荐使用以下自定义域名。
验证私网连接是否生效
以用户视角在已创建的试用服务实例详情页查看具体的网络信息并访问服务。
查看虚拟互联网信息。
在左侧导航栏中,单击服务实例管理,进入服务实例详情页面。
单击虚拟互联网页签,查看详细的网络信息。
访问服务。
因服务的个性化配置、依赖云服务支持的地域等情况,您可以通过如下方式找到服务的访问地址并访问服务。
直接使用终端节点域名访问服务。
使用自定义域名访问服务。
若服务配置了自定义域名,则可以直接使用该域名访问终端节点。
模板示例
ROSTemplateFormatVersion: '2015-09-01'
Description:
en: Use the existing VPC、VSWitch, create 1 SLB, 2 ECS instances, and bind all ECS instances to the SLB.
zh-cn: 使用已有VPC、VSWitch,创建1个SLB、2个ECS实例,并将所有ECS实例绑定到SLB上。
Parameters:
ZoneId:
Type: String
AssociationProperty: ALIYUN::ECS::Instance::ZoneId
Label:
en: VSwitch Availability Zone
zh-cn: 交换机可用区
VpcId:
AssociationProperty: ALIYUN::ECS::VPC::VPCId
Type: String
Description:
en: Please search the ID starting with (vpc-xxx) from console-Virtual Private Cloud
zh-cn: 现有虚拟专有网络的实例ID
Label:
en: VPC ID
zh-cn: 专有网络VPC实例ID
VSwitchId:
AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
AssociationPropertyMetadata:
VpcId: ${VpcId}
ZoneId: ${ZoneId}
Type: String
Description:
en: Instance ID of existing business network switches, console-Virtual Private Cloud-VSwitches under query
zh-cn: 现有业务网络交换机的实例ID
Label:
en: VSwitch ID
zh-cn: 交换机实例ID
EcsInstanceType:
Type: String
Label:
en: Instance Type
zh-cn: 实例类型
AssociationProperty: ALIYUN::ECS::Instance::InstanceType
AssociationPropertyMetadata:
ZoneId: ${ZoneId}
InstanceChargeType: ${InstanceChargeType}
InstancePassword:
NoEcho: true
Type: String
Description:
en: Server login password, Length 8-30, must contain three(Capital letters, lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Special symbol in)
zh-cn: 服务器登录密码,长度8-30,必须包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ 中的特殊符号)
AllowedPattern: '[0-9A-Za-z\_\-\&:;''<>,=%`~!@#\(\)\$\^\*\+\|\{\}\[\]\.\?\/]+$'
Label:
en: Instance Password
zh-cn: 实例密码
ConstraintDescription:
en: Length 8-30, must contain three(Capital letters, lowercase letters, numbers, ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ Special symbol in)
zh-cn: 长度8-30,必须包含三项(大写字母、小写字母、数字、 ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/ 中的特殊符号)
MinLength: 8
MaxLength: 30
AssociationProperty: ALIYUN::ECS::Instance::Password
PayType:
Type: String
Label:
en: ECS Instance Charge Type
zh-cn: 付费类型
Default: PostPaid
AllowedValues:
- PostPaid
- PrePaid
AssociationProperty: ChargeType
AssociationPropertyMetadata:
LocaleKey: InstanceChargeType
PayPeriodUnit:
Type: String
Description:
en: The long cycle of purchasing resources. <br>Week is a Week and Month is a Month. <br> The default value is month.<br><b><font color='red'> When ECS instance types are PrePaid valid </b></font>
zh-cn: 购买资源时长的周期。<br>Week为周,Month为月<br>默认值为月<br><b><font color='red'>当ECS实例类型为PrePaid有效</b></font>
Label:
en: Pay Period Unit
zh-cn: 购买资源时长周期
Default: Month
AllowedValues:
- Month
- Year
AssociationProperty: PayPeriodUnit
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Not:
Fn::Equals:
- ${PayType}
- PostPaid
PayPeriod:
Type: Number
Label:
en: Period
zh-cn: 购买资源时长
Default: 1
AllowedValues:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
AssociationProperty: PayPeriod
AssociationPropertyMetadata:
Visible:
Condition:
Fn::Not:
Fn::Equals:
- ${PayType}
- PostPaid
LoadBalancerSpec:
Type: String
AssociationProperty: ALIYUN::SLB::Instance::InstanceType
Label:
en: LoadBalancer Specifications
zh-cn: 负载均衡实例规格
AssociationPropertyMetadata:
ZoneId: ${ZoneId}
Resources:
EcsSecurityGroup:
Type: ALIYUN::ECS::SecurityGroup
Properties:
SecurityGroupName:
Ref: ALIYUN::StackName
VpcId:
Ref: VpcId
SecurityGroupIngress:
- PortRange: 80/80
Priority: 1
SourceCidrIp: 0.0.0.0/0
IpProtocol: tcp
NicType: internet
SecurityGroupEgress:
- PortRange: '-1/-1'
Priority: 1
IpProtocol: all
DestCidrIp: 0.0.0.0/0
NicType: internet
- PortRange: '-1/-1'
Priority: 1
IpProtocol: all
DestCidrIp: 0.0.0.0/0
NicType: intranet
WaitCondition:
Type: ALIYUN::ROS::WaitCondition
Properties:
Count: 1
Handle:
Ref: WaitConditionHandle
Timeout: 300
WaitConditionHandle:
Type: ALIYUN::ROS::WaitConditionHandle
EcsInstanceGroup:
Type: ALIYUN::ECS::InstanceGroup
Properties:
InstanceChargeType:
Ref: PayType
PeriodUnit:
Ref: PayPeriodUnit
Period:
Ref: PayPeriod
IoOptimized: optimized
SystemDiskCategory: cloud_essd
SystemDiskSize: 200
DiskMappings:
- Category: cloud_essd
Size: 200
VpcId:
Ref: VpcId
ZoneId:
Ref: ZoneId
SecurityGroupId:
Ref: EcsSecurityGroup
VSwitchId:
Ref: VSwitchId
MaxAmount: 2
ImageId: centos_7
InstanceType:
Ref: EcsInstanceType
Password:
Ref: InstancePassword
AllocatePublicIP: false
UserData:
Fn::Sub:
- |
#!/bin/bash
# 挂盘到/disk1
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 -t ext4 /dev/vdb1
cp /etc/fstab /etc/fstab.bak
mkdir /disk1
echo `blkid /dev/vdb1 | awk '{print $2}' | sed 's/\\\"//g'` /disk1 ext4 defaults 0 0 >> /etc/fstab
mount -a
# 这里配置安装脚本
yum install -y nginx
# 配置启动脚本
systemctl start nginx.service
# 执行成功回调WaitCondition结束waitCondition的等待
${CurlCli} -d "{\"Data\" : \"Success\", \"status\" : \"SUCCESS\"}"
- CurlCli:
Fn::GetAtt:
- WaitConditionHandle
- CurlCli
Slb:
Type: ALIYUN::SLB::LoadBalancer
Properties:
VpcId:
Ref: VpcId
VSwitchId:
Ref: VSwitchId
LoadBalancerName:
Fn::Join:
- '-'
- - slb
- Ref: ALIYUN::StackName
PayType:
Ref: PayType
PricingCycle:
Ref: PayPeriodUnit
Duration:
Ref: PayPeriod
AddressType: intranet
LoadBalancerSpec:
Ref: LoadBalancerSpec
AutoPay: true
EipSlbAddress:
Type: ALIYUN::VPC::EIP
Properties:
Name:
Ref: ALIYUN::StackName
InternetChargeType: PayByTraffic
Bandwidth: 100
EipSlbAddressAssociation:
Type: ALIYUN::VPC::EIPAssociation
Properties:
InstanceId:
Ref: Slb
AllocationId:
Ref: EipSlbAddress
SlbBackendServerAttachment:
DependsOn:
- EcsInstanceGroup
Type: ALIYUN::SLB::BackendServerAttachment
Properties:
BackendServerList:
Fn::GetAtt:
- EcsInstanceGroup
- InstanceIds
LoadBalancerId:
Ref: Slb
BackendServerWeightList:
- 100
- 100
SlbListener:
DependsOn:
- Slb
Type: ALIYUN::SLB::Listener
Properties:
Persistence:
CookieTimeout: 60
StickySession: 'on'
PersistenceTimeout: 180
XForwardedFor: 'off'
StickySessionType: insert
ListenerPort: 80
Bandwidth: -1
HealthCheck:
HttpCode: http_2xx,http_3xx,http_4xx,http_5xx
HealthCheckType: tcp
UnhealthyThreshold: 3
Timeout: 5
HealthyThreshold: 3
Port: 80
URI: /
Interval: 2
LoadBalancerId:
Ref: Slb
BackendServerPort: 80
Protocol: tcp
Outputs:
Endpoint:
Description:
zh-cn: 对外暴露的公网IP地址
en: Public IP Addresses
Value:
Fn::Sub:
- http://${ServerAddress}
- ServerAddress:
Fn::GetAtt:
- EipSlbAddress
- EipAddress
Metadata:
ALIYUN::ROS::Interface:
ParameterGroups:
- Parameters:
- ZoneId
Label:
default:
zh-cn: 可用区配置
en: Zone Configuration
- Parameters:
- VpcId
- VSwitchId
Label:
default:
zh-cn: 选择已有基础资源配置
en: Choose existing Infrastructure Configuration
- Parameters:
- PayType
- PayPeriodUnit
- PayPeriod
Label:
default:
en: PayType Configuration
zh-cn: 付费类型
- Parameters:
- EcsInstanceType
- InstancePassword
Label:
default:
en: Instance Configure
zh-cn: ECS实例配置
- Parameters:
- LoadBalancerSpec
Label:
default:
en: SLB Configure
zh-cn: 负载均衡配置