
AWS ElastiCache - 快速指南
AWS ElastiCache - 概述
ElastiCache 是一個分散式快取環境,透過使用基於雲的快取來提供對資料的更快訪問。直接從資料庫或透過遠端 API 呼叫查詢資料比從快取中查詢資料慢得多。AWS 提供了 ElastiCache 服務,它具有高效能、可擴充套件性和成本效益。它消除了與管理分散式快取相關的複雜性。
ElastiCache 的用例
以下是利用 ElastiCache 以經濟有效的方式加快查詢的一些用例。
即時分析 -當客戶進行線上購物時,產品推薦必須在客戶仍在瀏覽目錄時即時生成。這需要將客戶已選擇的現有產品儲存在快取中並即時分析,以推薦下一組產品。
訊息管理 -當透過某些渠道向訂閱者傳送訊息時,總有一些訂閱者取消訂閱,而另一些訂閱者加入特定渠道。如果沒有快取機制,由於延遲,訊息可能會丟失或放錯位置。因此,ElastiCache 有助於保持訂閱狀態的最新和準確。
排行榜 -在遊戲行業中,玩家得分及其在排行榜中的位置會不斷更新。這需要持續更新,並且這裡非常需要快取才能能夠持續顯示不斷變化的領導者位置。
ElastiCache 內容
並非所有內容都可以並且都需要快取。因此,影響需要快取哪種內容的各種因素如下所述。
資料庫內容 -經過複雜且昂貴的查詢處理後獲取的內容絕對是快取的候選物件。它透過避免重複查詢處理來減少延遲,並降低資料庫磁碟讀/寫成本。
頻繁訪問的資料 -即使某種資料不涉及昂貴的查詢,如果它比其他資料塊更頻繁地被訪問,也可能需要快取。
訪問模式 -如果資料變化過於頻繁,則快取就沒有用。因此,我們需要尋找使用者相對靜態但經常需要訪問的資料的方法。
對陳舊資料的容忍度 -一旦快取,資料就會開始變得陳舊,直到再次讀取。在這種情況下,如果需要資料的應用程式對陳舊資料容忍度低,則快取無濟於事。例如,當您購買股票時,價格需要在此時準確,因此不需要快取。但昨天的收盤價今天會被頻繁參考進行計算,它是靜態的,需要被快取。
ElastiCache 的元件
AWS 提供的 ElastiCache 具有以下重要元件。我們將在後續章節中瞭解它們的配置和使用。
節點 -節點是安全、網路連線的 RAM 的固定大小的塊。每個快取節點都有自己的域名服務 (DNS) 名稱和埠。
用於 Redis 分片的 ElastiCache -它是一組 1 到 6 個相關節點。一個叢集可以有 1 到 90 個分片。
用於 Redis 叢集的 ElastiCache -Redis 叢集是 1 個或多個用於 Redis 分片的 ElastiCache 的邏輯分組。資料在啟用了 Redis(叢集模式)的叢集中的分片之間進行分割槽。
用於 Redis 端點的 ElastiCache -它是應用程式用於連線到 ElastiCache 節點或叢集的唯一地址。
ElastiCache 的功能
ElastiCache 的各種功能有助於我們規劃適當的配置和成本估算。重要的功能如下。
用於 Redis 複製的 ElastiCache -複製是透過將 2 到 6 個節點分組到一個分片中來實現的。這些節點之一是讀/寫主節點。所有其他節點都是隻讀副本節點。
區域和可用區 -快取可以在滿足您業務需求的任何位置構建和使用。AWS ElastiCache 服務在全球多個 AWS 區域提供。
ElastiCache 引數組 -ElastiCache 引數組是引擎特定引數的命名集合,您可以將其應用於叢集。它們用於控制記憶體使用、逐出策略和專案大小等。
用於 Redis 安全的 ElastiCache -您可以使用子網組或安全組控制可以訪問叢集的 Amazon EC2 例項。
AWS ElastiCache - 環境
要使用任何 Aws 服務,您需要設定一個 AWS 賬戶。我們假設您已按照Amazon Web Servicesaws 主頁中提到的指南設定了 AWS 賬戶。以下是從控制檯訪問 RDS 服務的初步步驟。
步驟 1
登入亞馬遜控制檯後,要訪問 ElastiCache 服務,我們需要透過在服務標籤下的搜尋框中搜索 ElastiCache 來導航到 Amazon ElastiCache 主頁,如下圖所示。

步驟 2
點選上面的連結後,我們將進入 Amazon ElastiCache 主頁。如果您是第一次訪問 ElastiCache 服務,則它將顯示一個顯示 ElastiCache 主頁的螢幕。但是,如果您已經建立了一些 ElastiCache 資源,則可以透過在上述頁面中向下滾動來檢視其摘要。下面顯示了一個螢幕截圖。

步驟 3
下一個螢幕使我們可以選擇所需的快取引擎,這是我們所需快取服務配置步驟的開始。

在下一章中,我們將逐一瞭解每個 ElastiCache 引擎的配置和使用細節。
步驟 4
我們還需要分配適當的策略以授予使用者使用 ElastiCache 服務的許可權。我們需要將名為 AmazonElastiCacheFullAccess 的 AWS 託管策略附加到現有使用者。此角色預先配置了服務代表您建立服務連結角色所需的許可權。
AWS ElastiCache - 介面
上一章中設定的 ElastiCache 也可以透過以下方法之一完成。以下是我們可以透過其與 AWS ElastiCache 互動的介面。
AWS 管理控制檯
AWS 管理控制檯是管理 Amazon ElastiCache 的最簡單方法。控制檯允許您建立快取叢集、新增和刪除快取節點以及執行其他管理任務,而無需編寫任何程式碼。控制檯還提供來自 CloudWatch 的快取節點效能圖表,顯示快取引擎活動、記憶體和 CPU 利用率以及其他指標。
下圖顯示了登入 AWS 控制檯並導航到 ElastiCache 服務後 ElastiCache 儀表板。

AWS CLI
您還可以將 AWS 命令列介面 (AWS CLI) 用於 ElastiCache。AWS CLI 使執行一次性操作變得容易,例如啟動或停止快取叢集。您還可以從您選擇的指令碼語言呼叫用於 ElastiCache 的 AWS CLI 命令,從而使您可以自動化重複性任務。
下圖顯示了 AWS CLI 命令的結果,用於描述我們為建立的 ElastiCache 叢集建立的子網組。

AWS SDK
如果要從應用程式訪問 ElastiCache,可以使用 AWS 軟體開發工具包 (SDK) 之一。SDK 封裝了 ElastiCache API 呼叫,並使您的應用程式免受 ElastiCache API 的底層細節的影響。您提供您的憑據,SDK 庫將負責身份驗證和請求籤名。
AWS ElastiCache - 啟動叢集
Redis 叢集是 1 個或多個 ElastiCache 分片的邏輯分組。資料在 Redis 叢集中的分片之間進行分割槽。但是您也可以在啟用或停用叢集模式的情況下執行 Redis。在停用叢集模式的情況下,我們將其稱為獨立 Redis 叢集。在啟用叢集模式的情況下,它稱為具有多個分片的 Redis 叢集。
在開始建立叢集之前,我們需要確定叢集的要求,這將有助於我們在建立時配置叢集。此步驟需要決定的因素如下。
記憶體 -在快取中儲存資料所需的總記憶體。
版本 -您需要執行的 Redis 版本。因為不同的版本在功能方面存在一些差異,您可能需要在您的應用程式中使用這些功能。
寫入效率 -如果您的應用程式需要頻繁寫入新資料或更新現有資料,則需要分配大量記憶體。
叢集模式 -是獨立叢集還是帶分片的叢集。
在本節中,我們正在建立一個獨立的 Redis 叢集。以下是建立此類叢集的步驟。
選擇叢集型別
登入您的 Amazon 賬戶後,導航到 ElastiCache 主頁並選擇建立 ElastiCache 叢集。將彈出以下螢幕,我們需要在其中選擇叢集引擎。我們選擇 Redis,如下所示。

