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

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 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 与伸缩组的耦合程度,大大增加了您使用上的灵活性与实用性。

目录
相关文章
|
3天前
|
弹性计算 负载均衡 网络协议
创建slb实例
在阿里云上创建SLB实例涉及登录控制台、进入SLB服务、创建实例(选择网络类型、设置实例信息、配置监听规则)、关联后端ECS实例及确认创建。确保SLB与ECS在同一地域和可用区,以降低延迟。实际操作请参照最新控制台界面,并考虑可能需配置的额外功能,如证书管理和安全策略。
32 6
|
7月前
|
弹性计算 负载均衡 NoSQL
【红包雨功能的】环境部署(弹性伸缩、负载均衡、Redis读写分离、云服务器部署)(四)
【红包雨功能的】环境部署(弹性伸缩、负载均衡、Redis读写分离、云服务器部署)
|
7月前
|
弹性计算 负载均衡 NoSQL
【红包雨功能的】环境部署(弹性伸缩、负载均衡、Redis读写分离、云服务器部署)(二)
【红包雨功能的】环境部署(弹性伸缩、负载均衡、Redis读写分离、云服务器部署)
|
7月前
|
弹性计算 负载均衡 NoSQL
【红包雨功能的】环境部署(弹性伸缩、负载均衡、Redis读写分离、云服务器部署)(一)
【红包雨功能的】环境部署(弹性伸缩、负载均衡、Redis读写分离、云服务器部署)
|
7月前
|
弹性计算 负载均衡 NoSQL
【红包雨功能的】环境部署(弹性伸缩、负载均衡、Redis读写分离、云服务器部署)(三)
【红包雨功能的】环境部署(弹性伸缩、负载均衡、Redis读写分离、云服务器部署)
|
3天前
|
弹性计算 API
弹性伸缩期望实例数
弹性伸缩期望实例数
35 18
|
3天前
|
存储 运维 Kubernetes
容器服务ACK常见问题之在ALB中看不到新的实例如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
3天前
|
负载均衡 安全 应用服务中间件
Nginx + Tomcat+HTTP/HTTPS实现负载均衡实例
Nginx + Tomcat+HTTP/HTTPS实现负载均衡实例
182 0
|
8月前
|
弹性计算 负载均衡 网络协议
弹性计算Clouder认证:高可用应用架构——课时6:如何将云服务器ECS实例绑定到负载均衡?
弹性计算Clouder认证:高可用应用架构——课时6:如何将云服务器ECS实例绑定到负载均衡?
199 0
|
10月前
|
负载均衡 应用服务中间件 Linux
【Nginx】第五章 Nginx配置实例-负载均衡
【Nginx】第五章 Nginx配置实例-负载均衡
148 0
【Nginx】第五章 Nginx配置实例-负载均衡