博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过资源编排快速的构建负载均衡(SLB)
阅读量:6412 次
发布时间:2019-06-23

本文共 3968 字,大约阅读时间需要 13 分钟。

负载均衡(Load Balancer)是对多台云服务器进行流量分发的负载均衡服务。负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。同样在实际的项目开发中,通过多个负载均衡,我们可以方便的实现灰度发布。

资源编排的负载均衡功能介绍

配置和管理一个负载均衡实例,主要涉及3部分的功能操作,包括:

  • 负载均衡实例属性配置:通过实例属性配置来定义一个负载均衡实例的类型
  • 负载均衡服务监听配置:通过服务监听配置来定义一个负载均衡实例的各项策略和转发规则
  • 负载均衡后端服务器配置:通过后端服务器配置来定义一个负载均衡实例后端用来处理用户请求的多个ECS实例

资源编排将上述的服务抽象为下面的资源类型:

  • ALIYUN::SLB::LoadBalancer

  • ALIYUN::SLB::Listener

  • ALIYUN::SLB::BackendServerAttachment

  • ALIYUN::SLB::LoadBalancerClone

    • 深度复制一个SLB,包括监听规则和状态,这个在另外的文章专门介绍。

负载均衡的实践

首先我们创建一个空的负载均衡,和其它的资源类型一样,我们首先创建一个JSON的模板。

创建一个负载均衡

根据模板定义我们可以选择付费类型为按流量和固定带宽。对于VPC类型的负载均衡需要提供相应的VpcIdVSwitchId即可。

{  "ROSTemplateFormatVersion": "2015-09-01",  "Resources": {    "CreateLoadBalancer": {      "Properties": {        "AddressType": "internet",        "InternetChargeType": "paybytraffic",        "LoadBalancerName": "createByRos"      },      "Type": "ALIYUN::SLB::LoadBalancer"    }  },  "Outputs": {    "LoadBalanceDetails": {      "Value": {        "Fn::GetAtt": [          "CreateLoadBalancer",          "LoadBalancerId"        ]      }    }  }}

在负载均衡上创建监听

只创建一个负载均衡是不工作的,接着我们需要创建像对应的监听。在下面的例子中我们创建一个HTTP的监听,将前端的80端口映射到后端的8080端口上。

在这里我们添加了一个新的资源ALIYUN::SLB::Listener, 基本配置和SLB的控制台类似。相比控制台的输入参数,这里抽象为了键值对,可以更加快捷方便的实现。创建的监听在生产之后将会自动启动。

{  "ROSTemplateFormatVersion": "2015-09-01",  "Resources": {    "LoadBalancer": {      "Properties": {        "AddressType": "internet",        "InternetChargeType": "paybytraffic",        "LoadBalancerName": "createByRos"      },      "Type": "ALIYUN::SLB::LoadBalancer"    },    "CreateListener": {      "Type": "ALIYUN::SLB::Listener",      "Properties": {          "LoadBalancerId": {"Ref": "LoadBalancer"},          "ListenerPort": "80",          "BackendServerPort": 8080,          "Bandwidth": 1,          "Protocol": "http",          "HealthCheck": {              "HealthyThreshold": 3,              "UnhealthyThreshold": 3,              "Interval": 2,              "Timeout": 5,              "HttpCode": "http_2xx,http_3xx,http_4xx,http_5xx"          },          "Scheduler": "wrr"      }    },  },  "Outputs": {    "LoadBalanceDetails": {      "Value": {        "Fn::GetAtt": [          "LoadBalancer",          "LoadBalancerId"        ]      }    }  }}

在负载均衡上挂载ECS资源

最后我们挂载相对应的ECS,并设置权重。权重的范围为0-100。权重0代表着优雅的下线,将不再输入流量。

{  "ROSTemplateFormatVersion": "2015-09-01",  "Parameters": {    "InstanceOne": {      "Description": "需要挂载的ECS的实例Id",      "Type": "String"    },     "InstanceTwo": {      "Description": "需要挂载的ECS的实例Id",      "Type": "String"    },     },  "Resources": {    "LoadBalancer": {      "Properties": {        "AddressType": "internet",        "InternetChargeType": "paybytraffic",        "LoadBalancerName": "createByRos"      },      "Type": "ALIYUN::SLB::LoadBalancer"    },    "CreateListener": {      "Type": "ALIYUN::SLB::Listener",      "Properties": {          "LoadBalancerId": {"Ref": "LoadBalancer"},          "ListenerPort": "80",          "BackendServerPort": 8080,          "Bandwidth": 1,          "Protocol": "http",          "HealthCheck": {              "HealthyThreshold": 3,              "UnhealthyThreshold": 3,              "Interval": 2,              "Timeout": 5,              "HttpCode": "http_2xx,http_3xx,http_4xx,http_5xx"          },          "Scheduler": "wrr"      }    },    "AttachEcs": {      "Type": "ALIYUN::SLB::BackendServerAttachment",      "Properties": {        "LoadBalancerId": {"Ref": "LoadBalancer"},        "BackendServers": [            {                "ServerId": {"Ref": "InstanceOne"},                "Weight": 100            },             {                "ServerId": {"Ref": "InstanceTwo"},                "Weight": 100            }                   ]      }        }  },  "Outputs": {    "LoadBalanceDetails": {      "Value": {        "Fn::GetAtt": [          "LoadBalancer",          "LoadBalancerId"        ]      }    }  }}

当开发和测试完成之后,您可以通过删除资源栈,这样创建的负载均衡,监听将会被快速的删除。

通过抽象化的模板。可以把日常的挂载SLB和卸载SLB通过资源编排的模板来快速的实现,降低重复劳动,提升发布效率。

为了更加方便的简化您的操作,我们将在下篇讲解SLB的Clone。

转载地址:http://xwura.baihongyu.com/

你可能感兴趣的文章
【iOS开发-91】GCD的同步异步串行并行、NSOperation和NSOperationQueue一级用dispatch_once实现单例...
查看>>
Redis+Spring缓存实例
查看>>
Storm集群安装详解
查看>>
centos7.x搭建svn server
查看>>
原码编译安装openssh6.7p1
查看>>
项目实战:自定义监控项--监控CPU信息
查看>>
easyui-datetimebox设置默认时分秒00:00:00
查看>>
蚂蚁分类信息系统5.8多城市UTF8开源优化版
查看>>
在django1.2+python2.7环境中使用send_mail发送邮件
查看>>
“Metro”,移动设备视觉语言的新新人类
查看>>
PHP源代码下载(本代码供初学者使用)
查看>>
Disruptor-NET和内存栅栏
查看>>
Windows平台ipod touch/iphone等共享笔记本无线上网设置大全
查看>>
播放加密DVD
查看>>
产品设计体会(3013)项目的“敏捷沟通”实践
查看>>
RHEL6.3基本网络配置(1)ifconfig命令
查看>>
网络诊断工具之—路由追踪tracert命令
查看>>
Java模拟HTTP的Get和Post请求(增强)
查看>>
php 环境搭建(windows php+apache)
查看>>
让虚拟机的软盘盘符不显示(适用于所有windows系统包括Windows Server)
查看>>