Redis 設定
接下來,我們選擇設定以選擇 Redis 引擎版本、節點型別等。此步驟中的要點是選擇正確的引擎版本和節點型別,這將決定您用於叢集的計算能力型別,從而決定成本。此步驟中的埠號是平臺分配的預設值 6379。下圖顯示了輸入。

高階 Redis 設定
高階 Redis 設定步驟會詢問有關我們將用於此叢集的 VPC 和子網的詳細資訊。我們選擇我們在 AWS 賬戶中已建立的現有 VPC ID 之一。我們從其中一個可用區選擇其中一個子網。

安全組
在下一步中,我們需要選擇安全組和加密選項。出於我們的目的,我們選擇預設安全組並清空加密選項。

備份配置
在此步驟中,我們選擇如何以及何時備份快取叢集。有一個選項可以啟用自動備份,在這種情況下,平臺將無需任何使用者干預即可執行備份。我們還可以建議一個維護視窗,在其中指定備份的確切時間。我們也可以不帶任何偏好地保留維護視窗。我們還有選項在此步驟中設定 SNS 通知。我們將在此步驟中將其留空。

在此步驟結束時,我們單擊建立按鈕,以便在設定上述配置後開始建立叢集。
下圖顯示了叢集在幾分鐘後處於可用狀態。

AWS ElastiCache - 檢視叢集詳細資訊
我們可以獲取叢集的詳細資訊,以便規劃新增節點或估算成本等。AWS ElastiCache 提供了一個介面,可以在單個網頁中訪問叢集的詳細資訊,並在各種調優或估算過程中根據需要使用這些值。訪問叢集詳細資訊的步驟非常簡單,我們可以使用控制檯或 AWS CLI。我們將在下面介紹這兩種方法。
識別叢集
在這種方法中,我們登入 AWS 控制檯並轉到 ElastiCache 儀表板。在儀表板中,我們選擇需要檢視其詳細資訊的叢集的名稱。在下圖中,我們看到訪問 ElastiCache 儀表板後,叢集名稱以超連結的形式顯示。

叢集描述
點選上面叢集的名稱,將我們帶到一個頁面,該頁面顯示兩個選項卡,一個描述節點詳細資訊,另一個選項卡提供叢集的描述。接下來,我們點選描述選項卡,獲取如下所示的詳細資訊。如您所見,這裡列出了叢集的完整詳細資訊,包括端點、可用區、安全組和引數組等。我們使用提到的端點從 EC2 例項訪問叢集中的節點。

透過 AWS CLI
我們還可以使用 AWS 命令列介面或 CLI 獲取叢集詳細資訊。我們需要在將要訪問叢集詳細資訊的機器上安裝 AWS CLI 工具。下面是需要在 EC2 例項中執行的命令,它可以以 JSON 格式提供叢集的詳細資訊。輸出的格式是在 AWS CLI 配置過程中配置的。
aws elasticache describe-cache-clusters --cache-cluster-id tpecacheredis
結果可以在下面的螢幕截圖中看到。

AWS ElastiCache - 叢集端點
建立叢集並顯示其狀態為可用後,您可以採取措施訪問叢集。但您還必須授權對叢集的訪問。接下來,您可以登入到 Amazon EC2 例項並連線到叢集。為此,您必須首先確定端點。
端點是您可以透過其與叢集互動的 URL,透過傳遞快取引擎所需的命令。我們將在另一章中學習使用這些命令的詳細資訊。在本章中,我們將瞭解查詢叢集端點的步驟。
Redis 端點
要識別 Redis 叢集的端點,我們訪問 ElastiCache 儀表板並選中所需 Redis 叢集名稱對應的複選框。這將顯示如下螢幕,其中顯示了 Redis 叢集的主端點。

Memcached 端點
它與上面的 Redis 叢集方法相同,只是在 ElastiCache 儀表板中,我們在選擇叢集名稱時選擇 Memcached。在結果中,我們看到叢集詳細資訊的描述以及端點的名稱。

AWS ElastiCache - 訪問叢集
要訪問叢集中的節點,我們使用與節點關聯的端點。我們已經在上一章中瞭解瞭如何檢查端點。在本章中,我們將瞭解如何配置 EC2 機器安全組和叢集的安全組,以便從 EC2 訪問它。
Redis 叢集和 VPC 的配置方式有多種場景。叢集和 EC2 例項可能在同一個 VPC 中,也可能在不同的 VPC 中。當它們位於不同的 VPC 中時,它們可能位於同一個區域或不同的區域。此外,ElastiCache 叢集可能在客戶的資料中心執行。所有這些不同的場景都需要不同的安全組配置方法。
我們考慮最簡單的配置情況,即叢集和 EC2 例項都位於同一個 VPC 中。以下是實現安全組配置的步驟。
EC2 的安全組
我們建立一個 EC2 例項,該例項將需要訪問叢集。此 EC2 例項成為建立的預設安全組的一部分。我們的目的是使用 AWS CLI 從本地機器登入到此 EC2 例項。因此,我們為預設安全組配置以下入站條件,以允許本地機器的 IP 地址透過 SSH 連線到 EC2 例項。

叢集的安全組
接下來,我們為 Redis 叢集配置另一個安全組。目標是允許從 EC2 到此安全組(包含叢集節點)的入站連線請求。在下圖中,我們建立一個名為 sg_redis_cluster 的安全組,並將此安全組分配給 Redis 叢集。
在入站條件中,我們將連線型別選擇為自定義 TCP,並允許預設 VPC 的安全組作為源。

選擇端點
我們從節點的描述選項卡中獲取節點的端點,如下所示。

連線到 Redis 端點
接下來,我們使用已安裝 AWS CLI 的本地機器,登入到我們上面配置的 EC2 例項。然後導航到特定的 Redis 目錄(如下所示),並使用 Redis 命令將值填充到 Redis 快取中並從中檢索值。

AWS ElastiCache - 修改叢集
您可能需要修改現有叢集的原因有很多。例如,您對需要放入快取的大型資料集的需求有所增加。在這種情況下,您需要將節點型別更改為更高的配置。以下是我們可以修改現有叢集配置的步驟。
識別叢集
在這種方法中,我們登入 AWS 控制檯並轉到 ElastiCache 儀表板。在儀表板中,我們選擇需要檢視其詳細資訊的叢集的名稱。在下圖中,我們看到訪問 ElastiCache 儀表板後,叢集名稱以超連結的形式顯示。

叢集描述
點選上面叢集的名稱,將我們帶到一個頁面,該頁面顯示兩個選項卡,一個描述節點詳細資訊,另一個選項卡提供叢集的描述。接下來,我們點選描述選項卡,獲取如下所示的詳細資訊。如您所見,這裡列出了叢集的完整詳細資訊,包括端點、可用區、安全組和引數組等。

修改叢集
可以透過點選修改按鈕來修改上述叢集。將彈出如下螢幕,其中包含帶有下拉選單的欄位,用於更改該欄位中的值。修改期間的一個重要點是立即將更改應用於叢集的選項。**立即應用**複選框僅適用於節點型別和引擎版本修改。要立即應用更改,請選擇**立即應用**複選框。其他修改(例如更改維護視窗)會立即應用。

