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 与伸缩组的耦合程度,大大增加了您使用上的灵活性与实用性。

目录
相关文章
|
负载均衡 安全 前端开发
百度搜索:蓝易云【Nginx与Tomcat负载均衡-动静分离教程】
这些是将Nginx与Tomcat结合使用实现负载均衡和动静分离的基本步骤。根据您的需求和具体环境,可能还需要进行其他配置和调整。请确保在进行任何与网络连接和安全相关的操作之前,详细了解您的网络环境和安全需求,并采取适当的安全措施。
117 1
|
负载均衡 前端开发 应用服务中间件
【Linux】Nginx安装使用负载均衡及动静分离(前后端项目部署),前端项目打包
【Linux】Nginx安装使用负载均衡及动静分离(前后端项目部署),前端项目打包
787 0
|
2月前
|
负载均衡 前端开发 应用服务中间件
Tomcat的负载均衡和动静分离(与nginx联动)
总的来说,负载均衡和动静分离是提高Web应用性能的两个重要手段。通过合理的配置和使用,我们可以让Web应用更好地服务于用户。
113 21
|
2月前
|
负载均衡 Java 应用服务中间件
Tomcat与Nginx的负载均衡与动静分离技巧
总的来说,Tomcat和Nginx各有各的优点,在负载均衡和动静分离这两方面它们都有很好的应用。灵活使用这两个工具能够让Web应用具有更好的扩展性和用户体验。
98 14
|
2月前
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
107 11
|
负载均衡 前端开发 应用服务中间件
Linux之Nignx及负载均衡&动静分离
Linux之Nignx及负载均衡&动静分离
214 0
|
负载均衡 算法 前端开发
Ngnix之反向代理、负载均衡、动静分离
Nginx是一个高性能的开源Web服务器,它还可以用作反向代理、负载均衡器以及动静分离的工具。
222 0
|
负载均衡 前端开发 应用服务中间件
百度搜索:蓝易云【Nginx使用之反向代理、负载均衡、动静分离教程。】
通过这样的配置,Nginx将根据请求的URL路径选择是将请求转发到后端服务器还是直接返回静态资源文件。
203 0
|
负载均衡 前端开发 应用服务中间件
Nignx及负载均衡&动静分离->nginx简介,nginx搭载负载均衡提供前后分离后台接口数据上,nginx搭载负载均衡提供前后分离后台接口数据下,前端项目打包,前端项目Linux部署
Nignx及负载均衡&动静分离->nginx简介,nginx搭载负载均衡提供前后分离后台接口数据上,nginx搭载负载均衡提供前后分离后台接口数据下,前端项目打包,前端项目Linux部署
134 0
|
缓存 负载均衡 应用服务中间件
linux之Nignx及负载均衡&动静分离
linux之Nignx及负载均衡&动静分离
358 0