AOS编排语言系列教程(七):创建负载均衡ELB
弹性负载均衡( Elastic Load Balance,简称ELB)将访问流量自动分发到多台云服务器,扩展应用系统对外的服务能力,实现更高水平的应用容错。
上一章我们学习了如何创建共享云硬盘,我们基于上一个模板加入创建负载均衡ELB的内容。
tosca_definitions_version: huaweicloud_tosca_version_1_0
node_templates:
myecs:
type: HuaweiCloud.ECS.CloudServer
properties:
availabilityZone: cn-south-1a
flavor: c1.medium
imageId: a3934478-bfeb-4a02-b257-9089779f0380
instances: 1
name: my-ecs
nics:
- subnetId:
get_reference: mysubnet
rootVolume:
size: 40
volumeType: SATA
securityGroups:
- id:
get_reference: mysg
vpcId:
get_reference: myvpc
mountedVolumes:
- mountPath: '/dev/sdc'
volumeId:
get_reference: myevs
requirements:
- vpcId:
node: myvpc
- securityGroups.id:
node: mysg
- nics.subnetId:
node: mysubnet
- mountedVolumes.volumeId:
node: myevs
mysg:
type: HuaweiCloud.VPC.SecurityGroup
properties:
name: my-sg
requirements:
- vpcId:
node: myvpc
mysgrule:
type: HuaweiCloud.VPC.SecurityGroupRule
properties:
direction: ingress
ethertype: IPv4
maxPort: 5444
minPort: 5443
protocol: TCP
securityGroupId:
get_reference: mysg
requirements:
- securityGroupId:
node: mysg
mysubnet:
type: HuaweiCloud.VPC.Subnet
properties:
cidr: '192.168.1.0/24'
dhcpEnable: true
gateway: 192.168.1.1
name: my-subnet
vpcId:
get_reference: myvpc
requirements:
- vpcId:
node: myvpc
myvpc:
type: HuaweiCloud.VPC.VPC
properties:
cidr: '192.168.0.0/16'
name: my-vpc
myevs:
type: HuaweiCloud.EVS.SharedVolume
properties:
size: 10
availabilityZone: cn-south-1a
volumeType: SATA
myelb:
type: HuaweiCloud.ELB.LoadBalancer.External
properties:
name: my-elb
vpcId:
get_reference: myvpc
requirements:
- vpcId:
node: myvpc
myelb-listener:
type: HuaweiCloud.ELB.Listener
properties:
protocol: TCP
name: my-elb-listener
backendPort: 80
backendProtocol: TCP
port: 80
lbAlgorithm: roundrobin
loadBalanceId:
get_reference: myelb
requirements:
- loadBalanceId:
node: myelb
myhealth:
type: HuaweiCloud.ELB.HealthMonitor
properties:
unhealthyThreshold: 3
healthyThreshold: 3
healthCheckInterval: 5
healthCheckConnectPort: 80
healthCheckTimeout: 10
listenerId:
get_reference: myelb-listener
requirements:
- listenerId:
node: myelb-listener
mymember:
type: HuaweiCloud.ELB.Members
properties:
serverIds:
- get_reference: myecs
listenerId:
get_reference: myelb-listener
requirements:
- serverIds:
node: myecs
- listenerId:
node: myelb-listener
首先创建一个elb元素,它是部署华为云PaaS层私网LoadBalancer对象,通过创建LoadBalancer,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并将请求进行负载分发到后端的各个容器应用上。参数vpcId是ELB实例所属的VPC,弹性负载均衡需要与后端监听的弹性云服务器处于同一个VPC下。
elb-listener元素是弹性负载均衡下的监听器,一个loadBalancer可对应多个监听器,支持对监听器进行增加、删除。它有几个属性值:
protocol是负载均衡器协议。
name是监听器的名称,设置为my-elb-listener。
backendPort表示云服务器端口,可根据实际情况修改。
backendProtocol是云服务器协议。
port是负载均衡器端口,默认为80,可根据实际情况修改。
lbAlgorithm是监听器负载均衡方式,roundrobin:轮询算法, leastconn:最少连接, source:源IP算法;其中轮询算法支持会话保持功能。
loadBalanceId是所属的负载均衡器ID,将elb-listener与之前创建的elb关联起来。,
然后创建health-monitor元素,它是弹性负载均衡下的健康检查,一个Listener对应一个健康检查,一个健康检查管理多个弹性云服务器,支持对健康检查进行增加删除。
unhealthyThreshold判定健康检查结果为fail的阈值,即健康检查连续失败多少次后,将后端云服务器的健康检查状态由success改为fail。
healthyThreshold判定健康检查结果为success的阈值。
healthCheckInterval是健康检查时间间隔(秒)。
healthCheckConnectPort是健康检查使用端口,可根据实际情况修改,默认为云服务器端口。
healthCheckTimeout是健康检查超时时间(秒)。
listenerId健康检查所属的监听器ID,将health-monitor与elb-listener元素相关联。
member元素是弹性负载均衡下的弹性云服务器,一个Listener可以对应多个弹性云服务器,并且可以对监听器进行增加删除。一个HealthMonitor管理多个云服务器。
serverIds是后端云服务器ID。
listenerId是所属的监听器ID,该参数将member与elb-listener元素相关联。
为确保ELB健康检查正常运行,需要在后端弹性云服务器的安全组中添加入方向规则,允许来自100.125.0.0/16网段HTTP协议的访问,同时需要确保云服务器上80端口可返回200。
部署堆栈时elb参数组中的vpcId及member参数组中的serverId需要根据实际情况填写,未正确填写会导致堆栈部署失败。
弹性负载均衡创建成功:
- 点赞
- 收藏
- 关注作者
评论(0)