AWS ElastiCache - 重啟叢集
很多時候,我們需要更改叢集的引數值。要應用新值,需要重新啟動叢集。這也被稱為重啟叢集。重啟發生時,叢集會重新整理其所有資料並重新啟動其引擎,並在重啟期間無法訪問。
以下是重啟叢集的兩個步驟。
識別叢集
在這種方法中,我們登入 AWS 控制檯並轉到 ElastiCache 儀表板。在儀表板中,我們選擇需要檢視其詳細資訊的叢集的名稱。在下圖中,我們看到點選 ElastiCache 儀表板中叢集名稱(以超連結形式顯示)後,叢集詳細資訊。

重啟叢集
選擇上圖中突出顯示的重啟按鈕。這將顯示下一個螢幕,警告叢集中的節點將在幾分鐘內不可用。點選重啟按鈕後,叢集重啟過程開始,幾分鐘後集群將再次可用。

AWS ElastiCache - 新增節點
當我們想要擴充套件叢集時,可以透過新增更多節點或將現有節點更改為更高的配置來實現。根據成本、記憶體需求等多種因素,我們可以選擇其中一種方法。在本章中,我們將瞭解如何透過向叢集新增節點來擴充套件叢集。
要向單節點 Redis 叢集(沒有啟用複製的叢集)新增節點,我們需要經歷一個兩步過程。第一步是新增複製,第二步是新增副本節點。
以下是將節點新增到現有叢集的所有步驟的詳細資訊。
識別叢集
我們登入 AWS 控制檯並轉到 ElastiCache 儀表板。在儀表板中,我們選擇需要檢視其詳細資訊的叢集的名稱。在下圖中,我們看到點選 ElastiCache 儀表板中叢集名稱(以超連結形式顯示)後,叢集詳細資訊。

新增複製
對於沒有啟用複製的單節點 Redis,我們首先新增複製。然後,現有節點成為啟用複製的叢集中的主節點。新增複製後,您可以向叢集新增最多 5 個副本節點。在“節點”選項卡下,我們選擇“新增複製”按鈕。然後填寫叢集複製的描述並點選建立。

新增只讀副本
在此步驟中,我們為要新增到叢集的節點分配一個名稱。點選“新增節點”並提及只讀副本的名稱。

點選標有“新增”的按鈕,我們將獲得以下螢幕截圖。它顯示了新節點正在新增到叢集中。這需要一段時間才能完成。狀態顯示為“建立中”。

過一段時間後,重新整理網頁,我們可以看到節點已實際新增到叢集中。它的埠號和端點將可用,並且其狀態也會發生變化。

AWS ElastiCache - 刪除節點
作為縮減叢集規模或修改叢集的一部分,我們可能需要從叢集中刪除一些現有節點。刪除節點的過程與新增節點的過程非常相似。在以下步驟中,我們將瞭解如何從叢集中刪除節點。
選擇節點
我們登入 AWS 控制檯並轉到 ElastiCache 儀表板。在儀表板中,我們選擇需要刪除其節點的叢集的名稱。然後,我們看到 ElastiCache 儀表板中叢集名稱以超連結的形式顯示。點選它將顯示描述選項卡和節點選項卡。
在節點選項卡中,我們可以找到“操作”按鈕。點選“操作”按鈕的下拉選單,可以看到刪除節點的選項,如下圖所示。

刪除節點
接下來,我們選中要刪除的節點對應的複選框,然後從“操作”按鈕中選擇“刪除”選項。這將啟動節點刪除過程。由於該過程需要一些時間,我們可以在網頁上看到用紅色標記的刪除過程。

過一段時間後,如果我們重新整理螢幕,可以看到下圖,其中選定的節點已從叢集中移除。

AWS ElastiCache - 叢集擴充套件
隨著對 ElastiCache 服務的需求增加,我們最終會達到需要增加分配給快取配置的記憶體和處理能力的點。這稱為擴充套件叢集。但是由於快取伺服器已經在執行,因此我們在擴充套件時會受到某些限制。
所有對快取叢集的讀寫操作都將停止。
在與現有快取叢集相同的可用區中建立具有新節點型別的新快取叢集。
將現有快取叢集中的快取資料複製到新快取叢集。此過程所需的時間取決於您的節點型別以及快取叢集中的資料量。
使用新快取叢集恢復讀寫操作。由於新快取叢集的端點與舊快取叢集的端點相同,因此無需更新應用程式中的端點。
ElastiCache 刪除舊快取叢集。
以下是我們執行叢集擴充套件的兩個步驟。
選擇叢集
我們登入 AWS 控制檯並轉到 ElastiCache 儀表板。在左側的儀表板中,我們將叢集型別選擇為 Redis。然後,我們在 ElastiCache 儀表板中看到叢集名稱顯示為超連結。我們點選叢集名稱左側的複選框。這將顯示修改叢集以及其他選項的選項。

更改節點型別
接下來,我們修改叢集以選擇所需的更高配置的節點型別。點選“修改”按鈕後,我們將獲得更改節點型別的選項,如下圖所示。在最終確定節點型別配置後點擊“修改”按鈕,將新的快取大小引入節點。

AWS ElastiCache - 刪除叢集
一旦您實現了使用 ElastiCache 叢集的目的,您最終會達到不再需要該叢集的點,這可能是因為您有新的設計方案或正在轉向其他內容。因此,需要刪除叢集。一旦叢集的狀態更改為“刪除中”,您將停止產生與該叢集相關的任何費用。
刪除叢集的步驟與修改叢集的步驟非常相似。您首先確定要刪除的叢集名稱,然後執行刪除操作。以下步驟說明了這一點。
選擇叢集
我們登入 AWS 控制檯並轉到 ElastiCache 儀表板。在左側的儀表板中,我們將叢集型別選擇為 Redis。然後,我們在 ElastiCache 儀表板中看到叢集名稱顯示為超連結。我們點選叢集名稱左側的複選框。這將顯示刪除叢集以及其他選項的選項。

刪除叢集
在選中叢集左側的複選框後,我們選擇“刪除”按鈕。點選“刪除”按鈕後,系統會彈出一個警告,提示我們確認刪除操作的影響。重點是,一旦刪除操作開始,就無法停止或撤消。資料將丟失。因此,如果我們將來有任何需要,應該為叢集維護備份。下圖顯示了刪除選項的影響。

透過點選“刪除”按鈕確認後,我們看到叢集的狀態更改為“刪除中”,如下圖所示。過一段時間後重新整理螢幕,叢集將從儀表板中消失。

AWS ElastiCache - Redis 分片
分片是 ElastiCache 叢集中一個或多個節點的集合。建立分片是為了支援將資料複製到 ElastiCache 叢集中的各個節點,以便在少數節點丟失的情況下快取仍然可訪問。根據叢集模式的配置方式,Redis 叢集可以有一個或多個分片。如果停用叢集模式,則 Redis 叢集將只有一個分片。
A shard = Primary Node + Read Replicas
主節點
分片中的一個節點被指定為主節點。應用程式只能寫入主節點。寫入主節點的資料會非同步傳播到所有讀取副本。現有的主節點可以與其一個讀取副本交換角色以提高效能。
讀取副本
讀取副本維護叢集主節點資料的副本。讀取副本提高讀取吞吐量,並在節點故障的情況下防止資料丟失。應用程式可以讀取叢集中的任何節點,無論是讀取副本還是主節點。
停用叢集模式
在這種模式下,我們建立了一個 Redis 叢集,其中只有一個分片包含所有 Redis 節點。其中一個節點被指定為主節點,其他節點稱為只讀副本節點。

