AutoScaling 弹性伸缩附加与分离负载均衡实例

简介: AutoScaling推出最新功能:AttachLoadBalancer和DetachLoadBalancers。伸缩组中负载均衡实例不可修改的现状一去不复返啦。

阿里云弹性伸缩服务(AutoScaling)与负载均衡(Slb)结合,使您可以将 Slb 实例附加到伸缩组,并通过 Slb 实例可以将流量分配到伸缩组中的各个实例。长久以来,Slb 实例只能在创建伸缩组的时候进行指定,不支持修改。这意味着您在创建伸缩组的同时,就不得不仔细的考量好自己的业务需求量及所需要的 Slb 实例数量。现在,AutoScaling推出最新功能:AttachLoadBalancer和DetachLoadBalancers,这种尴尬的现状将一去不复返。

本文将为您介绍如何将 Slb 实例附加到和分离出伸缩组。

负载均衡

Slb 是将流量根据转发策略分发到后端多个云服务器的分发控制服务,Slb 通过流量转发,健康检查等一系列策略增强了应用的整体服务能力。

一个 Slb 通常包含三个部分:

  1. Slb 实例(Server Load Balancer Instance)
  2. 监听(Listeners)
  3. 后端服务器(Backend Servers)

Slb实例

Slb 实例是一个运行的 Slb 服务实体。要使用 Slb 服务,您必须创建一个 Slb 实例,然后在实例中添加监听和后端服务器。

监听

创建 Slb 实例后,您需要为实例配置监听。Slb 实例监听负责检查连接请求,然后根据调度算法定义的转发策略将请求流量分发至后端服务器。

后端服务器

在使用 Slb 服务前,您需要添加 ECS 实例作为 Slb 实例的后端服务器,用来接收 Slb 监听转发的请求。与AutoScaling配合使用时,将把伸缩组中的实例自动添加到伸缩组附加 Slb 实例的后端服务器。

将 Slb 附加到伸缩组

您可以选择将 Slb 实例附加到伸缩组上,在将负载附加到伸缩组的时候根据您指定的forceAttach参数值,将有以下两种行为:

  1. forceAttach为true,将 Slb 附加到伸缩组上的同时,将把当前伸缩组内的所有实例添加到 Slb 实例后端。
  2. forceAttach为false,将 Slb 附加到伸缩组上的同时,不会添加当前组内已有实例到 Slb实例后端。

对于一个已经附加在伸缩组上的 Slb实例,如果您想将伸缩组中当前全部实例加入到某一 Slb 实例的后端,您可以选择再次将该 Slb 附加到伸缩组,并选择 forceAttach 为 true。

您需要注意,将Slb实例添加到伸缩组时,由于Slb实例类型的限制,Slb实例需要满足以下条件:

  1. Slb实例必须是用户拥有的未删除实例。
  2. Slb实例与伸缩组必须在相同地域(region)下。
  3. Slb实例必须为active状态。
  4. Slb实例必须至少配置一个监听并开启健康检查。
  5. 如果Slb实例与伸缩组都为专有网络(vpc网络)类型,需要处于相同的vpc下。
  6. 当伸缩组为vpc网络类型,Slb实例为经典网络类型时,Slb实例后端服务器中如果包含vpc实例,必须与当前伸缩组处于相同vpc下。
  7. 伸缩组中附加的Slb实例个数必须少于伸缩组的配额。

将 Slb 分离出伸缩组

在将 Slb 从伸缩组移除的时,根据您指定的 forceDetach参数,将有以下两种行为:

  1. forceDetach 为true,将 Slb 从伸缩组移除的同时,将把 Slb 后端实例中与伸缩组关联的实例移除。
  2. forceDetach 为false,将 Slb 从伸缩组移除的同时,不会从 Slb 后端实例中移除与伸缩组关联实例。

