AutoScaling彈性伸縮附加與分離負載均衡例項
阿里雲彈性伸縮服務(AutoScaling)與負載均衡(Slb)結合,使您可以將 Slb 例項附加到伸縮組,並通過 Slb 例項可以將流量分配到伸縮組中的各個例項。長久以來,Slb 例項只能在建立伸縮組的時候進行指定,不支援修改。這意味著您在建立伸縮組的同時,就不得不仔細的考量好自己的業務需求量及所需要的 Slb 例項數量。現在,AutoScaling推出最新功能:AttachLoadBalancer和DetachLoadBalancers,這種尷尬的現狀將一去不復返。
本文將為您介紹如何將 Slb 例項附加到和分離出伸縮組。
負載均衡
Slb 是將流量根據轉發策略分發到後端多個雲伺服器的分發控制服務,Slb 通過流量轉發,健康檢查等一系列策略增強了應用的整體服務能力。
一個 Slb 通常包含三個部分:
- Slb 例項(Server Load Balancer Instance)
- 監聽(Listeners)
- 後端伺服器(Backend Servers)
Slb例項
Slb 例項是一個執行的 Slb 服務實體。要使用 Slb 服務,您必須建立一個 Slb 例項,然後在例項中新增監聽和後端伺服器。關於 Slb 例項更詳細的資訊請參考 什麼是Slb例項。
監聽
建立 Slb 例項後,您需要為例項配置監聽。Slb 例項監聽負責檢查連線請求,然後根據排程演算法定義的轉發策略將請求流量分發至後端伺服器。關於 Slb 監聽的更詳細資訊請參考 監聽介紹。
後端伺服器
在使用 Slb 服務前,您需要新增 ECS 例項作為 Slb 例項的後端伺服器,用來接收 Slb 監聽轉發的請求。與AutoScaling配合使用時,將把伸縮組中的例項自動新增到伸縮組附加 Slb 例項的後端伺服器。關於 Slb 後端伺服器的更詳細資訊請參考 後端伺服器概述。
將 Slb 附加到伸縮組
您可以選擇將 Slb 例項附加到伸縮組上,在將負載附加到伸縮組的時候根據您指定的forceAttach引數值,將有以下兩種行為:
- forceAttach為true,將 Slb 附加到伸縮組上的同時,將把當前伸縮組內的所有例項新增到 Slb 例項後端。
- forceAttach為false,將 Slb 附加到伸縮組上的同時,不會新增當前組內已有例項到 Slb例項後端。
對於一個已經附加在伸縮組上的 Slb例項,如果您想將伸縮組中當前全部例項加入到某一 Slb 例項的後端,您可以選擇再次將該 Slb 附加到伸縮組,並選擇 forceAttach 為 true。
您需要注意,將Slb例項新增到伸縮組時,由於Slb例項型別的限制,Slb例項需要滿足以下條件:
- Slb例項必須是使用者擁有的未刪除例項。
- Slb例項與伸縮組必須在相同地域(region)下。
- Slb例項必須為active狀態。
- Slb例項必須至少配置一個監聽並開啟健康檢查。
- 如果Slb例項與伸縮組都為專有網路(vpc網路)型別,需要處於相同的vpc下。
- 當伸縮組為vpc網路型別,Slb例項為經典網路型別時,Slb例項後端伺服器中如果包含vpc例項,必須與當前伸縮組處於相同vpc下。
- 伸縮組中附加的Slb例項個數必須少於伸縮組的配額。
將 Slb 分離出伸縮組
在將 Slb 從伸縮組移除的時,根據您指定的 forceDetach引數,將有以下兩種行為:
- forceDetach 為true,將 Slb 從伸縮組移除的同時,將把 Slb 後端例項中與伸縮組關聯的例項移除。
- 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 與伸縮組的耦合程度,大大增加了您使用上的靈活性與實用性。
相關文章
- AutoScaling彈性伸縮附加與分離RDS例項
- AutoScaling 彈性伸縮附加與分離RDS例項
- AutoScaling彈性伸縮配置重大升級
- 使用 tke-autoscaling-placeholder 實現秒級彈性伸縮
- 彈性負載均衡(Elastic Load Balance,ELB)負載AST
- Nginx 動靜分離與負載均衡的實現Nginx負載
- 全域性負載均衡與CDN內容分發負載
- 彈性佈局(伸縮佈局)
- Knative Autoscaler 自定義彈性伸縮
- openGauss JDBC客戶端負載均衡與讀寫分離JDBC客戶端負載
- 資料庫的讀寫分離與負載均衡策略資料庫負載
- Nginx—tomcat負載均衡動靜分離群集NginxTomcat負載
- MySQL Route負載均衡與讀寫分離Docker環境使用MySql負載Docker
- Nginx使用篇:實現負載均衡、限流與動靜分離Nginx負載
- AutoScaling目標追蹤伸縮規則概述
- Kubernetes彈性伸縮全場景解讀(五) - 定時伸縮元件釋出與開源元件
- windows NLB+ARR實現Web負載均衡高可用/可伸縮的方法WindowsWeb負載
- Mycat實現mysql的負載均衡讀寫分離MySql負載
- 華為雲:彈性負載均衡健康檢查異常負載
- 全域性負載均衡方案負載
- 負載均衡和動態負載均衡分別是什麼?-VeCloud負載Cloud
- jQuery實現的表格展開伸縮效果例項jQuery
- Fluid 給資料彈性一雙隱形的翅膀 -- 自定義彈性伸縮UI
- Nginx+Tomcat負載均衡,動靜分離群集部署解析NginxTomcat負載
- 最佳實踐:負載均衡SLB支援自定義VPC例項IP地址負載
- KubeVela + KEDA:為應用帶來“與生俱來”的彈性伸縮能力
- 如何使用 Kubernetes 實現應用程式的彈性伸縮
- EMQX Operator 如何快速建立彈性伸縮的 MQTT 叢集MQQT
- Effective HPA:預測未來的彈性伸縮產品
- docker+mysql叢集+讀寫分離+mycat管理+垂直分庫+負載均衡DockerMySql負載
- Nginx+Tomcat實現負載均衡、動靜分離叢集部署NginxTomcat負載
- 帶你瞭解Nginx+Tomcat負載均衡,動靜分離群集NginxTomcat負載
- TKE基於彈性網路卡直連Pod的網路負載均衡負載
- gRPC負載均衡(自定義負載均衡策略)RPC負載
- gRPC負載均衡(客戶端負載均衡)RPC負載客戶端
- 負載均衡簡介與搭建負載
- Kubernetes:服務與負載均衡負載
- 四. SpringCloud負載均衡與呼叫SpringGCCloud負載