以下是停用叢集模式的 Redis 叢集的功能。
Redis(停用叢集模式)叢集中的所有節點都必須位於同一區域。為了提高容錯能力,您可以在該區域內的多個可用區中配置讀取副本。
當您向叢集新增讀取副本時,主節點中的所有資料都會複製到新節點。從那時起,每當向主節點寫入資料時,更改都會非同步傳播到所有讀取副本。
將 Redis(停用叢集模式)叢集與副本節點一起使用,可以擴充套件您的 ElastiCache Redis 解決方案以處理讀密集型應用程式。
啟用叢集模式
在這種模式下,我們建立了一個 Redis 叢集,其中有 1 到 90 個分片。每個分片都有一個主節點和最多五個只讀副本節點。分片中的每個讀取副本都維護分片主節點資料的副本。

以下是停用叢集模式的 Redis 叢集的功能。
非同步複製機制用於使讀取副本與主節點保持同步。應用程式可以讀取叢集中的任何節點。應用程式只能寫入主節點。
此 Redis 叢集中的所有節點都必須位於同一區域。
您無法手動將任何副本節點提升為主節點。
您只能透過從備份還原來更改叢集的結構、節點型別和節點數量。
AWS ElastiCache - 引數組
引數組是控制 ElastiCache 叢集行為的引數集合。它們在建立叢集時會自動建立。但很多時候,我們需要將我們自己的引數列表組合在一起以滿足某些特定的配置需求。在這種情況下,我們可以建立我們自己的自定義引數組。
在我們建立的自定義引數組中,我們可以將引數的值從預設值編輯為所需的值。
引數組儀表板
我們登入 AWS 控制檯並轉到 ElastiCache 儀表板。在左側的儀表板中,我們選擇“引數組”。然後,我們看到引數組的名稱以及該引數組所屬的族。組的族指示快取的型別(Redis 或 Memcached)以及引擎的版本。
以下螢幕顯示了從左側選項卡中選擇引數組的結果。

建立引數組
接下來,我們點選“建立引數組”按鈕來建立引數組。它會提示輸入叢集的族,即叢集的型別(如 Redis 或 Memcached)以及叢集的引擎版本。我們還在輸入螢幕中提及引數組的名稱和描述。

編輯引數
我們可以透過選中引數左側的複選框,然後點選“編輯引數”按鈕來編輯引數組中的引數,如下所示。

點選“編輯引數”按鈕後,我們將獲得一個視窗,我們可以在其中將自定義值放入列出的各種引數中。更改後,我們可以點選“儲存更改”以使新值生效。

請注意,如果我們需要,我們還可以選擇將引數值恢復為預設值。這可以保護我們免受任何不正確的引數配置的影響,使我們能夠恢復到原始配置。
AWS ElastiCache - 列出引數
為了控制 Redis 叢集節點的執行時行為,我們使用了許多引數,這些引數我們已經在上一章中看到過。在本章中,我們將看到在 AWS 平臺上列出 Redis 和 Memcached 叢集的不同版本中可用引數的確切步驟。
引數組儀表板
我們登入 AWS 控制檯並轉到 ElastiCache 儀表板。在左側的儀表板中,我們選擇“引數組”。然後,我們看到引數組的名稱以及該引數組所屬的族。組的族指示快取的型別(Redis 或 Memcached)以及引擎的版本。
以下螢幕顯示了從左側選項卡中選擇引數組的結果。

我們可以透過將儀表板詳細資訊滑到左側來展開引數組詳細資訊顯示。在以下螢幕中,我們列出了 AWS 平臺上可用的所有最新引數組。描述標籤指示叢集版本和引擎型別。

引數列表
接下來,我們可以檢視每個引數組下引數的詳細資訊。點選特定引數組的複選框。這將在螢幕底部顯示與該組關聯的所有引數的列表。您還可以注意到與該引數組關聯的引數數量。

AWS ElastiCache - 刪除引數
引數組是控制 ElastiCache 叢集行為的引數集合。但很多時候,我們需要將我們自己的引數列表組合在一起以滿足某些特定的配置需求。在這種情況下,我們可以建立和刪除我們自己的自定義引數組。
本章將介紹如何建立自定義引數組以及如何刪除它。
建立引數組
從 ElastiCache 控制檯,我們選擇 Memcached 引擎並進入描述 Memcached 引擎的頁面。然後,我們點選“建立引數組”按鈕,並提供以下輸入來建立自定義引數組。

檢視引數組
在上面頁面中點選“建立”按鈕後,我們建立了自定義引數組。如下所示,選擇自定義組名稱左側的複選框後,我們可以檢視該組中的引數列表。我們可以看到引數列表及其描述。

刪除引數組
接下來,我們可以透過刪除引數組來刪除引數。我們選擇要刪除的引數組,然後點選“刪除”按鈕。如下視窗將提示確認刪除操作,確認後該組將被刪除。

AWS ElastiCache - 引擎引數
為了控制 Redis 叢集節點的執行時行為,我們使用了許多內置於叢集中的引數。隨著叢集引擎版本的更改,會有更多額外的引數出現。許多引數被分組並命名,以便於管理具有依賴關係或相互影響的引數。
特定引數組上的引數值適用於與該組關聯的所有節點,無論它們屬於哪個叢集。為了微調叢集的效能,我們可以修改某些引數值或更改叢集的引數組。
示例
下面列出了一些引數的示例,以及它們可以控制的內容。
名稱 | 用途 |
---|---|
cluster-node-timeout | 叢集節點超時是指節點無法訪問的時間(毫秒),超過該時間節點將被視為故障狀態。 |
reserved-memory-percent | 節點記憶體中保留用於非資料用途的百分比。透過保留記憶體,您可以預留一部分可用記憶體用於非 Redis 目的,以幫助減少分頁量。 |
cluster-enabled | 指示這是一個叢集模式下的 Redis 複製組還是非叢集模式下的複製組。 |
proto-max-bulk-len | 單個元素請求的最大大小。 |
client-query-buffer-limit | 單個客戶端查詢緩衝區最大大小。 |
activedefrag | 啟用主動碎片整理。 |
maxclients 10000 | 設定同時連線的客戶端的最大數量。預設情況下,此限制設定為 10000 個客戶端,但是如果 Redis 伺服器無法配置程序檔案限制以允許指定的限制,則允許的客戶端最大數量將設定為當前檔案限制減去 32。 |
引數管理規則
您不能修改或刪除預設引數組。如果您需要自定義引數值,則必須建立一個自定義引數組。
如果更改叢集的引數組,則任何條件可修改的引數的值必須在當前引數組和新引數組中都相同。
當您更改叢集的引數時,更改將立即應用於叢集,或者在叢集重新啟動後應用於叢集。無論您更改叢集本身的引數組還是叢集引數組中的引數值,情況都如此。
AWS ElastiCache - 備份和恢復
執行 Redis 的 AWS ElastiCache 叢集可用於建立備份,然後可以使用該備份來恢復叢集或為新叢集提供種子資料。備份由叢集的元資料以及叢集中的所有資料組成。所有備份都寫入 Amazon Simple Storage Service (Amazon S3)。您可以隨時透過建立新的 Redis 叢集並使用備份中的資料填充它來恢復資料。每個叢集的一個備份免費儲存,但其他備份需要付費。
以下是建立備份的步驟。
選擇叢集
我們登入 AWS 控制檯並進入 ElastiCache 控制檯。在控制檯左側,我們選擇叢集型別為 Redis。然後,我們在 ElastiCache 控制檯中看到叢集名稱作為超連結。我們點選叢集名稱左側的複選框。這將顯示備份叢集以及其他選項。

