日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

將Web服務從單體架構演進為彈性高可用架構

更新時間:
一鍵部署
我的部署

隨著業(yè)務增長,單體架構的Web服務的業(yè)務負載也逐漸增加,導致系統穩(wěn)定性降低。此時,您可以將單體架構演進為彈性高可用架構,通過伸縮組水平擴展服務器來分攤負載,從而增強系統穩(wěn)定性和響應速度。

為什么使用彈性高可用架構?

單體架構的問題

一種常見的單體架構如圖所示,所有的資源部署在一臺ECS實例中,用戶通過域名(或IP)直接訪問到單一服務器中的服務。該架構存在兩方面的問題:

  • 單點故障:使用單體架構部署,一旦服務出現故障后,整個業(yè)務將發(fā)生中斷,嚴重影響用戶體驗,造成用戶流失。

  • 性能瓶頸:隨著業(yè)務訪問量的增長,單體架構可能會遇到性能瓶頸,進而阻礙業(yè)務的擴展。特別是在遭遇突發(fā)性大量訪問時,容易導致服務響應變慢。

image

彈性高可用架構特點

彈性高可用架構如圖所示。用戶通過域名訪問業(yè)務服務集群時,請求會通過負載均衡器,分攤到集群的各個業(yè)務服務實例上的業(yè)務服務進行處理。該架構特點如下:

  • 避免單點故障(高可用):使用多臺服務器來分攤業(yè)務負載,從而提高服務承載能力,避免出現單一服務故障造成的業(yè)務中斷。

  • 彈性伸縮:使用伸縮組管理服務集群可以一鍵修改集群服務器數量,快速橫向擴展。同時還可以設置自動伸縮的機制,實現根據業(yè)務負載按需擴展。

image

如何將單體架構演進為彈性高可用架構?

image

如圖所示,將左側單體架構演進為彈性高可用架構需要經歷兩個階段。

  • 階段一:分離數據存儲與業(yè)務邏輯

    由于彈性高可用架構是以ECS實例為單元進行復制,因此在實施彈性高可用架構時,需要確保ECS實例(包含其中的業(yè)務服務)的數據存儲業(yè)務邏輯分離,即無狀態(tài)化,避免因橫向擴展實例而導致的數據一致性問題。

    例如,在復制ECS實例時,應確保不會復制數據庫,從而防止集群使用多個不同的數據源。通過將數據存儲從ECS中抽離出來,確保所有實例共享同一數據源,保持數據的一致性。

    如果在您的實際業(yè)務中,出現了以下幾種常見的情況時,您需要評估該情況是否會對您的業(yè)務造成影響,從而改進業(yè)務架構。

    常見的需要注意的情況

    情況1:在實例中部署了MySQL、Redis等服務。

    如果您的ECS實例中包含數據庫等有狀態(tài)服務,在復制該ECS橫向擴展時,會造成您的集群存在多個數據源,造成數據不一致等問題。遇到此情況時,您可以考慮抽離MySQL或者Redis等有狀態(tài)的服務單獨部署。

    此外,您還可以直接將自建MySQL或Redis遷移到云數據庫RDS,相比自建數據庫,RDS更加安全可靠、運維更加方便,自建數據庫遷移上云,請參見自建數據庫遷移到云數據庫

    情況2:在業(yè)務服務中用到了Session技術。

    如過您在業(yè)務服務中使用到了Session技術用于保存用戶登錄狀態(tài),擴展服務后,會導致服務副本之間的登錄信息(Session信息)不共享,從而造成用戶頻繁被彈出。此情況,您可以考慮單獨部署Redis做共享Session,來解決此問題。

    情況3:某些不能同時執(zhí)行的定時任務。

    比如您的業(yè)務中存在每天只能執(zhí)行一次的定時任務,在橫向擴展后,在這定時任務執(zhí)行的時間點多臺服務器會同時執(zhí)行該定時任務,此情況您可能需要調整任務處理邏輯。

  • 階段二:將架構演進為彈性高可用架構

    在將ECS實例中的數據存儲業(yè)務邏輯分離之后,可以通過創(chuàng)建副本的方式進行橫向擴展ECS實例(包含其中業(yè)務服務)。

    此時將服務集群遷移至伸縮組,利用其彈性能力快速創(chuàng)建服務的副本,使用負載均衡器作為服務集群的訪問入口,分攤業(yè)務負載,確保系統的穩(wěn)定和高效。

