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 实例后,您需要为实例配置监听。Slb 实例监听负责检查连接请求,然后根据调度算法定义的转发策略将请求流量分发至后端服务器。关于 Slb 监听的更详细信息请参考 监听介绍

后端服务器

在使用 Slb 服务前,您需要添加 ECS 实例作为 Slb 实例的后端服务器,用来接收 Slb 监听转发的请求。与AutoScaling配合使用时,将把伸缩组中的实例自动添加到伸缩组附加 Slb 实例的后端服务器。关于 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 与伸缩组的耦合程度,大大增加了您使用上的灵活性与实用性。

目录
相关文章
|
1月前
|
弹性计算 监控 负载均衡
|
1月前
|
负载均衡 网络协议 网络安全
SLB-Backend多实例部署配置健康检查
【10月更文挑战第22天】
63 3
|
1月前
|
运维 负载均衡 算法
|
1月前
|
负载均衡 网络协议 数据库
选择适合自己的数据库多实例负载均衡技术
【10月更文挑战第23天】选择适合自己的数据库多实例负载均衡技术需要全面考虑多种因素。通过深入的分析和评估,结合自身的实际情况,能够做出明智的决策,为数据库系统的高效运行提供有力保障。
111 61
|
1月前
|
弹性计算 缓存 监控
SLB-Backend多实例部署
【10月更文挑战第21天】
34 5
|
1月前
|
缓存 负载均衡 监控
数据库多实例的负载均衡技术深入
【10月更文挑战第23天】数据库多实例负载均衡技术是确保数据库系统高效运行的重要手段。通过合理选择负载均衡策略、实时监控实例状态、不断优化调整,能够实现资源的最优分配和系统性能的提升。在实际应用中,需要根据具体情况灵活运用各种负载均衡技术,并结合其他相关技术,以满足不断变化的业务需求。
|
1月前
|
负载均衡 网络协议 数据安全/隐私保护
创建和删除负载均衡实例
【10月更文挑战第18天】
14 1
|
5月前
|
运维 负载均衡 Serverless
Serverless 应用引擎使用问题之如何将应用部署到多个实例中,并利用SLB来分发请求负载
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
5月前
|
弹性计算 负载均衡 网络协议
云计算中的弹性伸缩与负载均衡技术解析
【7月更文挑战第4天】弹性伸缩与负载均衡作为云计算平台中的两大关键技术,对于构建高可用、可扩展的应用系统具有重要意义。通过合理利用这两种技术,企业可以灵活应对不断变化的业务需求,降低运营成本,提高资源利用效率。未来,随着技术的不断进步和应用的深入,弹性伸缩与负载均衡技术将在更多领域发挥重要作用,推动云计算技术的持续发展。
|
7月前
|
弹性计算 API
弹性伸缩期望实例数
弹性伸缩期望实例数
70 18