建立備份
接下來,我們點選“備份”按鈕,透過為備份叢集提供名稱來配置備份過程。備份方法會根據可用記憶體自動選擇。如果可用記憶體足夠,則會生成一個子程序,該子程序在備份快取時將所有更改寫入快取的保留記憶體。
如果可用記憶體不足,則會採用無分叉的協作式後臺程序。無分叉方法可能會影響延遲和吞吐量。

點選“備份”按鈕後,備份過程開始,並持續一段時間。如下圖所示,程序的狀態保持為“建立中”。它還提到了快取大小和備份型別為“手動”。

一段時間後,新備份叢集的狀態更改為“可用”。這表示備份過程已完成。

從備份恢復
要使用備份恢復資料,我們從上述備份建立一個新叢集。此新副本將用於恢復命令,該命令將從備份中將資料引入新建立的叢集。

在建立新集群后,我們最終使用“恢復”按鈕。在下圖中,我們為恢復選項提供值。

AWS ElastiCache - 監控節點指標
為了監控叢集的使用情況和執行狀況,ElastiCache 提供了可透過 CloudWatch 訪問的指標。這些指標可以是主機級別的指標。CPU 利用率是主機級別指標的一個示例。還有一些特定於快取引擎軟體的指標。快取命中和快取未命中是引擎特定指標的示例。這些指標以 60 秒的間隔測量和釋出到每個快取節點。
主機級別指標
主機級別指標衡量 ElastiCache 節點所在主機效能的各個方面。以下是幾個重要主機級別指標的示例。此外,不同的指標具有不同型別的測量值。例如,一個指標以百分比衡量,而另一個指標以計數值衡量。
指標 | 描述 | 單位 |
---|---|---|
CPUUtilization | 整個主機的 CPU 利用率百分比。由於 Redis 是單執行緒的,因此建議您監控 EngineCPUUtilization 指標(如果可用)。 | 百分比 |
FreeableMemory | 主機上可用的空閒記憶體量。這是從作業系統報告的 RAM、緩衝區和快取中派生的,這些快取和緩衝區可被釋放。 | 位元組 |
SwapUsage | 主機上使用的交換空間量。 | 位元組 |
NetworkBytesIn | 主機從網路讀取的位元組數。 | |
NetworkBytesOut | 例項透過所有網路介面傳送的位元組數。 | 位元組 |
引擎級別指標
這些指標取決於部署在 ElastiCache 中的引擎的型別和版本。它們衡量引擎的效能,並根據其值,我們可以決定是否更改引擎或重新配置該快取引擎中的某些引數。每個指標都在快取節點級別計算。以下是幾個此類指標的列表。
指標 | 描述 | 單位 |
---|---|---|
CacheHits | 主字典中成功讀取鍵查詢的次數。這源自 keyspace_hits 統計資訊。 | 計數 |
CacheMisses | 主字典中不成功讀取鍵查詢的次數。這源自 keyspace_misses。 | 計數 |
CurrConnections | 客戶端連線數,不包括來自讀取副本的連線。ElastiCache 使用兩到三個連線在每種情況下監控叢集。這源自 connected_clients 統計資訊。 | 計數 |
EngineCPUUtilization | EngineCPUUtilization 提供對 Redis 程序 CPU 利用率的訪問,以便更好地瞭解您的 Redis 工作負載。由於 Redis 是單執行緒的,並且在任何給定時間僅使用一個 CPU 核心,因此 EngineCPUUtilization 提供了對 Redis 程序本身負載的更精確的可見性。 | 百分比 |
NewConnections | 在此期間伺服器已接受的連線總數。這源自 total_connections_received 統計資訊。 | 計數 |
監控指標
我們可以檢視不同時間段內指標的值。例如,過去 1 小時或過去 1 天等。為此,我們轉到控制檯,然後轉到 ElastiCache 控制檯。從控制檯中選擇叢集,然後選擇要監控其指標的節點的名稱。選擇節點,然後選擇要監控的節點名稱旁邊的複選框。下圖顯示了彈出的指標視窗。

向下滾動後,我們看到更多指標,這些指標以圖形形式顯示,顯示不同時間間隔的值。

AWS ElastiCache - Memcached 和 Redis
Amazon ElastiCache 支援 Redis 和 Memcached 快取引擎。Redis 是一個開源的記憶體資料結構,實現了分散式記憶體鍵值資料庫。Memcached 也是一個分散式記憶體快取系統。它通常用於透過快取資料和物件來加速動態資料庫驅動的網站,從而減少讀取外部資料來源以獲取值到 Web 應用程式的次數。
以下是我們在 AWS 平臺上選擇特定引擎的場景。
使用 Redis
以下功能列表顯示了 Redis 如何能夠處理更復雜的資料結構,提供永續性和排序等。因此,此處描述了我們應該選擇 Redis 作為 ElastiCache 中平臺的場景。
需要儲存複雜的資料型別,例如字串、雜湊、列表、集合、有序集合和點陣圖。
需要對記憶體資料集進行排序或排名。
需要金鑰儲存的永續性。
需要將資料從主節點複製到一個或多個只讀副本,以用於讀密集型應用程式。
如果主節點發生故障,需要自動故障轉移。
如果主節點發生故障,需要自動故障轉移。
需要備份和恢復功能。
需要支援多個數據庫。
使用 Memcached
Memcached 更適合儲存簡單的 資料結構,並且不提供永續性。因此,以下場景適合使用 Memcached。
需要儘可能簡單的 資料模型來儲存鍵值對。
需要執行具有多個核心或執行緒的大型節點。
需要能夠擴充套件和縮減,根據系統需求的增加和減少新增和刪除節點。
需要快取物件,例如資料庫。
AWS ElastiCache - 訪問 Memcached 叢集
要訪問叢集中的節點,我們使用與節點關聯的端點。我們已經在上一章中瞭解瞭如何檢查端點。在本章中,我們將瞭解如何配置 EC2 機器安全組和叢集的安全組,以便從 EC2 訪問它。
Memcached 叢集和 VPC 的配置方式有多種。叢集和 EC2 例項可能位於同一個 VPC 或不同的 VPC 中。當它們位於不同的 VPC 中時,它們可能位於同一個區域或不同的區域。此外,ElastiCache 叢集也可能執行在客戶的資料中心。所有這些不同的場景都需要不同的安全組配置方法。
我們考慮最簡單的配置情況,即叢集和 EC2 例項都位於同一個 VPC 中。以下是實現安全組配置的步驟。
EC2 的安全組
我們建立一個 EC2 例項,該例項將需要訪問叢集。此 EC2 例項成為建立的預設安全組的一部分。我們的目的是使用 AWS CLI 從本地機器登入到此 EC2 例項。因此,我們為預設安全組配置以下入站條件,以允許本地機器的 IP 地址透過 SSH 連線到 EC2 例項。

接下來,我們為 Redis 叢集配置另一個安全組。目的是允許來自 EC2 的入站連線請求到包含叢集節點的此安全組。在下圖中,我們建立一個名為 sg_memcached 的安全組,並將此安全組分配給 Redis 叢集。

在入站條件中,我們將連線型別選擇為自定義 TCP,並允許預設 VPC 的安全組作為源。

選擇端點
我們從節點的描述選項卡中獲取節點的端點,如下所示。

安裝 Telnet
要訪問 memchached,我們在 EC2 例項中安裝 telnet 服務。這將用於連線到 Memcached 叢集中的節點。