快速遷移以實現彈性高可用

方案介紹

如果您已經完成數據存儲業(yè)務邏輯的分離(無狀態(tài)化),您可以通過以下步驟快速將單體架構服務遷移到伸縮組實現彈性高可用架構。

  1. 部署示例網站(準備實例)。本方案會模擬一個已經完成無狀態(tài)化的示例Web服務實例,以該實例為例,演示遷移過程。您也可以使用現有實例進行操作。

  2. 構建包含業(yè)務服務的實例鏡像。該鏡像之后會作為您集群實例的啟動鏡像,實例啟動時自動啟動業(yè)務服務。

  3. 創(chuàng)建管理服務集群的伸縮組。之后會通過該伸縮組快速復制實例(橫向擴展)。

  4. 為集群設置統一訪問入口。關聯負載均衡器實現統一訪問的入口。

  5. 擴展實例(驗證)。快速復制實例(橫向擴展),訪問負載均衡器以驗證集群正常工作。

1. 部署示例網站

首先您需要準備能夠代表生產環(huán)境的應用實例,用于后續(xù)的復制和自動化部署。

本教程為您提供一個示例網站服務,您可以使用該服務體驗遷移過程。單擊一鍵部署示例服務完成示例服務的搭建。

該示例網站服務包含一個Web服務軟件包及其運行環(huán)境自啟動腳本,且該實例已經完成數據存儲與業(yè)務邏輯的分離即無狀態(tài)化。
如果您的業(yè)務服務實例已經無狀態(tài)化,且具備以上條件(軟件包、環(huán)境、自啟動腳本),您也可以使用您的實際業(yè)務服務代替該實例進行后續(xù)的遷移操作。

示例服務部署說明

如右圖所示,在本示例架構的ECS實例中,包含一個連接數據庫的Web服務,訪問該服務的地址,可以查看當前服務器的IP以及從數據庫中查詢到的一個字符串。同時,會為該服務設置開機自啟動命令,在ECS啟動時會自動運行該服務。

一鍵部署示例服務功能基于資源編排 ROS(Resource Orchestration Service)實現,使用該功能會在您的阿里云賬戶下創(chuàng)建一個專有網絡(VPC)以及交換機(vSwitch)、一個包含示例服務的ECS實例、云數據庫 RDS MySQL版。
image

部署該實例服務的具體操作步驟如下:

  1. 單擊一鍵部署示例服務按鈕,進入一鍵部署頁。

  2. 根據界面提示,選擇地域可用區(qū)

  3. 在實例配置中,選擇實例規(guī)格并設置實例密碼

    選擇最低配置即可,您可以選擇共享型實例節(jié)省體驗成本。不同地域及可用區(qū)所支持的實例規(guī)格不同,請以界面顯示為準。
  4. 選擇RDS實例規(guī)格并設置RDS數據庫密碼

  5. 確認費用后,單擊立即部署按鈕,等待創(chuàng)建完成。

    您可以在具體資源頁簽下查看進度。您需要關注的資源如圖所示,從1到5依次為安全組、專有網絡VPC、交換機、ECS實例、RDS數據庫。

    image

  6. 查看輸出頁簽下,找到輸出的WebUrl的鏈接。

    您可以在瀏覽器多次訪問該鏈接,每次看到的都是相同的IP,證明訪問到同一臺ECS實例。

    image

2. 構建包含業(yè)務服務的實例鏡像

為確保后續(xù)您新擴展的實例中部署有業(yè)務服務和設置好的自啟動腳本,您需要先以該實例為基礎創(chuàng)建自定義鏡像,后續(xù)創(chuàng)建的實例會以該鏡像作為基礎鏡像,在實例啟動時,您的業(yè)務服務也隨之啟動。

  1. 進入ECS管理控制臺,將地域切換到您在步驟1中準備的實例的地域。

  2. 找到步驟1中準備好的ECS實例,在右側操作列,選擇image > 云盤與鏡像 > 創(chuàng)建自定義鏡像

    image

  3. 在彈出的創(chuàng)建自定義鏡像對話框中,記錄鏡像名稱,方便后續(xù)查找,單擊確認按鈕,等待鏡像創(chuàng)建完成。您可以在ECS控制臺左側導航欄單擊實例與鏡像 > 鏡像查看鏡像創(chuàng)建進度。

