設定 Redis 叢集以實現可擴展性和高可用性

Amazon ElastiCache for Redis 叢集模式的設定、組態、安全及佈建

您在本項教學中,將了解如何使用 ElastiCache for Redis 建立和設定 Redis 叢集。在啟用叢集模式的情況下,Redis 叢集將提升可擴展性及高可用性。您可從小規模開始著手,隨著應用程式成長輕鬆擴展 Redis 資料,並可在不同可用區域設定複本,以便增加讀取容量。您也可在本項教學之中,了解 Reds 叢集部署的部份最佳實務。

Redis 用戶端具有非常豐富的生態系統,支援各種叢集模式功能。因此您能夠非常輕鬆可靠地使用碎片資料,用戶端則可記錄本機快取的雜湊槽位置,藉此提升整體系統效能。

本教學中建立的 ElastiCache 節點符合免費方案資格。

登入 Amazon ElastiCache 儀表板 »

要求

您在本教學中有時需要連線 Redis 叢集,以便體驗第一手的部份功能。這代表您需要存取安裝 Redis 用戶端的 EC2 執行個體。如果您已經有安裝 Redis 用戶端的 EC2 執行個體,就可跳至步驟 1。否則請連線至 Amazon EC2 執行個體,然後遵循以下指示安裝 Redis 用戶端。

如果您沒有 C 編譯器,安裝方法為執行:

$ sudo yum install gcc

下載及編譯 Redis 用戶端:

$ curl -O http://download.redis.io/redis-stable.tar.gz
$ tar xvzf redis-stable.tar.gz
$ cd redis-stable
$ make distclean  # Ubuntu systems only
$ make

現在可開始教學。

關於本教學
時間 10 - 20 分鐘                                           
費用 符合免費方案資格
使用案例 擴展、高可用性、即時應用程式
產品 AWS ElastiCache for Redis、AWS 免費方案
對象 開發人員
等級 初階
上次更新日期 2019 年 6 月 5 日

步驟 1:進入 ElastiCache 儀表板

開啟 ElastiCache 儀表板,然後:

1.1 — 在右上角選擇您希望啟動 Redis 叢集的區域。

1.2 – 按一下「立即開始」。

步驟 2:建立 Redis 叢集

2.1 – 選取「Redis」作為叢集引擎。

2.2 — 勾選「叢集模式已啟用」。

步驟 3:進行 Redis 設定

3.1 – 選擇 Redis 叢集的名稱,例如「elc-tutorial」。

3.2 — 將節點類型變更為 cache.t2.micro。此節點類型適用於本教學,但對於生產叢集來說,節點大小應取決於您的工作負載,且您應以 m5 或 r5 執行個體系列開始。

3.3 — 在「碎片數量」中選取 3。這代表資料將分割為三個不同的主節點。

3.4 — 在「每碎片複本」中選取 2。這代表每個主節點將有兩個複本。發生故障時,將觸發自動容錯移轉,且其中一個複本會轉而作為主節點。

3.5 – 選取「子網路群組」。如需子網路群組的詳細資訊,請參閱文件

步驟 4:設定進階 Redis 設定

4.1 – 勾選「含自動容錯移轉的多個可用區」方塊。

每個主節點會在不同的可用區域建立,而主節點的每個複本也將分配至不同的可用區域。此為改進可靠性的最佳實務。

其他欄位請保留預設值。

步驟 5:進行安全設定

在此範例中我們不使用加密,但請記住,您可以為靜態資料和傳輸中資料設定加密。

5.1 – 為 Redis 叢集選取「安全群組」。

重要說明:請確保您選取的安全群組允許在連接埠 6379 傳入 TCP 連線,否則您就無法連線至 Redis 節點。

步驟 6:將資料匯入叢集

在此範例中,我們不載入任何子 RDB 檔案,因此我們可以完全略過此設定步驟。但請記住,此選項是可用的。

步驟 7:設定備份

對多數使用案例來說,每日備份很重要,且我們建議啟用具保留期間的備份,這麼做可為您提供充分的時間來應對任何不利的情況。在此教學中,我們不使用任何備份。

7.1 – 取消勾選「啟用自動備份」。

步驟 8:維護設定

8.1 — 指定符合您需求的維護時段。

您可考慮選擇應用程式工作負載較低的時間和日子。就我們目前的需求而言,只需選擇「無偏好」即可。

步驟 9:檢查並建立

在快速檢閱表單中的所有欄位後,您可以按下「建立」。

9.1 – 按一下「建立」。

Redis 叢集將會初始化,其狀態變為「可用」後,您就能繼續進行步驟 10。

若您偏好使用 Amazon CLI,以下命令可一次建立 Redis 叢集:

若您偏好使用 Amazon CLI,以下命令可一次建立 Redis 叢集:

$ aws elasticache create-replication-group \
--replication-group-id elc-tutorial \
--replication-group-description "Tutorial example" \
--num-node-groups 3 \
--cache-node-type cache.t2.micro \
--cache-parameter-group default.redis5.0.cluster.on \
--engine redis \
--engine-version 5.0.3 \
--cache-subnet-group-name sn-value \
--security-group-ids sg-value \
--node-group-configuration \
"ReplicaCount=2,PrimaryAvailabilityZone='us-east-1a',ReplicaAvailabilityZones='us-east-1b','us-east-1c',Slots=0-5460" \
"ReplicaCount=2,PrimaryAvailabilityZone='us-east-1b',ReplicaAvailabilityZones='us-east-1c','us-east-1a',Slots=5461-10921" \
"ReplicaCount=2,PrimaryAvailabilityZone='us-east-1c',ReplicaAvailabilityZones='us-east-1a','us-east-1b',Slots=10922-16383"

對於 --security-group-ids 的引數,您必須將 sg-value 更換為欲使用的安全群組 ID。

至於 --cache-subnet-group-name 的引數,請將 sn-value 更換為子網路群組名稱。如果您需要建立子網路群組,請使用下列命令:

$ aws elasticache create-cache-subnet-group \
--cache-subnet-group-name elc-tutorial-subnet \
--cache-subnet-group-description "Tutorial Subnet Group" \
--subnet-ids sn-ids

sn-ids 值必須為子網路 ID 清單。

若您偏好使用 Amazon API,以下要求將建立 Redis 叢集:

https://elasticache.us-east-1.amazonaws.com/
?Action=CreateReplicationGroup 
&CacheParameterGroup=default.redis5.0.cluster.on
&Engine=redis
&EngineVersion=5.0.3
&ReplicationGroupDescription=Tutorial%20example
&ReplicationGroupId=elc-tutorial
&NumNodeGroups=3
&PrimaryClusterId=elc-primary
&ReplicasPerNodeGroup=2
&Version=<version>
&SignatureVersion=4
&SignatureMethod=HmacSHA256
&Timestamp=<timestamp>
&X-Amz-Credential=<credential>

您在之前要求中必須提供版本、時間戳記和 X-Amz-登入資料的值。

步驟 10:連線 Redis

請尋找 Redis 叢集的組態端點。

10.1 — 按一下箭頭以顯示 Redis 叢集詳細資訊。

10.2 — 複製組態端點。

在範例中,應於每次提到端點時使用組態端點的主機名稱。

10.4 — 使用 redis-cli 公用程式連線至 Redis 節點。

$ ./src/redis-cli -c -h endpoint

10.5 — 以 PING 測試連線。

endpoint:6379> PING
	PONG

步驟 11:觸發容錯移轉

現在您擁有正常運作且狀態良好的 Redis 叢集。叢集模式的功能之一,就是叢集可在節點失效時自行修復。為了測試前述主張,您可觸發手動容錯移轉,接下來將發生以下情況:將選取讀取複本取代主節點,一旦執行容錯移轉,就能連線至新的主節點。同時新的複本將自動新增,這樣叢集仍擁有一個主節點和兩個複本。

使用步驟 10 的端點檢查節點角色。

11.1 — 檢查端點角色。

	endpoint:6379> ROLE
	1) "master"
 	...

您希望連線至主節點。如果您並未連線主節點,請嘗試以不同端點進行。您有三次機會進行連線。

一旦您找到主節點:

11.2 — 選擇任何節點,按一下「行動」並選擇「容錯移轉主複本」。

閱讀訊息了解實際情況,然後按下「繼續」。其中一個複本將成為新的主節點,並將回復每個主節點的複本數量。您可執行 CLUSTER NODES 命令以驗證所發生的情況。

步驟 12:刪除叢集

為了完成此實驗,您將了解如何刪除不再需要使用的 Redis 叢集。

若要刪除 Redis 叢集,請前往 ElastiCache 儀表板並遵循以下指示:

12.1 – 選取左側面板的「Redis」。

這會向您顯示所有 Redis 叢集的清單。

12.2 – 選取您為本教學所建立的 Redis 叢集。

12.3 — 按一下「刪除」。

12.4 — 系統會向您詢問是否要建立最終備份。通常這是個不錯的主意,但在此教學中並無必要。選取「否」,然後按一下「刪除」。

叢集狀態將變更為「正在刪除」。

恭喜

您已經建立啟用叢集模式的 Redis 叢集。節點分散在各個可用區域,並設定自動容錯移轉。您也了解 Redis 叢集部署的部分最佳實務。

本教學對您有幫助嗎?

進一步了解

如果您需要進一步了解 Redis 叢集,請參閱 Redis Cluster 101 部落格貼文。 如需更多入門說明、開發人員指南,以及使用案例技術部落格,請造訪我們的資源頁面

選擇適當的節點大小

判定 Redis 節點大小似乎並不容易,不過我們已經制定準則,協助您依據需求選擇適當的節點大小

快取策略

最後您可進一步了解各種快取策略及最佳實務,協助提升效能及可靠度。