連線到 Memcached 端點
接下來,我們使用已安裝 AWS CLI 的本地機器,登入到我們上面配置的 EC2 例項。然後導航到特定的 Redis 目錄(如下所示),並使用 Redis 命令將值填充到 Redis 快取中並從中檢索值。

AWS ElastiCache - 延遲載入
填充快取並保持快取維護有多種方法。這些不同的方法稱為快取策略。維護排行榜資料的遊戲網站需要的策略與新聞網站上顯示的熱門新聞的策略不同。在本章中,我們將學習一種稱為延遲載入的策略。
當應用程式請求資料時,請求會在 ElastiCache 的快取中搜索資料。有兩種可能性。資料要麼存在於快取中,要麼不存在。相應地,我們將情況分為以下兩類。
快取命中
應用程式從快取請求資料。
快取查詢發現快取中存在更新後的資料。
結果返回給請求應用程式。
快取未命中
應用程式從快取請求資料。
快取查詢發現快取中不存在更新後的資料。
快取查詢向請求應用程式返回空值。
現在應用程式直接從資料庫請求資料並接收資料。
然後,請求應用程式使用從資料庫直接接收的新資料更新快取。
下次請求相同資料時,它將屬於上面的快取命中場景。
上述場景通常可以用下圖表示。

延遲載入的優點
僅快取請求的資料-由於大多數資料從未被請求,因此延遲載入避免了用未被請求的資料填充快取。
節點故障不是致命的-當節點發生故障並被新的空節點替換時,應用程式繼續執行,儘管延遲會增加。隨著對新節點的請求,每次快取未命中都會導致對資料庫的查詢並將資料副本新增到快取中,以便後續請求從快取中檢索資料。
延遲載入的缺點
快取未命中懲罰 -每次快取未命中都會導致 3 次往返。一次,從快取中請求初始資料,兩次,查詢資料庫以獲取資料,最後將資料寫入快取。這可能會導致資料到達應用程式的延遲顯著增加。
陳舊資料 -如果資料僅在發生快取未命中時寫入快取,則快取中的資料可能會變得陳舊,因為當資料庫中的資料發生更改時,快取中沒有更新。此問題可以透過寫入直通和新增 TTL 策略來解決,我們將在接下來的章節中看到。
AWS ElastiCache - 寫入直通
與延遲載入類似,寫入直通是另一種快取策略,但與延遲載入不同,它不會等待命中或未命中。它是一種簡單的策略,其中快取和資料庫之間的同步會在資料寫入資料庫後立即發生。
可以從下圖輕鬆理解。

寫入直通的優點
快取中的資料永遠不會陳舊 -由於每次將資料寫入資料庫時都會更新快取中的資料,因此快取中的資料始終是最新的。
寫入懲罰與讀取懲罰 -
每次寫入都涉及兩次往返,一次寫入快取,一次寫入資料庫。這會增加程序的延遲。也就是說,終端使用者通常在更新資料時比在檢索資料時更能容忍延遲。有一種固有的感覺,即更新需要更多工作,因此需要更長時間。
寫入直通的缺點
缺少資料 -在啟動新節點的情況下,無論是由於節點故障還是擴充套件,都會丟失資料,並且在資料庫中新增或更新資料之前,資料將繼續丟失。可以透過結合使用延遲載入和寫入直通來最大程度地減少這種情況。
快取抖動-由於大多數資料從未被讀取,因此叢集中可能存在大量從未被讀取的資料。這是資源浪費。透過新增 TTL,您可以最大程度地減少浪費的空間,我們將在下一章中看到。
AWS ElastiCache - 新增 TTL
TTL 也稱為生存時間。它用於利用延遲載入策略和寫入直通策略的優勢。這兩種策略在前面的章節中進行了討論。寫入直通確保資料始終保持最新,但可能會在空節點的情況下失敗,並且可能會用多餘的資料填充快取。透過為每次寫入新增生存時間 (TTL) 值,我們能夠獲得每種策略的優勢,並在很大程度上避免用多餘的資料填充快取。
TTL 的工作原理
生存時間 (TTL) 是一個整數值,指定金鑰過期之前的時間(以秒為單位)。當應用程式嘗試讀取已過期的金鑰時,它會被視為未找到金鑰,這意味著將查詢資料庫以獲取金鑰並更新快取。這並不能保證值不會陳舊,但它可以防止資料變得過於陳舊,並要求偶爾從資料庫重新整理快取中的值。
TTL 示例
以下程式碼給出了使用函式實現 TTL 的示例。它藉助了 Memcached 使用的 set 命令。
寫入直通策略的程式碼
save_customer(customer_id, values) customer_record = db.query(""UPDATE Customers WHERE id = {0}"", customer_id, values) cache.set(customer_id, customer_record, 300) return success
延遲載入策略的程式碼
get_customer(customer_id) customer_record = cache.get(customer_id) if (customer_record != null) if (customer_record.TTL < 300) return customer_record // return the record and exit function // do this only if the record did not exist in the cache OR // the TTL was >= 300, i.e., the record in the cache had expired. customer_record = db.query(""SELECT * FROM Customers WHERE id = {0}"", customer_id) cache.set(customer_id, customer_record, 300) // update the cache return customer_record
AWS ElastiCache - Memcached VPC
用於連線到 Memcached 叢集的 EC2 例項的 VPC 可能與叢集所在的 VPC 不相同。在這種情況下,我們需要允許這兩個 VPC 之間的連線,以便它們可以互動。從上一章,我們已經看到一個在預設 VPC 中執行的 EC2 例項。現在我們建立一個額外的 VPC,我們可以將 Memcached 叢集與之關聯,然後透過對等連線機制建立到 EC2 例項的連線。
這將需要遵循以下步驟。
建立新的 VPC
要建立新的 VPC,我們從 AWS 賬戶的主頁轉到 VPC 儀表板。然後,我們點選“建立 VPC”按鈕,這將提示我們輸入 VPC 的名稱和 CIDR 塊地址等資訊。填寫這些詳細資訊後,我們可以看到建立了以下 VPC。請注意,我們必須謹慎地提及 CIDR 塊,因為它不應與包含 EC2 例項的現有 VPC 的 CIDR 塊重疊。

建立 VPC 對等連線
接下來,我們在上述兩個 VPC 之間建立對等連線。從 VPC 儀表板,我們在左側選項卡中選擇“對等連線”選項。這將顯示以下螢幕,我們需要按如下所示填寫。

點選上面的“建立對等連線”按鈕後,我們必須接受對等連線請求,如下面的螢幕截圖所示。

接下來,我們編輯路由表以反映另一個 VPC 中的目標閘道器。這將啟用 VPC 之間的連線。

最後,我們可以看到對等連線處於活動狀態,這將使我們能夠從另一個 VPC(EC2 所在的位置)連線到 ElastiCache VPC。