在分离伸缩组的Slb实例时,您应该确认Slb实例不再向伸缩组内实例分发请求,以免造成您的服务请求丢失。并且,不同于 attachLoadBalancer操作,您不能多次尝试移除伸缩组中的同一个 Slb 实例。

最佳实践

SDK进行Attach/Detach Slb

此处,以AutoScaling java sdk为例,介绍如果通过 openapi 的方式来完成附加和移除 Slb 实例。

在使用sdk之前,首先需要下载相应的依赖,您可以在阿里云 SDK 中查找 java SDK ,下载所需依赖。如果您使用maven管理您的项目,您只需要在项目中添加如下依赖信息:

          <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.0.2</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-ess</artifactId>
            <version>2.2.1</version>
        </dependency>

AttachLoadBalancers:

IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", "yourAk", "yourSecret")
IAcsClient client = new DefaultAcsClient(profile);
AttachLoadBalancersRequest request = new AttachLoadBalancersRequest();
        request.setScalingGroupId(scalingGroupId); // 伸缩组id
        request.setLoadBalancers(Arrays.asList(loadBalancerId));//附加的Slb实例列表
        request.setForceAttach(ForceAttach);
AttachLoadBalancersResponse response = client.getAcsResponse(request);

上述AttachLoadBalancers的代码中,目前最多支持一次附加5个Slb实例到伸缩组。forceAttach参数表示是否将伸缩组内当前所拥有的全部实例加入到Slb实例的后端。

DetachLoadBalancers:

DetachLoadBalancersRequest request = new DetachLoadBalancersRequest();
        request.setRegionId(REGION_ID);
        request.setScalingGroupId(scalingGroupId);
        request.setLoadBalancers(Arrays.asList(loadBalancerId));
        request.setForceDetach(ForceDetach);
DetachLoadBalancersResponse response = client.getAcsResponse(request);

通过 openapi 的方式进行 Slb 的附加和移除操作,目前支持一次最多操作5个Slb实例。

写在最后

AttachLoadBalancer操作与DetachLoadBalancer操作使得您可以随时随意的进行 Slb 的增加和减少操作,降低了 Slb 与伸缩组的耦合程度,大大增加了您使用上的灵活性与实用性。

目录
相关文章
|
3月前
|
弹性计算 负载均衡 监控
slb弹性扩展
【11月更文挑战第4天】
49 2
|
3月前
|
运维 负载均衡 算法
|
3月前
|
弹性计算 监控 云计算
SLB-Backend的弹性伸缩
【10月更文挑战第19天】
56 2
|
4月前
|
Prometheus Kubernetes 监控
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
167 1
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
|
4月前
|
Kubernetes 监控 调度
k8s学习--kubernetes服务自动伸缩之垂直伸缩(资源伸缩)VPA详细解释与安装
k8s学习--kubernetes服务自动伸缩之垂直伸缩(资源伸缩)VPA详细解释与安装
149 1
|
6月前
|
存储 弹性计算 关系型数据库
olarDB 自动弹性伸缩机制详解
【8月更文第27天】 PolarDB 是阿里云推出的一款兼容 MySQL、PostgreSQL 和 Oracle 的关系型数据库服务。它通过独特的存储与计算分离架构实现了数据的高可用性和高性能。本文将详细介绍 PolarDB 的自动弹性伸缩机制,以及它是如何根据负载动态扩展计算和存储资源的。
89 0
|
7月前
|
运维 负载均衡 Serverless
Serverless 应用引擎使用问题之如何将应用部署到多个实例中,并利用SLB来分发请求负载
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
9月前
|
存储 弹性计算 负载均衡
弹性伸缩工作原理
弹性伸缩工作原理
102 11
|
9月前
|
弹性计算
弹性伸缩使用场景
弹性伸缩使用场景
68 5
|
弹性计算 Kubernetes 应用服务中间件
通过HPA进行Pod水平弹性伸缩
本场景带您体验如何使用阿里云指标完成Pods的自动伸缩。