3. 創(chuàng)建管理服務集群的伸縮組

彈性高可用架構的核心是通過伸縮組管理您的服務集群,您可以通過伸縮組快速復制實例,創(chuàng)建并啟用伸縮組具體操作如下:

  1. 進入伸縮組管理頁。

    1. 登錄彈性伸縮控制臺

      如果您是第一次使用彈性伸縮,請根據界面提示開通彈性伸縮的權限。具體操作,請參見服務關聯角色

    2. 在左側導航欄中,單擊伸縮組管理
    3. 在頂部菜單欄處,選擇地域。
  2. 創(chuàng)建伸縮組。

    1. 伸縮組管理頁面,單擊創(chuàng)建伸縮組按鈕進入創(chuàng)建伸縮組頁面。

    2. 在頁面中完成如下配置。表中未涉及的配置項保持默認即可。

      配置項

      說明

      伸縮組名稱

      根據界面提示輸入。本示例伸縮組名稱為ess-demo。

      伸縮組類型

      選中ECS

      組內實例配置信息來源

      選中選擇已有實例

      選擇已有實例

      選擇在步驟1中準備的ECS實例。

      組內最小實例數

      伸縮組中實例數的最小值,當伸縮組實例數低于該值時,會自動觸發(fā)擴展。本示例最小實例數為0。

      組內最大實例數

      伸縮組中實例數的最大值,當伸縮組實例數高于該值時,會自動觸發(fā)收縮。本示例最大實例數為10。

      專有網絡選擇交換機

      這兩個配置項會根據您選擇的ECS實例,自動填充。

      重要

      建議您創(chuàng)建并選擇多個可用區(qū)的交換機,避免出現單一可用區(qū)實例庫存不足導致擴容失敗,創(chuàng)建交換機,請參見創(chuàng)建交換機

      展開高級配置 > 開啟期望實例數

      選擇開啟。開啟該功能之后,可以通過設置期望實例數自動擴縮容。

      展開高級配置 > 組內期望實例數

      輸入0即可,表示先創(chuàng)建一個空的伸縮組。

      展開高級配置 > 實例的健康檢查

      選中實例狀態(tài)檢查負載均衡健康檢查,啟用該功能后,系統會根據健康檢查的結果,確保伸縮組中的所有實例及其業(yè)務服務正常運行。一旦發(fā)現服務異常,將及時用新實例替換故障實例。

    3. 單擊創(chuàng)建按鈕,等待伸縮組創(chuàng)建完成。

  3. 修改伸縮配置中的實例鏡像。

    在通過選擇已有實例創(chuàng)建伸縮組后,會根據ECS的原始鏡像創(chuàng)建一個伸縮配置,通過步驟1創(chuàng)建的實例中,原始鏡像不包含后續(xù)部署好的業(yè)務服務軟件包。因此需要將步驟2中新創(chuàng)建的鏡像覆蓋伸縮配置的基礎鏡像。
    1. 在伸縮組管理頁,找到剛剛創(chuàng)建的伸縮組,在右側操作列下,單擊查看詳情進入該伸縮組的詳情頁。

    2. 如圖所示,在實例配置來源 > 伸縮配置頁簽下,單擊唯一的伸縮配置操作列下的修改鏡像

      image

    3. 在彈出的修改鏡像的彈框中,選擇自定義鏡像,根據界面提示,選擇步驟2中創(chuàng)建的鏡像。單擊確認按鈕完成修改。

  4. 啟用伸縮組。

    在伸縮組管理頁,點擊右上角的啟用按鈕,伸縮組開始工作。

4. 為集群設置統一訪問入口

當您將實例從1臺擴展到多臺時,需要為多臺實例組成的集群設置統一的訪問入口。您需要為伸縮組創(chuàng)建并關聯負載均衡器,使用戶請求通過負載均衡器自動分攤到集群的各臺ECS實例,從而平衡負載,最大化資源利用率。本示例使用應用型負載均衡(ALB)作為負載均衡器,具體操作如下:

4.1 創(chuàng)建負載均衡器

  1. 登錄應用型負載均衡ALB控制臺
  2. 實例頁面,單擊創(chuàng)建應用型負載均衡

  3. 應用型負載均衡(按量付費)購買頁面。根據界面提示完成應用型負載均衡的創(chuàng)建。

    本示例以下配置,未提及配置項保持默認。

    配置項

    說明

    地域

    關聯與步驟1中實例的地域保持一致。

    實例網絡類型

    選擇公網

    VPC

    選擇步驟1中準備實例的VPC。

    可用區(qū)

    至少選擇兩個,如果選擇的可用區(qū)沒有交換機,需要根據界面提示創(chuàng)建對應可用區(qū)的交換機。創(chuàng)建交換機的操作說明,請參見創(chuàng)建交換機

4.2 為業(yè)務集群創(chuàng)建后端服務器組

此后端服務器組將會關聯到伸縮組,伸縮組創(chuàng)建的實例會自動添加到該后端服務器組,通過負載均衡器對外提供服務。

  1. 在應用型負載均衡ALB控制臺。選擇地域。

  2. 單擊左側導航欄的服務器組進入服務器組頁面,單擊創(chuàng)建服務器組按鈕,根據界面提示完成后端服務器組的創(chuàng)建。

    本示例使用以下配置,未提及配置項保持默認。

    配置項

    說明

    服務器組類型

    選擇服務器類型

    服務器組名稱

    根據界面提示輸入,本示例以ess-test-server-group為例。

    VPC

    選擇步驟1中準備的實例的VPC。

4.3 為負載均衡器配置監(jiān)聽

創(chuàng)建一個HTTP監(jiān)聽來轉發(fā)來自HTTP協議的請求,負載均衡實例在監(jiān)聽到HTTP請求時,可以將請求轉發(fā)到后端服務器組的ECS實例中。

  1. 在應用型負載均衡ALB控制臺。選擇地域。

  2. 單擊左側導航欄的實例,找到步驟4.1創(chuàng)建的負載均衡器,在右側操作列下單擊創(chuàng)建監(jiān)聽,根據界面提示完成監(jiān)聽的創(chuàng)建。

    本示例使用以下配置,未提及配置項保持默認。

    配置項

    說明

    選擇監(jiān)聽協議

    選擇HTTP

    監(jiān)聽端口

    負載均衡對外提供服務的端口,本示例服務的使用80,代表監(jiān)聽訪問該負載均衡器80端口的請求。

    選擇服務器組

    選擇步驟4.2創(chuàng)建的服務器組。

4.4 為伸縮組關聯負載均衡器

  1. 在伸縮組管理頁,找到步驟3中創(chuàng)建的伸縮組,在右側操作列下,單擊查看詳情進入該伸縮組的詳情頁。

  2. 基本信息頁簽下,找到關聯負載均衡ALB、NLB服務器組,單擊添加關聯負載均衡ALB、NLB服務器組,在彈出的對話框中單擊添加服務器組,根據界面提示,關聯步驟4.2創(chuàng)建的后端服務器組。完成配置后,單擊確認按鈕完成關聯負載均衡器的操作。

    重要

    該配置項中的端口設置為您的業(yè)務服務對外提供服務的端口,本示例的業(yè)務服務使用80端口。

    image

5. 開始擴展實例(驗證)

在準備好伸縮組并已關聯負載均衡器之后,此時可以開始擴展實例,驗證集群是否可以正常工作。

  1. 觸發(fā)伸縮組的擴容操作,伸縮組將自動創(chuàng)建實例。

    您可以通過修改伸縮組期望實例數觸發(fā)擴容操作。具體操作步驟如下:

    1. 在伸縮組管理頁,找到剛剛創(chuàng)建的伸縮組,在右側操作列下,單擊查看詳情進入該伸縮組的詳情頁。

    2. 基本信息頁簽下,找到實例伸縮概覽,單擊image,在彈出的修改實例伸縮概覽彈框中,修改組內期望實例數,從0修改為3(代表集群需要3臺ECS實例對外提供服務),單擊確認完成修改。

    3. 等待實例創(chuàng)建完成,完成后會在伸縮組下創(chuàng)建3個ECS實例,您可以在實例列表頁簽下查看實例的創(chuàng)建情況。

  2. 訪問負載均衡器的地址,驗證請求可以負載均衡到新創(chuàng)建的實例。

    1. 進入應用型負載均衡ALB控制臺

    2. 找到步驟4.1中創(chuàng)建的負載均衡器,在DNS名稱下,找到訪問的網址。

      image

    3. 多次訪問該網址,可以看到不同的IP地址,證明可以通過負載均衡器訪問到不同的服務器。