AWS ElastiCache - 建立 Memcached 叢集
Memcached 是一種開源的高效能分散式記憶體快取系統,旨在透過減少資料庫負載來加快動態 Web 應用程式的速度。它是一個字串、物件等的鍵值字典,儲存在記憶體中,這些資料來源於資料庫呼叫、API 呼叫或頁面呈現。AWS 支援配置 ElastiCache 的多個版本的 Memcached 引擎。
在開始建立叢集之前,我們需要確定叢集的要求,這將有助於我們在建立時配置叢集。此步驟需要決定的因素如下。
記憶體和處理器需求 –由於叢集由許多節點組成,因此我們需要分析所涉及節點的記憶體和處理能力。Memcached 引擎是多執行緒的,因此節點的核心數量會影響叢集可用的計算能力。此外,還需要考慮要儲存的資料量。
叢集配置 –Memcached 叢集可以有 1 到 20 個節點。Memcached 叢集中的資料在叢集中的節點之間進行分割槽。因此,除了節點端點外,Memcached 叢集本身還有一個稱為配置端點的端點。節點的端點應配置並可透過叢集端點訪問。
擴充套件需求 – Amazon ElastiCache for Memcached 叢集可以進行橫向擴充套件或縱向擴充套件。要對 Memcached 叢集進行橫向或縱向擴充套件,只需新增或刪除叢集中的節點即可。當擴充套件 Memcached 叢集時,新叢集將從空狀態開始。
訪問要求 – 可以從 Amazon EC2 例項訪問 Amazon ElastiCache 叢集。根據 VPC 配置,您需要使用安全組配置授權從 EC2 例項到叢集的正確訪問許可權。
本章將介紹建立叢集的步驟,如下所示
選擇叢集型別
登入您的 Amazon 賬戶後,導航到 ElastiCache 主頁並選擇建立 ElastiCache 叢集。將彈出以下螢幕,需要我們選擇叢集引擎。我們選擇 Memcached,如下所示。

Memcached 設定
接下來,我們選擇設定以選擇 Memcached 引擎版本、節點型別等。此步驟中的重點是選擇正確的引擎版本和節點型別,這將決定您用於叢集的計算能力型別,從而決定成本。此步驟中的埠號是平臺分配的預設值 11211。下圖顯示了輸入。

高階 Memcached 設定
高階 Memcached 設定步驟要求提供諸如我們將用於此叢集的 VPC 和子網之類的詳細資訊。我們選擇已經在 AWS 賬戶中建立的現有 VPC ID 之一。我們從某個可用區選擇一個子網。我們不選擇任何特定的維護時間視窗,也不訂閱 SNS 通知。

單擊上述螢幕中的建立按鈕後,叢集建立將開始。訪問 Memcached 的儀表板後,我們發現叢集的狀態為建立中。

一段時間後,狀態將更改為可用,並顯示叢集的端點。

AWS ElastiCache - 連線到 VPC 中的叢集
AWS ElastiCache 平臺支援以下方案來連線到 VPC 中的叢集。我們已經從前面的章節中知道,我們使用 EC2 例項連線到叢集中的節點。但是叢集和 EC2 例項可能位於同一個 VPC 或不同的 VPC 中。此外,它們可能位於 VPC 內的相同或不同區域中。本章將討論處理這些方案的方法。
以下是這些方案的訪問模式。
當 Amazon ElastiCache 叢集和 Amazon EC2 例項位於同一個 Amazon VPC 中時訪問
當 Amazon ElastiCache 叢集和 Amazon EC2 例項位於不同的 Amazon VPC 中但在同一區域時訪問
當 Amazon ElastiCache 叢集和 Amazon EC2 例項位於不同的 Amazon VPC 中但在不同區域時訪問
使用 VPN 連線從客戶資料中心執行的應用程式訪問 Amazon ElastiCache 叢集
使用直接連線從客戶資料中心執行的應用程式訪問 Amazon ElastiCache 叢集
上面第一個場景已在 awselasticache_accessing_memcached_cluster.htm 章節中介紹,第二個場景將在本章節中討論。
不同 VPC 的不同區域
在這種情況下,網路在地理上分散。因此,我們需要一箇中轉 VPC。中轉 VPC 簡化了網路管理,並最大限度地減少了連線多個 VPC 和遠端網路所需的連線數量。此設計可以節省時間和精力,並降低成本,因為它是在虛擬環境中實施的,無需在異地中轉中心建立物理存在或部署物理網路裝置的傳統費用。下圖說明了這種安排的工作方式。

使用中轉 VPC 連線的步驟如下所示。
部署中轉 VPC 解決方案。有關更多資訊,請參閱如何在 AWS 上構建全域性中轉網路。
更新 App 和 Cache VPC 中的 VPC 路由表,以透過 VGW(虛擬專用閘道器)和 VPN 裝置路由流量。在使用邊界閘道器協議 (BGP) 的動態路由的情況下,您的路由可能會自動傳播。
修改 ElastiCache 叢集的安全組以允許來自應用程式例項 IP 範圍的入站連線。請注意,在這種情況下,您將無法引用應用程式伺服器安全組。
在客戶資料中心執行
在這種情況下,存在混合架構,其中客戶資料中心中的客戶端或應用程式可能需要訪問 VPC 中的 ElastiCache 叢集。只要客戶的 VPC 和資料中心之間存在透過 VPN 或 Direct Connect 的連線,此方案也受支援。
透過 VPN 訪問
下圖顯示了中轉 VPC 概念如何透過 VPN 工作。

以下是使用 VPN 連線從客戶端計算機訪問叢集的步驟。
透過向您的 VPC 新增硬體虛擬專用閘道器來建立 VPN 連線。有關更多資訊,請參閱向您的 VPC 新增硬體虛擬專用閘道器。
更新部署 ElastiCache 叢集的子網的 VPC 路由表,以允許來自本地應用程式伺服器的流量。在使用 BGP 的動態路由的情況下,您的路由可能會自動傳播。
修改 ElastiCache 叢集的安全組以允許來自本地應用程式伺服器的入站連線
透過 Direct Connect 訪問
AWS Direct Connect 允許您在您的網路和 AWS Direct Connect 位置之一之間建立專用網路連線。這是一種專用連線,可以將其劃分為多個虛擬介面。
下圖顯示了此直接連線的工作方式。

此安排的實施步驟如下。
建立 Direct Connect 連線。有關更多資訊,請參閱AWS Direct Connect 入門。
修改 ElastiCache 叢集的安全組以允許來自本地應用程式伺服器的入站連線。
在所有上述方案中,都會存在網路延遲和額外的傳輸費用。
AWS ElastiCache - 刪除 Memcached 叢集
一旦您實現了使用 ElastiCache 叢集的目的,最終您將到達不再需要該叢集的點,因為您可能已實施了新的設計或正在遷移到其他內容。因此需要刪除叢集。一旦叢集的狀態更改為刪除中,您將停止產生與叢集相關的任何費用。
刪除叢集的步驟與修改叢集的步驟非常相似。您首先確定要刪除的叢集名稱,然後執行刪除操作。以下步驟說明了這一點。
選擇叢集
我們登入 AWS 控制檯並轉到 ElastiCache 儀表板。從左側的儀表板中,我們將叢集型別選擇為 Memcached。然後,我們看到叢集名稱在 ElastiCache 儀表板中顯示為超連結。我們單擊叢集名稱左側的複選框。這將顯示刪除叢集以及其他選項的選項。

刪除叢集
選擇叢集左側的複選框後,我們選擇刪除按鈕。單擊刪除按鈕後,系統會顯示一個警告,提示我們確保瞭解刪除操作的影響。重點是,一旦刪除操作開始,就無法停止或撤消。

透過點選“刪除”按鈕確認後,我們看到叢集的狀態更改為“刪除中”,如下圖所示。過一段時間後重新整理螢幕,叢集將從儀表板中消失。

AWS ElastiCache - IAM 策略
使用任何 AWS 資源都需要 AWS 賬戶持有者向請求此許可權的使用者授予許可權。無論是建立、訪問還是刪除資源,所有此類操作都受此類許可權的約束。賬戶管理員可以將許可權策略附加到 IAM 標識,這些標識是使用者、組和角色。
資源格式
在 Amazon ElastiCache 中,主要資源是快取叢集。這些資源具有與其關聯的唯一 Amazon 資源名稱 (ARN),如下所示。ElastiCache 提供了一組用於處理 ElastiCache 資源的操作。
ElastiCache 策略
可以透過轉到 IAM 儀表板,從左側選項卡中選擇策略部分來搜尋特定於 ElastiCache 的策略。在搜尋框中輸入術語 ElastiCache,以下結果將顯示與該搜尋詞相關的所有策略。在下圖中,我們看到 3 個此類策略由 AWS 擁有。

策略摘要
以下是一個策略摘要示例,其中列出了允許的操作以及策略附加到的 ARN。操作中的 * 選項表示允許所有操作。如果我們想將操作限制為幾個值,我們可以在此策略中列出它們。

ElastiCache 策略操作
每個策略包含某些操作。這些操作賦予授予策略的使用者控制權。我們可以選擇上述策略之一,並檢視與該策略相關的操作列表。

AWS ElastiCache - SNS 通知
AWS SNS 代表簡單通知服務。它用於將訊息扇出到大量訂閱者端點以進行並行處理。例如,用於使用移動推送、簡訊和電子郵件將通知扇出到終端使用者。我們可以傳送有關重要叢集事件(例如 CPU 或記憶體利用率等)的訊息到各種訂閱者。以便我們能夠跟蹤 ElastiCache 的執行狀況。
配置 SNS 非常簡單。以下是我們配置 SNS 主題的步驟。
識別叢集
登入 AWS 賬戶並導航到 ElastiCache 儀表板。接下來,選擇相關的引擎,即 Redis 和 Memcached。接下來,選擇需要分配 SNS 服務的叢集的名稱。以下螢幕表示此類叢集的示例。

新增 SNS 主題
要新增 SNS 主題,我們單擊修改按鈕。它會顯示一個螢幕,我們可以在其中從名為SNS 通知主題的下拉列表中選擇 SNS 主題的名稱。如果我們想要放置自定義主題而不是下拉列表中列出的主題,我們可以選擇手動 ARN 輸入。

自定義 SNS 主題
當我們單擊手動 ARN 輸入時,視窗中的下拉列表將更改為文字輸入。我們可以寫入我們要填充的主題的名稱。

可以重複此步驟來更改主題的名稱或透過在文字輸入框中放置空白值來刪除現有主題。
AWS ElastiCache - 事件
在整個 ElastiCache 叢集的生命週期中,會發生很多事情,例如新增或刪除節點、更新 SNS 通知服務等。這些在 ElastiCache 中被稱為事件。監視事件以分析和增強叢集的效能以及對叢集的任何問題進行故障排除非常重要。
這些 ElastiCache 日誌記錄與您的叢集例項、安全組和引數組相關的事件。此資訊包括事件的日期和時間、事件的源名稱和源型別以及事件的描述。
訪問事件
要訪問日誌事件,我們登入叢集並轉到 ElastiCache 儀表板。在左側,我們看到各種 ElastiCache 服務,其中事件就是一項服務。從右側選項卡中,我們選擇要監視其事件的特定叢集名稱。

選擇上述選項後,我們可以看到該叢集的所有事件列表。它還顯示時間戳以及該叢集發生的事件數量。

過濾事件型別
ElastiCache 將事件分類為許多類別。這使得更容易將事件列表縮小到分析所需的特定型別的事件。在事件視窗的左上角,我們看到顯示篩選器值的下拉列表。選擇其中一個值即可獲得特定型別的事件。

AWS ElastiCache - 標籤管理
ElastiCache 中的標籤也稱為成本分配標籤。它們是與一個 ElastiCache 資源關聯的鍵值對。鍵和值都區分大小寫。您可以使用標籤的鍵來定義類別,標籤的值可以是該類別中的專案。例如,您可以對哪個 ElastiCache 叢集用於生產以及哪些用於開發類別進行分類。建議使用一致的標籤鍵集,以便更容易跟蹤與您的資源相關的成本。
此外,您可以使用特定應用程式名稱標記多個資源,然後組織您的賬單資訊以檢視跨多個服務的該應用程式的總成本。當您新增、列出、修改、複製或刪除標籤時,操作僅應用於指定的叢集。
標籤的特徵
標籤鍵是標籤的必填名稱。鍵的字串值可以是 1 到 128 個 Unicode 字元長,並且不能以 aws: 為字首。
標籤值是標籤的可選值。值的字串值可以是 1 到 256 個 Unicode 字元長,並且不能以 aws: 為字首。
一個 ElastiCache 資源最多可以有 50 個標籤。
值不必在標籤集中是唯一的。
成本分配標籤應用於在 CLI 和 API 操作中指定為 ARN 的 ElastiCache 資源。
管理標籤
可以透過轉到 ElastiCache 儀表板,然後選擇特定的叢集型別來建立標籤。在我們的例子中,我們選擇了 Memcached 叢集並使用了名為“管理標籤”的按鈕。

新增標籤
單擊上面步驟中顯示的“管理標籤”按鈕,我們會看到一個螢幕,我們可以在其中新增標籤鍵及其值。值欄位是可選的。要刪除標籤,只需使用交叉符號即可。單擊“應用更改”按鈕以建立實際的標籤。

應用標籤後,我們可以在叢集詳細資訊頁面中看到它們,如下所示。

AWS ElastiCache - 成本管理
AWS ElastiCache 的成本管理有兩種方式。一種是使用標籤,另一種是使用預留節點的定價。成本管理的兩個關鍵因素是監控資源利用率並儘可能準確地預測使用情況。透過研究利用率,我們可以對配置進行調整以減少未使用的部分。透過進行準確的預測,我們可以僅為更長的時間範圍配置所需的資源並利用大幅折扣的價格。
使用預留節點
預留節點收取預付費用,該費用取決於節點型別和預留時長(1 年或 3 年)。除了預付費用外,還有每小時使用費,該費用明顯低於使用按需節點產生的每小時使用費。要確定預留節點是否可以節省您的用例成本,請確定您需要的節點大小和節點數量,估算節點的使用情況,然後比較使用按需節點與預留節點的總成本。
要將預留節點用於 ElastiCache,我們執行以下步驟。
步驟 1
首先,我們導航到 ElastiCache 儀表板。從左側選項卡中,我們選擇“預留節點”選項。這將顯示一個購買預留節點的按鈕。它還會列出您已有的預留節點。

步驟 2
接下來,我們點選“購買預留節點”按鈕。此螢幕幫助我們選擇叢集所需的配置。它幫助我們選擇引擎型別、CPU 速度和記憶體,以及我們想要阻塞預留節點的期限。

步驟 3
在下一個螢幕中,我們可以看到下拉列表中的各種值。在每個下拉列表中選擇特定值,我們會在底部看到成本。當前示例顯示 m4 large 型別的高利用率產品 3 年的費用為 1750 美元。與按小時計費的按需定價相比,這非常便宜。

使用成本分配標籤
我們可以使用成本分配標籤來組織 AWS 賬單,以反映按區域、部門或快取引擎型別等成本結構。要檢視組合資源的成本,我們可以根據具有相同標籤鍵值的資源來組織賬單資訊。例如,我們可以使用特定應用程式名稱標記多個資源,然後組織您的賬單資訊以檢視跨多個服務的該應用程式的總成本。
要按區域跟蹤服務成本,我們可以使用標籤鍵“服務”和“區域”。在一個資源上,我們可能有值“ElastiCache”和“亞太地區(孟買)”,而在另一個資源上,我們可能有值“ElastiCache”和“歐盟(法蘭克福)”。現在,我們可以看到按區域細分的 ElastiCache 總成本。