6. (可選)資源清理

如果您不再需要該集群,您可以通過以下流程清理資源。

  1. 釋放步驟4.1中創(chuàng)建的負載均衡器。具體操作,請參見釋放ALB實例

  2. 刪除步驟3中創(chuàng)建的伸縮組。具體操作,請參見刪除伸縮組

  3. 刪除步驟4.2中創(chuàng)建的后端服務器組。具體操作,請參見刪除服務器組

  4. 刪除步驟2中構建的自定義鏡像。具體操作,請參見刪除自定義鏡像

  5. 刪除您在步驟3步驟4.1中創(chuàng)建的交換機(vSwitch),具體操作,請參見刪除專有網絡刪除交換機

  6. 清理步驟1中部署的示例服務。如果您部署了步驟1中的示例服務,您可以刪除其創(chuàng)建的資源棧,在刪除資源棧時,選擇刪除方式釋放資源,即可完成示例服務的資源清理。具體操作,請參見刪除資源棧

后續(xù)使用建議

用于生產環(huán)境之前

為了確保該彈性高可用方案在生產環(huán)境中穩(wěn)定運行,建議您在用于生產環(huán)境前,完成以下操作:

  • 完善伸縮組配置

    • 實現多可用區(qū)容災:您可以為伸縮組配置多個可用區(qū)的交換機,并設置均衡分布策略,這樣伸縮組可以在多個可用區(qū)創(chuàng)建實例,并將業(yè)務服務實例均衡分布在各個可用區(qū),提升集群的擴容成功率和容災能力。具體操作,請參見擴縮容策略

    • 選擇多個實例規(guī)格提高擴容成功率:單一實例規(guī)格在庫存不足時也會出現擴容失敗的現象,您可以選擇多個實例規(guī)格創(chuàng)建實例,以提高擴容成功率。具體操作,請參見創(chuàng)建伸縮配置(ECS實例)

  • 充分測試

    如果將該彈性高可用方案應用于生產環(huán)境,建議您在集群搭建完成后,進行測試工作,確保您的服務復制為多個時不會出現問題,同時也可以對集群進行壓測,來預估您的資源需求。

使用域名作為集群訪問入口

修改域名解析

如果您原來使用域名訪問您的ECS實例,您可以調整域名解析,將域名指向您的負載均衡器,這樣,通過域名訪問時,用戶的請求可以經過負載均衡器訪問到您的服務集群。具體操作,請參見設置CNAME域名解析

重要

在您修改域名解析之后,由于DNS傳播需要時間,請暫時不要調整原服務的IP或者停止原實例,請先保持原ECS實例運行一段時間,您可以先在監(jiān)控中觀察流入該ECS實例的流量,待流量清零時再停止該實例。

這么做是為了避免用戶所使用的DNS服務器沒有更新DNS緩存,從而訪問原ECS實例的IP。此時如果該ECS實例停止服務,會造成這部分用戶無法訪問。

HTTPS協議支持

本示例使用HTTP訪問集群,如果您需要您的集群訪問域名支持HTTPS,需要為負載均衡器設置HTTPS監(jiān)聽,具體操作,請參見添加HTTPS監(jiān)聽

使用伸縮組的彈性伸縮功能

  • 設計伸縮方案:本教程不涉及自動伸縮方案的設計,后續(xù)您可以為伸縮組設置自動伸縮方案優(yōu)化成本,如何設計伸縮方案,請參見支持的伸縮方案

  • 進階功能需求:如果您有更多伸縮組的進階功能需求,比如提高擴容成功率、進一步降低成本等,請參見進階需求