

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 ElastiCache 中管理叢集
<a name="Clusters"></a>

*叢集*是一或多個快取節點的集合，所有這些節點都會執行 Valkey、Memcached 和 Redis OSS 引擎軟體的執行個體。在您建立叢集時，可以指定要使用的所有節點之引擎和版本。

**Valkey 和 Redis OSS 叢集**

下圖說明典型的 Valkey 或 Redis OSS 叢集。這些叢集可以在碎片 (API/CLI：節點群組） 內包含單一節點或最多六個節點，單一節點 Valkey 或 Redis OSS （停用叢集模式） 叢集沒有碎片，而多節點 Valkey 或 Redis OSS （停用叢集模式） 叢集具有單一碎片。Valkey 或 Redis OSS （啟用叢集模式） 叢集最多可有 500 個碎片，您的資料會分割在碎片上。如果引擎版本為 Valkey 7.2 及更高版本，或 Redis OSS 5.0.6 及更高版本，則每個叢集的節點或碎片限制最多可增加 500 個。例如，您可以選擇設定具有 500 個節點的叢集，並容許碎片在 83 個（每個碎片一個主要版本和 5 個複本）到 500 個（單一主要版本並且沒有複本）之間變化。請確保有足夠的可用 IP 地址來容納增加的數量。常見的缺陷包括子網路群組中的子網路的 CIDR 範圍太小，或是子網路被共用並被其他叢集大量使用。如需詳細資訊，請參閱[建立子網路群組](SubnetGroups.Creating.md)。對於 5.0.6 以下的版本，每個叢集的限制為 250 個。

若要請求提高配額，請參閱 [AWS 服務配額](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)，並選擇配額類型 **Nodes per cluster per instance type (每執行個體類型每叢集的節點數)**。

 當您在 Valkey 或 Redis OSS 碎片中有多個節點時，其中一個節點是讀取/寫入主節點。碎片中的所有其他節點則是唯讀複本。

典型的 Valkey 或 Redis OSS 叢集如下所示。

![\[影像：典型的 Valkey 和 Redis OSS 叢集\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/images/ElastiCache-Cluster-Redis.png)


**Memcached 叢集**

典型的 Memcached 叢集如下所示。Memcached 叢集包含 1 到 60 個節點，您可以在其中水平分割資料。

![\[圖片：典型 Memcached 叢集\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/images/ElastiCache-Cluster-Memcached.png)


**Valkey、Memcached 和 Redis OSS 的 Elasticache 操作**

大多數 ElastiCache 作業都是在叢集層級執行。您可以將叢集設定為含特定數量的節點和一個參數群組，以控制每個節點的屬性。叢集內的所有節點都設計為相同節點類型，並具備相同的參數和安全群組設定。

每個叢集都必須有一個叢集識別符。叢集識別符是客戶針對叢集提供的名稱。這個識別碼可在 ElastiCache API 和 AWS CLI 命令互動時指定特定的叢集。叢集識別符對於 AWS 區域中的該客戶必須是唯一的。

ElastiCache 支援多種引擎版本。除非您有特定原因，否則我們建議您使用最新版本。

ElastiCache 叢集設計為使用 Amazon EC2 執行個體來存取。如果您在以 Amazon VPC 服務為基礎的 Virtual Private Cloud (VPC) 中啟動叢集，即可從 AWS外部存取該叢集。如需詳細資訊，請參閱[從外部存取 ElastiCache 資源AWS](accessing-elasticache.md#access-from-outside-aws)。

如需支援的版本清單，請參閱 [支援的引擎和版本](VersionManagement.md#supported-engine-versions)、 [支援的 Redis OSS 引擎版本](engine-versions.md#supported-engine-versions.redis)和 [支援的 ElastiCache for Memcached 版本](engine-versions.md#supported-engine-versions-mc)。

# 在 ElastiCache 中選擇網路類型
<a name="network-type"></a>

ElastiCache 支援網際網路通訊協定第 4 版和第 6 版 (IPv4 和 IPv6)，可讓您將叢集設定為接受：
+ 只有 IPv4 連接，
+ 只有 IPv6 連線，
+ IPv4 和 IPv6 連線皆可 (雙堆疊)

在 [Nitro 系統上](https://aws.amazon.com/ec2/nitro/)建置的所有執行個體上，使用 Valkey 7.2 和更新版本或 Redis OSS 6.2 和更新版本的工作負載都支援 IPv6。透過 IPv6 存取 ElastiCache 不另行收費。

**注意**  
不支援在 IPV6/雙堆疊可用性之前建立的叢集遷移。也不支援在新建立的叢集上切換網路類型。

在 [Nitro 系統上](https://aws.amazon.com/ec2/nitro/)建置的所有執行個體上使用 Memcached 1.6.6 以上版本的工作負載都支援 IPv6。透過 IPv6 存取 ElastiCache 不另行收費。

## 設定網路類型的子網路
<a name="network-type-subnets"></a>

如果您在 Amazon VPC 中建立叢集，就必須指定子網路群組。ElastiCache 會使用此子網路群組選擇子網路及該子網路中的 IP 地址，以與您的節點建立關聯。ElastiCache 叢集需要具有 IPv4 和 IPv6 地址的雙堆疊子網路，以便在雙堆疊模式下運作，且僅限 IPv6 的子網路僅會以 IPv6 運作。

## 使用雙堆疊
<a name="network-type-dual-stack"></a>

在啟用叢集模式下使用 ElastiCache for Redis OSS 時，從應用程式的角度來看，透過組態端點連線至所有叢集節點與直接連線至個別快取節點並無不同。若要達成此目標，叢集感知用戶端必須參與叢集探索程序，並要求所有節點的組態資訊。Rediss 的探索通訊協定在每個節點僅支援一個 IP。

當您使用 ElastiCache for Memcachedand 選擇雙堆疊做為網路類型建立叢集時，您需要指定 IP 探索類型：IPv4 或 IPv6。ElastiCache 會將網路類型和 IP 探索預設為 IPv6，但這可以變更。如果您使用自動探索，只有您所選 IP 類型的 IP 地址會傳回至 Memcached 用戶端。如需詳細資訊，請參閱[自動識別叢集中的節點 (Memcached)](AutoDiscovery.md)。

為了維持與所有現有用戶端的回溯相容性，我們會引入 IP 探索，讓您選取要在探索通訊協定中公告的 IP 類型 (即 IPv4 或 IPv6)。雖然這將自動探索限制為只有一種 IP 類型，但有了自動探索功能，雙堆疊仍然十分有用，因為可讓您從 IPv4 遷移 (或回復) 到 IPv6 探索 IP 類型，而不會導致停機。

## 啟用 TLS 的雙堆疊 ElastiCache 叢集
<a name="configuring-tls-enabled-dual-stack"></a>

為 ElastiCache 叢集啟用 TLS 時，叢集探索函數，例如 `cluster slots`、 `cluster shards`和 `cluster nodes` 搭配 Valkey 或 Redis OSS 以及 `config get cluster`搭配 Memcached 會傳回主機名稱，而非 IPs。接著會使用主機名稱而非 IP 來連線 ElastiCache 叢集，並執行 TLS 交握。這表示用戶端不會受到 IP 探索參數的影響。*針對啟用 TLS 的叢集，IP 探索參數對偏好的 IP 通訊協定沒有影響。*反之，用戶端在解析 DNS 主機名稱時偏好使用的 IP 通訊協定會決定所使用的 IP 通訊協定。

如需如何在解析 DNS 主機名稱時設定 IP 通訊協定偏好設定的範例，請參閱 [啟用 TLS 的雙堆疊 ElastiCache 叢集](BestPractices.md#network-type-configuring-tls-enabled-dual-stack)。

## 使用AWS 管理主控台(Valkey 和 Redis OSS)
<a name="network-type-console"></a>

使用 建立叢集時AWS 管理主控台，請在**連線能力**下選擇網路類型，即 **IPv4**、**IPv6** 或**雙堆疊**。如果您要建立 Valkey 或 Redis OSS （啟用叢集模式） 叢集並選擇雙堆疊，則必須選取**探索 IP 類型**，即 IPv6 或 IPv4。

如需詳細資訊，請參閱 [建立 Valkey 或 Redis OSS （啟用叢集模式） 叢集 （主控台）](Clusters.Create.md#Clusters.Create.CON.RedisCluster) 或 [建立 Valkey 或 Redis OSS （停用叢集模式） （主控台）](Clusters.Create.md#Clusters.Create.CON.Redis) 。

使用 建立複寫群組時AWS 管理主控台，請選擇網路類型，即 **IPv4**、**IPv6** 或**雙堆疊**。若您選擇雙堆疊，則須選取 IPv6 或 IPv4 做為 **Discovery IP type** (探索 IP 類型)。

如需詳細資訊，請參閱 [從頭開始建立 Valkey 或 Redis OSS （停用叢集模式） 複寫群組](Replication.CreatingReplGroup.NoExistingCluster.Classic.md) 或 [從頭開始在 Valkey 或 Redis OSS （啟用叢集模式） 中建立複寫群組](Replication.CreatingReplGroup.NoExistingCluster.Cluster.md) 。

## 使用AWS 管理主控台(Memcached)
<a name="network-type-console-mem"></a>

使用 建立叢集時AWS 管理主控台，請在**連線能力**下選擇網路類型，即 **IPv4**、**IPv6** 或**雙堆疊**。若您選擇雙堆疊，則須選取 IPv6 或 IPv4 做為 **Discovery IP type** (探索 IP 類型)。

如需詳細資訊，請參閱[建立 Memcached 叢集 (主控台)](Clusters.Create-mc.md#Clusters.Create.CON.Memcached)。

## 使用 CLI 搭配 Valkey、Memcached 或 Redis OSS。
<a name="network-type-cli"></a>

**Redis OSS**

使用 CLI 建立具有 Valkey 或 Redis OSS 的叢集時，您可以使用 [create-cache-cluster](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-cache-cluster.html) 命令並指定 `NetworkType`和 `IPDiscovery` 參數：

針對 Linux、macOS 或 Unix：

```
aws elasticache create-cache-cluster \
    --cache-cluster-id "cluster-test" \
    --engine redis \
    --cache-node-type cache.m5.large \
    --num-cache-nodes 1 \
    --network-type dual_stack \
    --ip-discovery ipv4
```

針對 Windows：

```
aws elasticache create-cache-cluster ^
    --cache-cluster-id "cluster-test" ^
    --engine redis ^
    --cache-node-type cache.m5.large ^
    --num-cache-nodes 1 ^
    --network-type dual_stack ^
    --ip-discovery ipv4
```

使用 CLI 建立停用叢集模式的複寫群組時，您可以使用 [create-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-replication-group.html) 命令並指定 `NetworkType` 和 `IPDiscovery` 參數：

針對 Linux、macOS 或 Unix：

```
aws elasticache create-replication-group \
   --replication-group-id sample-repl-group \
   --replication-group-description "demo cluster with replicas" \
   --num-cache-clusters 3 \
   --primary-cluster-id redis01 \
   --network-type dual_stack \
   --ip-discovery ipv4
```

針對 Windows：

```
aws elasticache create-replication-group ^
   --replication-group-id sample-repl-group ^
   --replication-group-description "demo cluster with replicas" ^
   --num-cache-clusters 3 ^
   --primary-cluster-id redis01 ^
   --network-type dual_stack ^
   --ip-discovery ipv4
```

建立已啟用叢集模式的複寫群組，並使用 CLI 將 IPv4 用於 IP 探索時，您可以使用 [create-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-replication-group.html) 命令並指定 `NetworkType` 和 `IPDiscovery` 參數：

針對 Linux、macOS 或 Unix：

```
aws elasticache create-replication-group \
  --replication-group-id demo-cluster \
  --replication-group-description "demo cluster" \
  --cache-node-type cache.m5.large \
  --num-node-groups 2 \
  --engine redis \
  --cache-subnet-group-name xyz \
  --network-type dual_stack \
  --ip-discovery ipv4 \
  --region us-east-1
```

針對 Windows：

```
aws elasticache create-replication-group ^
  --replication-group-id demo-cluster ^
  --replication-group-description "demo cluster" ^
  --cache-node-type cache.m5.large ^
  --num-node-groups 2 ^
  --engine redis ^
  --cache-subnet-group-name xyz ^
  --network-type dual_stack ^
  --ip-discovery ipv4 ^
  --region us-east-1
```

建立已啟用叢集模式的複寫群組，並使用 CLI 將 IPv6 用於 IP 探索時，您可以使用 [create-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-replication-group.html) 命令並指定 `NetworkType` 和 `IPDiscovery` 參數：

針對 Linux、macOS 或 Unix：

```
aws elasticache create-replication-group \
  --replication-group-id demo-cluster \
  --replication-group-description "demo cluster" \
  --cache-node-type cache.m5.large \
  --num-node-groups 2 \
  --engine redis \
  --cache-subnet-group-name xyz \
  --network-type dual_stack \
  --ip-discovery ipv6 \
  --region us-east-1
```

針對 Windows：

```
aws elasticache create-replication-group ^
  --replication-group-id demo-cluster ^
  --replication-group-description "demo cluster" ^
  --cache-node-type cache.m5.large ^
  --num-node-groups 2 ^
  --engine redis ^
  --cache-subnet-group-name xyz ^
  --network-type dual_stack ^
  --ip-discovery ipv6 ^
  --region us-east-1
```

**Memcached**

使用 CLI 使用 Memcached 建立叢集時，您可以使用 [create-cache-cluster](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-cache-cluster.html) 命令並指定 `NetworkType`和 `IPDiscovery` 參數：

針對 Linux、macOS 或 Unix：

```
aws elasticache create-cache-cluster \
    --cache-cluster-id "cluster-test" \
    --engine memcached \
    --cache-node-type cache.m5.large \
    --num-cache-nodes 1 \
    --network-type dual_stack \
    --ip-discovery ipv4
```

針對 Windows：

```
aws elasticache create-cache-cluster ^
    --cache-cluster-id "cluster-test" ^
    --engine memcached ^
    --cache-node-type cache.m5.large ^
    --num-cache-nodes 1 ^
    --network-type dual_stack ^
    --ip-discovery ipv4
```

# 自動識別叢集中的節點 (Memcached)
<a name="AutoDiscovery"></a>

對於執行 Memcached 引擎的叢集，ElastiCache 支援 *Auto Discovery*，可讓用戶端程式自動識別叢集中的所有節點，以及啟動和維護所有這些節點的連線。

**注意**  
Amazon ElastiCache Memcached 上執行的叢集會新增自動探索。Auto Discovery 不適用於 Valkey 或 Redis OSS 引擎。

透過自動探索，您的應用程式便不需要手動連線到個別快取節點；您的應用程式可改為連線到單一 Memcached 節點，並擷取節點清單。藉由該清單，您的應用程式便會感知到叢集中的其餘節點，並可以連線到其中任何一個節點。您不需要在應用程式中硬式編碼個別快取節點端點。

若您在叢集上使用雙堆疊網路類型，則視您選取的地址，自動探索只會傳回 IPv4 或 IPv6 地址。如需詳細資訊，請參閱 [在 ElastiCache 中選擇網路類型](network-type.md)。

叢集中所有快取節點都會維持一份其他所有節點的中繼資料清單。此中繼資料會在將節點新增到叢集或從叢集中移除節點時更新。

**Topics**
+ [使用 Memcached 自動探索的優點](AutoDiscovery.Benefits.md)
+ [自動探索的運作方式](AutoDiscovery.HowAutoDiscoveryWorks.md)
+ [使用自動探索](AutoDiscovery.Using.md)
+ [手動連線至 Memcached 快取節點](AutoDiscovery.Manual.md)
+ [將自動探索新增至 Memcached 用戶端程式庫](AutoDiscovery.AddingToYourClientLibrary.md)
+ [具有自動探索功能的 ElastiCache 用戶端](Clients.md)

# 使用 Memcached 自動探索的優點
<a name="AutoDiscovery.Benefits"></a>

使用 Memcached 時，Auto Discovery 提供下列優點：
+ 當您增加叢集中的節點數量時，新節點會向組態端點和所有其他節點自行註冊。當您從快取叢集移除節點時，離開的節點會自行取消註冊。在這兩種情況下，叢集中所有其他的節點都會使用最新的快取節點中繼資料更新。
+ 自動偵測快取節點故障，並會自動取代失敗的節點。
**注意**  
在完成更換節點之前，節點會繼續失敗。
+ 用戶端程式只需要連線到組態端點。之後，自動探索程式庫便會連線到叢集內所有其他的節點。
+ 用戶端程式會每分鐘輪詢叢集一次 (此間隔可視需要進行調整)。若叢集組態發生任何變更 (例如新增節點或刪除節點)，用戶端便會接收到更新後的中繼資料清單。然後，用戶端便會視需要連線 (或中斷連線) 到這些節點。

所有 ElastiCache Memcached 叢集都已啟用自動探索。您不需要重新啟動任何快取節點，便可使用這項功能。

# 自動探索的運作方式
<a name="AutoDiscovery.HowAutoDiscoveryWorks"></a>

**Topics**
+ [連線至快取節點](#AutoDiscovery.HowAutoDiscoveryWorks.Connecting)
+ [一般叢集操作](#AutoDiscovery.HowAutoDiscoveryWorks.NormalOps)
+ [其他操作](#AutoDiscovery.HowAutoDiscoveryWorks.OtherOps)

本節說明用戶端應用程式如何使用 ElastiCache 叢集用戶端來管理快取節點連線，以及與快取中的資料項目互動。

## 連線至快取節點
<a name="AutoDiscovery.HowAutoDiscoveryWorks.Connecting"></a>

從應用程式的觀點而言，連線到叢集組態端點與直接連線到個別快取節點沒什麼不同。以下順序圖表顯示連線到快取節點的程序。

![\[連線至快取節點\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/images/autodiscovery_cluster_membership_refresh-diagram.png)



**連線至快取節點的程序**  

|  |  | 
| --- |--- |
|  ![\[1\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/images/callouts/1.png) | 應用程式解析組態端點的 DNS 名稱。因為組態端點包含所有快取節點的 CNAME 項目，DNS 名稱會解析到其中一個節點。用戶端接著便能連線到該節點。 | 
|  ![\[2\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/images/callouts/2.png) | 用戶端請求所有其他節點的組態資訊。因為每個節點都會維持叢集中所有節點的組態資訊，任何節點都能在請求時將組態資訊傳遞給用戶端。 | 
|  ![\[3\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/images/callouts/3.png) | 用戶端接收到目前快取節點主機名稱及 IP 地址的清單。然後，它便能連線到叢集中所有其他的節點。 | 



**注意**  
用戶端程式每分鐘更新快取節點主機名稱及 IP 地址的清單一次。此輪詢間隔可視需要進行調整。

## 一般叢集操作
<a name="AutoDiscovery.HowAutoDiscoveryWorks.NormalOps"></a>

應用程式連線到所有快取節點之後，ElastiCache 叢集用戶端便會判斷哪些節點應存放個別資料項目，以及稍後應對哪些節點查詢該資料項目。以下順序圖表顯示一般叢集操作的程序。

![\[一般叢集操作\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/images/autodiscovery_normal_cache_usage-diagram.png)



**一般叢集操作的程序**  

|  |  | 
| --- |--- |
|  ![\[1\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/images/callouts/1.png) | 應用程式針對個別資料項目發出 get 請求，以資料項目的鍵進行識別。 | 
|  ![\[2\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/images/callouts/2.png) | 用戶端針對鍵使用雜湊演算法，判斷哪個快取節點包含該資料項目。 | 
|  ![\[3\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/images/callouts/3.png) | 隨即從適當節點請求資料項目。 | 
|  ![\[4\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/images/callouts/4.png) | 資料項目傳回應用程式。 | 

## 其他操作
<a name="AutoDiscovery.HowAutoDiscoveryWorks.OtherOps"></a>

在某些情況下，您可能會對叢集的節點進行變更。例如，您可以新增額外節點以滿足其他需求，或刪除節點以在需求減少期間節省成本。或者，您可能會因為任何節點故障而替換掉節點。

當叢集內發生變更，使中繼資料需要更新叢集的端點時，便會同時變更所有節點。因此，任何指定節點中的中繼資料都會與叢集內其他所有節點中的中繼資料保持一致。

在其中任何一種情況下，由於叢集內所有節點的中繼資料都會同時更新，因此所有節點內的中繼資料都會隨時保持一致。建議您一律使用組態端點來取得叢集內各種節點的端點。透過使用組態端點，您可以確保不會從在您面前「消失」的節點取得端點資料。

### 新增節點
<a name="AutoDiscovery.HowAutoDiscoveryWorks.OtherOps.AddNode"></a>

節點啟動期間，中繼資料內不會包含其端點。當節點可供使用時，它便會新增到每個叢集節點的中繼資料。在此案例中，所有節點內的中繼資料都會保持一致，並且您只能在新節點可供使用之後與它互動。在節點可供使用之前，您將無法得知它，並且您會以相同方式與叢集內的節點互動，就好像新節點不存在。

### 刪除節點
<a name="AutoDiscovery.HowAutoDiscoveryWorks.OtherOps.DelNode"></a>

移除節點時，會先從中繼資料移除其端點，然後再從叢集移除節點。在此案例中，所有節點內的中繼資料都會保持一致，並且不會在節點無法使用的同時包含要移除節點的端點。在移除節點期間，中繼資料內不會報告該節點，因此您的應用程式屆時只會與 n-1 個剩餘節點進行互動，宛如節點不存在。

### 取代節點
<a name="AutoDiscovery.HowAutoDiscoveryWorks.OtherOps.ReplaceNode"></a>

若節點失敗，ElastiCache 會撤下該節點，並啟用替代節點。取代程序可能需要幾分鐘。在此期間，所有節點內的中繼資料仍會顯示失敗節點的端點，但任何嘗試與該節點進行的互動都會失敗。因此，建議您的邏輯一律包含重試邏輯。

# 使用自動探索
<a name="AutoDiscovery.Using"></a>

若要開始將 Auto Discovery 與 ElastiCache for Memcached 搭配使用，請遵循下列步驟：
+ [取得組態端點](#AutoDiscovery.Using.ConfigEndpoint)
+ [下載 ElastiCache 叢集用戶端](#AutoDiscovery.Using.ClusterClient)
+ [修改您的應用程式](#AutoDiscovery.Using.ModifyApp)

## 取得組態端點
<a name="AutoDiscovery.Using.ConfigEndpoint"></a>

為了連線到叢集，用戶端程式必須知道叢集的組態端點。請參閱主題：[尋找叢集的端點 （主控台） (Memcached)](Endpoints.md#Endpoints.Find.Memcached)

您也可以使用 `aws elasticache describe-cache-clusters` 命令搭配 `--show-cache-node-info` 參數：

無論您用來尋找叢集端點的方法為何，組態端點的地址內都會一律包含 **.cfg**。

**Example 使用 AWS CLI for ElastiCache 尋找端點**  
若為 Linux、macOS 或 Unix：  

```
aws elasticache describe-cache-clusters \
    --cache-cluster-id mycluster \
    --show-cache-node-info
```
針對 Windows：  

```
aws elasticache describe-cache-clusters ^
    --cache-cluster-id mycluster ^
    --show-cache-node-info
```
此作業會產生類似下列的輸出 (JSON 格式)：  

```
{
    "CacheClusters": [
        {
            "Engine": "memcached", 
            "CacheNodes": [
                {
                    "CacheNodeId": "0001", 
                    "Endpoint": {
                        "Port": 11211, 
                        "Address": "mycluster.fnjyzo.cfg.0001.use1.cache.amazonaws.com"
                    }, 
                    "CacheNodeStatus": "available", 
                    "ParameterGroupStatus": "in-sync", 
                    "CacheNodeCreateTime": "2016-10-12T21:39:28.001Z", 
                    "CustomerAvailabilityZone": "us-east-1e"
                }, 
                {
                    "CacheNodeId": "0002", 
                    "Endpoint": {
                        "Port": 11211, 
                        "Address": "mycluster.fnjyzo.cfg.0002.use1.cache.amazonaws.com"
                    }, 
                    "CacheNodeStatus": "available", 
                    "ParameterGroupStatus": "in-sync", 
                    "CacheNodeCreateTime": "2016-10-12T21:39:28.001Z", 
                    "CustomerAvailabilityZone": "us-east-1a"
                }
            ], 
            "CacheParameterGroup": {
                "CacheNodeIdsToReboot": [], 
                "CacheParameterGroupName": "default.memcached1.4", 
                "ParameterApplyStatus": "in-sync"
            }, 
            "CacheClusterId": "mycluster", 
            "PreferredAvailabilityZone": "Multiple", 
            "ConfigurationEndpoint": {
                "Port": 11211, 
                "Address": "mycluster.fnjyzo.cfg.use1.cache.amazonaws.com"
            }, 
            "CacheSecurityGroups": [], 
            "CacheClusterCreateTime": "2016-10-12T21:39:28.001Z", 
            "AutoMinorVersionUpgrade": true, 
            "CacheClusterStatus": "available", 
            "NumCacheNodes": 2, 
            "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:", 
            "CacheSubnetGroupName": "default", 
            "EngineVersion": "1.4.24", 
            "PendingModifiedValues": {}, 
            "PreferredMaintenanceWindow": "sat:06:00-sat:07:00", 
            "CacheNodeType": "cache.r3.large"
        }
    ]
}
```

## 下載 ElastiCache 叢集用戶端
<a name="AutoDiscovery.Using.ClusterClient"></a>

若要利用自動探索功能，用戶端程式必須使用 *ElastiCache 叢集用戶端*。ElastiCache 叢集用戶端適用於 Java、PHP 及 .NET，並包含探索及連線到所有快取節點的必要邏輯。

**下載 ElastiCache 叢集用戶端**

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/) 開啟 ElastiCache 主控台。

1. 從 ElastiCache 主控台中，選擇 **ElastiCache Cluster Client (ElastiCache 叢集用戶端)**，然後選擇 **Download (下載)**。

如需適用於 Java 的 ElastiCache 叢集用戶端原始碼，請前往 [https://github.com/amazonwebservices/aws-elasticache-cluster-client-memcached-for-java](https://github.com/amazonwebservices/aws-elasticache-cluster-client-memcached-for-java)。此程式庫是以熱門的 Spymemcached 用戶端為基礎。ElastiCache 叢集用戶端是根據 Amazon 軟體授權 ([https://aws.amazon.com/asl](https://aws.amazon.com/asl)) 發行。您可以視需要自由修改來源碼。您甚至可以將程式碼併入其他開放原始碼 Memcached 程式庫，或是併入您自己的用戶端程式碼。

**注意**  
若要使用適用於 PHP 的 ElastiCache 叢集用戶端，您必須先在 Amazon EC2 執行個體上安裝它。如需詳細資訊，請參閱[安裝適用於 PHP 的 ElastiCache 叢集用戶端](Appendix.PHPAutoDiscoverySetup.md)。  
若為支援 TLS 的用戶端，請下載 PHP 7.4 或更高版本的二進位檔。  
若要使用適用於 .NET 的 ElastiCache 叢集用戶端，您必須先在 Amazon EC2 執行個體上安裝它。如需詳細資訊，請參閱[安裝適用於 .NET 的 ElastiCache 叢集用戶端](Appendix.DotNETAutoDiscoverySetup.md)。

## 修改您的應用程式
<a name="AutoDiscovery.Using.ModifyApp"></a>

修改您的應用程式以使用自動探索。以下各節示範如何使用適用於 Java、PHP 及 .NET 的 ElastiCache 叢集用戶端。

**重要**  
指定叢集的組態端點時，請務必確認端點的地址內包含 ".cfg"，如以下所示。請不要使用未包含 ".cfg" 的 CNAME 或端點。  

```
"mycluster.fnjyzo.cfg.use1.cache.amazonaws.com";
```
 明確指定叢集組態端點失敗，可能會導致設定至特定節點。

# 使用適用於 Java 的 ElastiCache 叢集用戶端
<a name="AutoDiscovery.Using.ModifyApp.Java"></a>

以下程式會示範如何使用 ElastiCache 叢集用戶端連線到叢集組態端點，然後將資料項目新增到快取。使用自動探索，程式便會連線到叢集內的所有節點，而不會進行其他介入。

```
package com.amazon.elasticache;

import java.io.IOException;
import java.net.InetSocketAddress;

// Import the &AWS;-provided library with Auto Discovery support 
import net.spy.memcached.MemcachedClient;  

public class AutoDiscoveryDemo {

    public static void main(String[] args) throws IOException {
            
        String configEndpoint = "mycluster.fnjyzo.cfg.use1.cache.amazonaws.com";
        Integer clusterPort = 11211;

        MemcachedClient client = new MemcachedClient(
                                 new InetSocketAddress(configEndpoint, 
                                                       clusterPort));       
        // The client will connect to the other cache nodes automatically.

        // Store a data item for an hour.  
        // The client will decide which cache host will store this item. 
        client.set("theKey", 3600, "This is the data value");
    }
}
```

# 使用適用於 PHP 的 ElastiCache 叢集用戶端
<a name="AutoDiscovery.Using.ModifyApp.PHP"></a>

以下程式會示範如何使用 ElastiCache 叢集用戶端連線到叢集組態端點，然後將資料項目新增到快取。使用自動探索，程式將會連線到叢集內的所有節點，而不會進行其他介入。

若要使用適用於 PHP 的 ElastiCache 叢集用戶端，您必須先在 Amazon EC2 執行個體上安裝它。如需詳細資訊，請參閱[安裝適用於 PHP 的 ElastiCache 叢集用戶端](Appendix.PHPAutoDiscoverySetup.md)

```
<?php
	
 /**
  * Sample PHP code to show how to integrate with the Amazon ElastiCache
  * Auto Discovery feature.
  */

  /* Configuration endpoint to use to initialize memcached client. 
   * This is only an example. 	*/
  $server_endpoint = "mycluster.fnjyzo.cfg.use1.cache.amazonaws.com";
  
  /* Port for connecting to the ElastiCache cluster. 
   * This is only an example 	*/
  $server_port = 11211;

 /**
  * The following will initialize a Memcached client to utilize the Auto Discovery feature.
  * 
  * By configuring the client with the Dynamic client mode with single endpoint, the
  * client will periodically use the configuration endpoint to retrieve the current cache
  * cluster configuration. This allows scaling the cluster up or down in number of nodes
  * without requiring any changes to the PHP application. 
  *
  * By default the Memcached instances are destroyed at the end of the request. 
  * To create an instance that persists between requests, 
  *    use persistent_id to specify a unique ID for the instance. 
  * All instances created with the same persistent_id will share the same connection. 
  * See [http://php.net/manual/en/memcached.construct.php](http://php.net/manual/en/memcached.construct.php) for more information.
  */
  $dynamic_client = new Memcached('persistent-id');
  $dynamic_client->setOption(Memcached::OPT_CLIENT_MODE, Memcached::DYNAMIC_CLIENT_MODE);
  $dynamic_client->addServer($server_endpoint, $server_port);
  
  /**
  * Store the data for 60 seconds in the cluster. 
  * The client will decide which cache host will store this item.
  */  
  $dynamic_client->set('key', 'value', 60);  


 /**
  * Configuring the client with Static client mode disables the usage of Auto Discovery
  * and the client operates as it did before the introduction of Auto Discovery. 
  * The user can then add a list of server endpoints.
  */
  $static_client = new Memcached('persistent-id');
  $static_client->setOption(Memcached::OPT_CLIENT_MODE, Memcached::STATIC_CLIENT_MODE);
  $static_client->addServer($server_endpoint, $server_port);

 /**
  * Store the data without expiration. 
  * The client will decide which cache host will store this item.
  */  
  $static_client->set('key', 'value');  
  ?>
```

如需如何使用已啟用 TLS 的 ElastiCache 叢集用戶端範例，請參閱[使用傳輸中加密搭配 PHP 和 Memcached](in-transit-encryption.md#in-transit-encryption-connect-php-mc)。

# 使用適用於 .NET 的 ElastiCache 叢集用戶端
<a name="AutoDiscovery.Using.ModifyApp.DotNET"></a>

**注意**  
自 2022 年 5 月起，已淘汰 ElastiCache .NET 叢集用戶端。

適用於 ElastiCache 的 .NET 用戶端為開放原始碼資源，位於 [https://github.com/awslabs/elasticache-cluster-config-net](https://github.com/awslabs/elasticache-cluster-config-net)。

 .NET 應用程式通常會從其組態檔取得組態。以下是範例應用程式組態檔。

```
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <section 
            name="clusterclient" 
            type="Amazon.ElastiCacheCluster.ClusterConfigSettings, Amazon.ElastiCacheCluster" />
    </configSections>

    <clusterclient>
        <!-- the hostname and port values are from step 1 above -->
        <endpoint hostname="mycluster.fnjyzo.cfg.use1.cache.amazonaws.com" port="11211" />
    </clusterclient>
</configuration>
```

以下 C\$1 程式示範如何使用 ElastiCache 叢集用戶端連線到叢集組態端點，然後將資料項目新增到快取。使用自動探索，程式將會連線到叢集內的所有節點，而不會進行其他介入。

```
// *****************
// Sample C# code to show how to integrate with the Amazon ElastiCcache Auto Discovery feature.

using System;

using Amazon.ElastiCacheCluster;

using Enyim.Caching;
using Enyim.Caching.Memcached;

public class DotNetAutoDiscoveryDemo  {

    public static void Main(String[] args)  {
    
        // instantiate a new client.
        ElastiCacheClusterConfig config = new ElastiCacheClusterConfig();
        MemcachedClient memClient = new MemcachedClient(config);
        
        // Store the data for 3600 seconds (1hour) in the cluster. 
        // The client will decide which cache host will store this item.
        memClient.Store(StoreMode.Set, 3600, "This is the data value.");
        
    }  // end Main
    
}  // end class DotNetAutoDiscoverDemo
```

# 手動連線至 Memcached 快取節點
<a name="AutoDiscovery.Manual"></a>

如果您的用戶端程式不使用 Auto Discovery，則可以手動連線到每個 Memcached 快取節點。這是 Memcached 用戶端的預設行為。

您可以從 [AWS管理主控台](https://aws.amazon.com/console/)取得快取節點主機名稱及連接埠號碼的清單。您也可以使用AWS CLI`aws elasticache describe-cache-clusters`命令搭配 `--show-cache-node-info` 參數。

**Example**  
下列 Java 程式碼片段示範如何連線到四節點叢集中的所有節點：  

```
...

ArrayList<String> cacheNodes = new ArrayList<String>(
	Arrays.asList(
	    "mycachecluster.fnjyzo.0001.use1.cache.amazonaws.com:11211",
	    "mycachecluster.fnjyzo.0002.use1.cache.amazonaws.com:11211",
	    "mycachecluster.fnjyzo.0003.use1.cache.amazonaws.com:11211",
	    "mycachecluster.fnjyzo.0004.use1.cache.amazonaws.com:11211"));
	      
MemcachedClient cache = new MemcachedClient(AddrUtil.getAddresses(cacheNodes));

...
```

**重要**  
如果您透過新增或移除節點來擴展或縮減叢集，則需要更新用戶端程式碼中的節點清單。

# 將自動探索新增至 Memcached 用戶端程式庫
<a name="AutoDiscovery.AddingToYourClientLibrary"></a>

Auto Discovery 的組態資訊會以備援方式存放在每個 Memcached 叢集節點中。用戶端應用程式可查詢任何快取節點，並取得叢集內所有節點的組態資訊。

應用程式執行此作業的方式取決於快取引擎版本：
+ 若快取引擎版本為 **1.4.14 或更高版本**，請使用 `config` 命令。
+ 若快取引擎版本**低於 1.4.14**，請使用 `get AmazonElastiCache:cluster` 命令。

這兩個命令的輸出完全相同，並且會在以下的[輸出格式](#AutoDiscovery.AddingToYourClientLibrary.OutputFormat)一節中說明。

## 快取引擎版本 1.4.14 或更新版本
<a name="AutoDiscovery.AddingToYourClientLibrary.1-4-14-plus"></a>

針對 1.4.14 或更高的快取引擎版本，請使用 `config` 命令。此命令已新增到 ElastiCache 的 Memcached ASCII 及二進位通訊協定中，並且已在 ElastiCache 叢集用戶端中實作。若您希望搭配其他用戶端程式庫使用自動探索，該程式庫必須進行擴充以支援 `config` 命令。

**注意**  
以下文件適用於 ASCII 通訊協定。但是，`config` 命令同時支援 ASCII 及二進位。若您希望新增支援使用二進位通訊協定的自動探索功能，請參閱 [ElastiCache 叢集用戶端的原始碼](https://github.com/amazonwebservices/aws-elasticache-cluster-client-memcached-for-java/tree/master/src/main/java/net/spy/memcached/protocol/binary)。

**語法**

`config [sub-command] [key]`

### 選項
<a name="AutoDiscovery.AddingToYourClientLibrary.1-4-14-plus.Options"></a>


| 名稱 | 描述 | 必要 | 
| --- | --- | --- | 
| sub-command |  用來與快取節點互動的子命令。針對自動探索，此子命令為 `get`。  | 是 | 
| key |  鍵名稱，叢集組態會存放在該鍵之下。針對自動探索，此鍵名為 `cluster`。  | 是 | 

若要取得叢集組態資訊，請使用以下命令：

```
config get cluster
```

## 快取引擎 1.4.14 版或更低版本
<a name="AutoDiscovery.AddingToYourClientLibrary.pre-1-4-14"></a>

若要取得叢集組態資訊，請使用以下命令：

```
get AmazonElastiCache:cluster
```

**注意**  
請勿竄改 "AmazonElastiCache:cluster" 鍵，因為這是保存叢集組態資訊的位置。若您覆寫了此鍵，則不正確的用戶端設定可能持續短暫的期間 (不超過 15 秒)，之後 ElastiCache 便會自動並正確地更新組態資訊。

## 輸出格式
<a name="AutoDiscovery.AddingToYourClientLibrary.OutputFormat"></a>

無論您使用 `config get cluster` 或 `get AmazonElastiCache:cluster`，回應都由兩行文字組成：
+ 組態資訊的版本編號。每次從叢集新增或移除節點時，版本編號都會增加 1。
+ 快取節點的清單。清單中的每個節點都會以 *hostname\$1ip-address\$1port* 群組表示，並且每個節點都會以一個空格分隔。

歸位字元和換行字元 (CR \$1 LF) 會出現在每一行的結尾。資料行的結尾包含一個換行字元 (LF)，CR \$1 LF 會新增到該處。組態版本行會以不帶 CR 的 LF 終止。

包含三個節點的叢集將如下所示：

```
configversion\n
hostname|ip-address|port hostname|ip-address|port hostname|ip-address|port\n\r\n
```

每個節點都會同時顯示 CNAME 及私有 IP 地址。CNAME 一律會存在。若私有 IP 地址無法使用，便不會顯示。但是，仍會印出管道字元 "`|`"。

**Example**  
以下是當您查詢組態資訊時，所傳回承載的範例：  

```
CONFIG cluster 0 136\r\n
12\n
myCluster.pc4ldq.0001.use1.cache.amazonaws.com|10.82.235.120|11211 myCluster.pc4ldq.0002.use1.cache.amazonaws.com|10.80.249.27|11211\n\r\n 
END\r\n
```

**注意**  
第二行指出組態資訊至今已經過修改十二次。
在第三行中，節點清單是以主機名稱的字母順序排序。此順序的排列方式可能會跟您目前於用戶端應用程式中使用的順序不同。

# 具有自動探索功能的 ElastiCache 用戶端
<a name="Clients"></a>

叢集用戶端程式可以自動識別並連線至執行 Memcached 引擎的所有叢集節點。

本節討論如何安裝和設定 ElastiCache PHP 和 .NET 用戶端以搭配自動探索使用。

**Topics**
+ [安裝及編譯叢集用戶端](Appendix.InstallingClients.md)
+ [設定 ElastiCache 用戶端](ClientConfig.md)

# 安裝及編譯叢集用戶端
<a name="Appendix.InstallingClients"></a>

本節介紹安裝、設定及編譯 PHP 和 .NET Amazon ElastiCache 自動探索叢集用戶端的內容。

**Topics**
+ [安裝適用於 .NET 的 ElastiCache 叢集用戶端](Appendix.DotNETAutoDiscoverySetup.md)
+ [安裝適用於 PHP 的 ElastiCache 叢集用戶端](Appendix.PHPAutoDiscoverySetup.md)
+ [編譯適用於 PHP 的 ElastiCache 叢集用戶端原始碼](Appendix.PHPAutoDiscoveryCompile.md)

# 安裝適用於 .NET 的 ElastiCache 叢集用戶端
<a name="Appendix.DotNETAutoDiscoverySetup"></a>

適用於 ElastiCache .NET 叢集用戶端的程式碼為開放原始碼，如有需要請前往 [https://github.com/awslabs/elasticache-cluster-config-net](https://github.com/awslabs/elasticache-cluster-config-net)。

本節說明如何在 Amazon EC2 執行個體上安裝、更新及移除適用於 ElastiCache 叢集用戶端的 .NET 元件。如需自動探索的詳細資訊，請參閱[自動識別叢集中的節點 (Memcached)](AutoDiscovery.md)。如需使用用戶端的範例 .NET 程式碼，請參閱[使用適用於 .NET 的 ElastiCache 叢集用戶端](AutoDiscovery.Using.ModifyApp.DotNET.md)。

**Topics**
+ [安裝 .NET](#Appendix.DotNETAutoDiscoverySetup.DotNET)
+ [下載適用於 ElastiCache 的 ElastiCache .NET 叢集用戶端](#Appendix.DotNETAutoDiscoverySetup.Downloading)
+ [使用 NuGet 安裝 AWS 組件](#Appendix.DotNETAutoDiscoverySetup.Installing)

## 安裝 .NET
<a name="Appendix.DotNETAutoDiscoverySetup.DotNET"></a>

您必須安裝 .NET 3.5 或更新版本，才能使用適用於 ElastiCache 的 AWS .NET 開發套件。如果您未安裝 .NET 3.5 或更新版本，您可以從 [http://www.microsoft.com/net](http://www.microsoft.com/net) 下載及安裝最新版本。

## 下載適用於 ElastiCache 的 ElastiCache .NET 叢集用戶端
<a name="Appendix.DotNETAutoDiscoverySetup.Downloading"></a>

**下載 ElastiCache .NET 叢集用戶端**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/) 的 ElastiCache 主控台。

1. 在導覽窗格上，按一下 **ElastiCache Cluster Client (ElastiCache 叢集用戶端)**。

1. 在 **Download ElastiCache Memcached Cluster Client (下載 ElastiCache Memcached 叢集用戶端)** 清單中，選取 **.NET**，然後按一下 **Download (下載)。**

## 使用 NuGet 安裝 AWS 組件
<a name="Appendix.DotNETAutoDiscoverySetup.Installing"></a>

NuGet 是適用於 .NET 平台的套件管理系統。NuGet 知道組件的依存性，並會自動安裝所需的檔案。NuGet 安裝的組件會與您的解決方案一同存放，而非位於一個中央位置 (例如 `Program Files`)。這可讓您安裝應用程式的特定組件版本，而不會產生相容性問題。

### 安裝 NuGet
<a name="Appendix.DotNETAutoDiscoverySetup.Installing.NuGet"></a>

NuGet 可從 MSDN 上的安裝資源庫安裝。請參閱 [https://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c](https://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c)。若您使用 Visual Studio 2010 或更新版本，NuGet 便已自動安裝。

您可以從 **Solution Explorer (方案總管)** 或 **Package Manager Console (套件管理員主控台)** 使用 NuGet。

### 從方案總管使用 NuGet
<a name="Appendix.DotNETAutoDiscoverySetup.NuGet.SolutionExplorer"></a>

**在 Visual Studio 2010 中從方案總管使用 NuGet**

1. 從 **Tools (工具)** 選單，選取 **Library Package Manager (程式庫套件管理員)**。

1. 按一下 **Package Manager Console (套件管理員主控台)**。

**在 Visual Studio 2012 或 Visual Studio 2013 中從方案總管使用 NuGet**

1. 從 **Tools (工具)** 選單，選取 **NuGet Package Manager (NuGet 套件管理員)**。

1. 按一下 **Package Manager Console (套件管理員主控台)**。

從命令列，您可以使用 `Install-Package` 安裝組件，如下所示。

```
Install-Package Amazon.ElastiCacheCluster
```

若要查看透過 NuGet 提供的每個套件的頁面，例如 AWS SDK 和 AWS.Extensions 組件，請參閱 NuGet 網站 https：//[http://www.nuget.org](http://www.nuget.org)。每個套件的頁面都包含一個使用主控台安裝套件的範例命令列，以及一份可透過 NuGet 取得的先前版本套件清單。

如需 **Package Manager Console (套件管理員主控台)** 命令的詳細資訊，請參閱 [http://nuget.codeplex.com/wikipage?title=Package%20Manager%20Console%20Command%20Reference%20%28v1.3%29](http://nuget.codeplex.com/wikipage?title=Package%20Manager%20Console%20Command%20Reference%20%28v1.3%29)。

# 安裝適用於 PHP 的 ElastiCache 叢集用戶端
<a name="Appendix.PHPAutoDiscoverySetup"></a>

本節說明如何在 Amazon EC2 執行個體上安裝、更新及移除適用於 ElastiCache 叢集用戶端的 PHP 元件。如需自動探索的詳細資訊，請參閱[自動識別叢集中的節點 (Memcached)](AutoDiscovery.md)。如需要使用用戶端的範例 PHP 程式碼，請參閱[使用適用於 PHP 的 ElastiCache 叢集用戶端](AutoDiscovery.Using.ModifyApp.PHP.md)。

**Topics**
+ [下載安裝套件](Appendix.PHPAutoDiscoverySetup.Downloading.md)
+ [針對已安裝 *php-memcached* 延伸的使用者](#Appendix.PHPAutoDiscoverySetup.InstallingExisting)
+ [新使用者的安裝步驟](Appendix.PHPAutoDiscoverySetup.Installing.md)
+ [移除 PHP 叢集用戶端](Appendix.PHPAutoDiscoverySetup.Removing.md)

# 下載安裝套件
<a name="Appendix.PHPAutoDiscoverySetup.Downloading"></a>

為了確保所使用之適用於 PHP 的 ElastiCache 叢集用戶端是正確版本，您必須知道 Amazon EC2 執行個體上安裝的 PHP 版本。您還必須知道 Amazon EC2 執行個體是在 64 位元還是 32 位元版本的 Linux 上執行。

**判斷 Amazon EC2 執行個體上安裝的 PHP 版本**
+ 在命令提示中，執行下列命令：

  ```
  php -v
  ```

  PHP 版本將顯示在輸出中，如下列範例所示：

  ```
  PHP 5.4.10 (cli) (built: Jan 11 2013 14:48:57) 
  Copyright (c) 1997-2012 The PHP Group
  Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
  ```
**注意**  
如果 PHP 與 Memcached 版本不相容，您將收到類似下列內容的錯誤訊息：  

  ```
  PHP Warning: PHP Startup: memcached: Unable to initialize module
  Module compiled with module API=20100525
  PHP compiled with module API=20131226
  These options need to match
  in Unknown on line 0
  ```
如果發生這種情況，您需要從來源碼編譯模組。如需詳細資訊，請參閱[編譯適用於 PHP 的 ElastiCache 叢集用戶端原始碼](Appendix.PHPAutoDiscoveryCompile.md)。

**判斷 Amazon EC2 AMI 架構 (64 位元或 32 位元)**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)：// 開啟 Amazon EC2 主控台。

1. 在 **Instances (執行個體)** 清單中，按一下 Amazon EC2 執行個體。

1. 在 **Description (描述)** 標籤中，查看 **AMI: (AMI：)** 欄位。64 位元執行個體應該使用 `x86_64` 做為描述的一部分；若為 32 位元執行個體，請在此欄位中尋找 `i386` 或 `i686`。

您現在可以下載 ElastiCache 叢集用戶端。

**下載適用於 PHP 的 ElastiCache 叢集用戶端**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/) 的 ElastiCache 主控台。

1. 從 ElastiCache 主控台選擇 **ElastiCache 叢集用戶端**。

1. 從 **Download ElastiCache Memcached Cluster Client (下載 ElastiCache Memcached 叢集用戶端**) 清單中，選擇符合您 PHP 版本和 AMI 架構的 ElastiCache 叢集用戶端，然後選擇 **Download (下載)** 按鈕。

## 針對已安裝 *php-memcached* 延伸的使用者
<a name="Appendix.PHPAutoDiscoverySetup.InstallingExisting"></a>

**更新 `php-memcached` 安裝**

1. 移除先前安裝之適用於 PHP 的 Memcached 延伸，如[移除 PHP 叢集用戶端](Appendix.PHPAutoDiscoverySetup.Removing.md)主題所述。

1. 安裝新的 ElastiCache `php-memcached` 延伸，如先前「[新使用者的安裝步驟](Appendix.PHPAutoDiscoverySetup.Installing.md)」中所述。

# 新使用者的安裝步驟
<a name="Appendix.PHPAutoDiscoverySetup.Installing"></a>

**Topics**
+ [為新使用者安裝 PHP 7.x](#Appendix.PHPAutoDiscoverySetup.Installing.PHP7x)
+ [為新使用者安裝 PHP 5.x](#Appendix.PHPAutoDiscoverySetup.Installing.PHP5x)

## 為新使用者安裝 PHP 7.x
<a name="Appendix.PHPAutoDiscoverySetup.Installing.PHP7x"></a>

**Topics**
+ [在 Ubuntu 伺服器 14.04 LTS AMI (64 位元和 32 位元） 上安裝 PHP 7](#Appendix.PHPAutoDiscoverySetup.Installing.PHP7x.Ubuntu)
+ [在 Amazon Linux 201609 AMI 上安裝 PHP 7](#Appendix.PHPAutoDiscoverySetup.Installing.PHP7x.AmznLinux)
+ [在 SUSE Linux AMI 上安裝 PHP 7](#Appendix.PHPAutoDiscoverySetup.Installing.PHP7x.SuseLinux)

### 在 Ubuntu 伺服器 14.04 LTS AMI (64 位元和 32 位元） 上安裝 PHP 7
<a name="Appendix.PHPAutoDiscoverySetup.Installing.PHP7x.Ubuntu"></a>

1. 從 AMI 啟動新的執行個體。

1. 執行下列命令：

   ```
   sudo apt-get update
   sudo apt-get install gcc g++
   ```

1. 安裝 PHP 7。

   ```
   sudo yum install php70
   ```

1. 下載 Amazon ElastiCache 叢集用戶端。

   ```
   wget https://elasticache-downloads.s3.amazonaws.com/ClusterClient/PHP-7.0/latest-64bit
   ```

1. 將 `latest-64bit` 解壓縮。

   ```
   tar -zxvf latest-64bit
   ```

1. 使用 root 許可，將解壓縮的成品檔案 `amazon-elasticache-cluster-client.so` 複製到 `/usr/lib/php/20151012`。

   ```
   sudo mv artifact/amazon-elasticache-cluster-client.so /usr/lib/php/20151012
   ```

1. 將 `extension=amazon-elasticache-cluster-client.so` 這一行插入到 `/etc/php/7.0/cli/php.ini` 檔案。

   ```
   echo "extension=amazon-elasticache-cluster-client.so" | sudo tee --append /etc/php/7.0/cli/php.ini
   ```

1. 啟動或重新啟動您的 Apache 伺服器。

   ```
   sudo /etc/init.d/httpd start
   ```

 

### 在 Amazon Linux 201609 AMI 上安裝 PHP 7
<a name="Appendix.PHPAutoDiscoverySetup.Installing.PHP7x.AmznLinux"></a>

1. 從 AMI 啟動新的執行個體。

1. 執行以下命令：

   ```
   sudo yum install gcc-c++
   ```

1. 安裝 PHP 7。

   ```
   sudo yum install php70
   ```

1. 下載 Amazon ElastiCache 叢集用戶端。

   ```
   wget https://elasticache-downloads.s3.amazonaws.com/ClusterClient/PHP-7.0/latest-64bit
   ```

1. 將 `latest-64bit` 解壓縮。

   ```
   tar -zxvf latest-64bit
   ```

1. 使用 root 許可，將解壓縮的成品檔案 `amazon-elasticache-cluster-client.so` 複製到 `/usr/lib64/php/7.0/modules/`。

   ```
   sudo mv artifact/amazon-elasticache-cluster-client.so /usr/lib64/php/7.0/modules/
   ```

1. 建立 `50-memcached.ini` 檔案。

   ```
   echo "extension=amazon-elasticache-cluster-client.so" | sudo tee --append /etc/php-7.0.d/50-memcached.ini
   ```

1. 啟動或重新啟動您的 Apache 伺服器。

   ```
   sudo /etc/init.d/httpd start
   ```

 

### 在 SUSE Linux AMI 上安裝 PHP 7
<a name="Appendix.PHPAutoDiscoverySetup.Installing.PHP7x.SuseLinux"></a>

1. 從 AMI 啟動新的執行個體。

1. 執行以下命令：

   ```
   sudo zypper install gcc
   ```

1. 安裝 PHP 7。

   ```
   sudo yum install php70
   ```

1. 下載 Amazon ElastiCache 叢集用戶端。

   ```
   wget https://elasticache-downloads.s3.amazonaws.com/ClusterClient/PHP-7.0/latest-64bit
   ```

1. 將 `latest-64bit` 解壓縮。

   ```
   tar -zxvf latest-64bit
   ```

1. 使用 root 許可，將解壓縮的成品檔案 `amazon-elasticache-cluster-client.so` 複製到 `/usr/lib64/php7/extensions/`。

   ```
   sudo mv artifact/amazon-elasticache-cluster-client.so /usr/lib64/php7/extensions/
   ```

1. 將 `extension=amazon-elasticache-cluster-client.so` 這一行插入到 `/etc/php7/cli/php.ini` 檔案。

   ```
   echo "extension=amazon-elasticache-cluster-client.so" | sudo tee --append /etc/php7/cli/php.ini
   ```

1. 啟動或重新啟動您的 Apache 伺服器。

   ```
   sudo /etc/init.d/httpd start
   ```

 

## 為新使用者安裝 PHP 5.x
<a name="Appendix.PHPAutoDiscoverySetup.Installing.PHP5x"></a>

**Topics**
+ [在 Amazon Linux AMI 2014.03 (64 位元及 32 位元) 上安裝 PHP 5](#Appendix.PHPAutoDiscoverySetup.Installing.PHP5x.AmznLinux)
+ [在 Red Hat Enterprise Linux 7.0 AMI (64 位元及 32 位元) 上安裝 PHP 5](#Appendix.PHPAutoDiscoverySetup.Installing.PHP5x.RHEL)
+ [在 Ubuntu Server 14.04 LTS AMI (64 位元及 32 位元) 上安裝 PHP 5](#Appendix.PHPAutoDiscoverySetup.Installing.PHP5x.Ubuntu)
+ [為 SUSE Linux Enterprise Server 11 AMI (64 位元或 32 位元) 安裝 PHP 5](#Appendix.PHPAutoDiscoverySetup.Installing.PHP5x.SuseLinux)
+ [其他 Linux 發行版本](#Appendix.PHPAutoDiscoverySetup.Installing.PHP5x.Other)

### 在 Amazon Linux AMI 2014.03 (64 位元及 32 位元) 上安裝 PHP 5
<a name="Appendix.PHPAutoDiscoverySetup.Installing.PHP5x.AmznLinux"></a>

1. 啟動 Amazon Linux 執行個體 (64 位元或 32 位元)，並登入其中。

1. 安裝 PHP 相依性：

   ```
   sudo yum install gcc-c++ php php-pear
   ```

1. 下載適用於您 Amazon EC2 執行個體和 PHP 版本的正確 `php-memcached` 套件。如需詳細資訊，請參閱[下載安裝套件](Appendix.PHPAutoDiscoverySetup.Downloading.md)。

1. 安裝 `php-memcached`。URI 應該是安裝套件的下載路徑：

   ```
   sudo pecl install <package download path>
   ```

   以下是 PHP 5.4、64 位元 Linux 的範例安裝命令。在此範例中，將 *X.Y.Z* 取代為實際版本號碼：

   ```
   sudo pecl install /home/AmazonElastiCacheClusterClient-X.Y.Z-PHP54-64bit.tgz
   ```
**注意**  
務必使用安裝成品的最新版本。

1. 使用 root/sudo 許可，在 `/etc/php.d` 目錄中新增名為 `memcached.ini` 的新檔案，並在該檔案中插入 "extension=amazon-elasticache-cluster-client.so"：

   ```
   echo "extension=amazon-elasticache-cluster-client.so" | sudo tee --append /etc/php.d/memcached.ini
   ```

1. 啟動或重新啟動您的 Apache 伺服器。

   ```
   sudo /etc/init.d/httpd start
   ```

 

### 在 Red Hat Enterprise Linux 7.0 AMI (64 位元及 32 位元) 上安裝 PHP 5
<a name="Appendix.PHPAutoDiscoverySetup.Installing.PHP5x.RHEL"></a>

1. 啟動 Red Hat Enterprise Linux 執行個體 (64 位元或 32 位元)，並登入其中。

1. 安裝 PHP 相依性：

   ```
   sudo yum install gcc-c++ php php-pear
   ```

1. 下載適用於您 Amazon EC2 執行個體和 PHP 版本的正確 `php-memcached` 套件。如需詳細資訊，請參閱[下載安裝套件](Appendix.PHPAutoDiscoverySetup.Downloading.md)。

1. 安裝 `php-memcached`。URI 應該是安裝套件的下載路徑：

   ```
   sudo pecl install <package download path>
   ```

1. 使用 root/sudo 許可，在 `/etc/php.d` 目錄中新增名為 `memcached.ini` 的新檔案，並在該檔案中插入 `extension=amazon-elasticache-cluster-client.so`。

   ```
   echo "extension=amazon-elasticache-cluster-client.so" | sudo tee --append /etc/php.d/memcached.ini
   ```

1. 啟動或重新啟動您的 Apache 伺服器。

   ```
   sudo /etc/init.d/httpd start
   ```

 

### 在 Ubuntu Server 14.04 LTS AMI (64 位元及 32 位元) 上安裝 PHP 5
<a name="Appendix.PHPAutoDiscoverySetup.Installing.PHP5x.Ubuntu"></a>

1. 啟動 Ubuntu Linux 執行個體 (64 位元或 32 位元)，並登入其中。

1. 安裝 PHP 相依性：

   ```
   sudo apt-get update 
   sudo apt-get install gcc g++ php5 php-pear
   ```

1. 下載適用於您 Amazon EC2 執行個體和 PHP 版本的正確 `php-memcached` 套件。如需詳細資訊，請參閱[下載安裝套件](Appendix.PHPAutoDiscoverySetup.Downloading.md)。

1. 安裝 `php-memcached`。URI 應該是安裝套件的下載路徑。

   ```
   sudo pecl install <package download path>
   ```
**注意**  
此安裝步驟會將建置成品 `amazon-elasticache-cluster-client.so` 安裝到 `/usr/lib/php5/20121212*` 目錄。驗證組建成品的絕對路徑，因為您在下一個步驟中需要它。

   如果上一個命令無法運作，您需要從下載的 `*.tgz` 檔案以手動方式解壓縮 PHP 用戶端成品 `amazon-elasticache-cluster-client.so`，並將其複製到 `/usr/lib/php5/20121212*` 目錄。

   ```
   tar -xvf <package download path>
   cp amazon-elasticache-cluster-client.so /usr/lib/php5/20121212/
   ```

1. 使用 root/sudo 許可，在 `/etc/php5/cli/conf.d` 目錄中新增名為 `memcached.ini` 的新檔案，並在該檔案中插入 "extension=<amazon-elasticache-cluster-client.so 的絕對路徑>"。

   ```
   echo "extension=<absolute path to amazon-elasticache-cluster-client.so>" | sudo tee --append /etc/php5/cli/conf.d/memcached.ini
   ```

1. 啟動或重新啟動您的 Apache 伺服器。

   ```
   sudo /etc/init.d/httpd start
   ```

 

### 為 SUSE Linux Enterprise Server 11 AMI (64 位元或 32 位元) 安裝 PHP 5
<a name="Appendix.PHPAutoDiscoverySetup.Installing.PHP5x.SuseLinux"></a>

1. 啟動 SUSE Linux 執行個體 (64 位元或 32 位元)，並登入其中。

1. 安裝 PHP 相依性：

   ```
   sudo zypper install gcc php53-devel
   ```

1. 下載適用於您 Amazon EC2 執行個體和 PHP 版本的正確 `php-memcached` 套件。如需詳細資訊，請參閱[下載安裝套件](Appendix.PHPAutoDiscoverySetup.Downloading.md)。

1. 安裝 `php-memcached`。URI 應該是安裝套件的下載路徑。

   ```
   sudo pecl install <package download path>
   ```

1. 使用 root/sudo 許可，在 `/etc/php5/conf.d` 目錄中新增名為 `memcached.ini` 的新檔案，並在該檔案中插入 **extension=`amazon-elasticache-cluster-client.so`**。

   ```
   echo "extension=amazon-elasticache-cluster-client.so" | sudo tee --append /etc/php5/conf.d/memcached.ini
   ```

1. 啟動或重新啟動您的 Apache 伺服器。

   ```
   sudo /etc/init.d/httpd start
   ```

**注意**  
如果步驟 5 對先前的任何平台沒有作用，請驗證 `amazon-elasticache-cluster-client.so` 的安裝路徑。同時，請指定延伸中二進位檔的完整路徑。此外，請驗證使用中的 PHP 是支援的版本。我們支援 5.3 版到 5.5 版。

 

### 其他 Linux 發行版本
<a name="Appendix.PHPAutoDiscoverySetup.Installing.PHP5x.Other"></a>

在某些系統上 (特別是 CentOS7 及 Red Hat Enterprise Linux (RHEL) 7.1)，`libsasl2.so.3` 已取代 `libsasl2.so.2`。在這些系統上，當您載入 ElastiCache 叢集用戶端時，它會嘗試尋找並載入 `libsasl2.so.2`，但這項嘗試失敗。若要解決此問題，請建立指向 `libsasl2.so.3` 的符號連結，以便在用戶端嘗試載入 libsasl2.so.2 時，將其重新導向至 `libsasl2.so.3`。下列程式碼會建立此符號連結。

```
cd /usr/lib64
sudo ln libsasl2.so.3 libsasl2.so.2
```

# 移除 PHP 叢集用戶端
<a name="Appendix.PHPAutoDiscoverySetup.Removing"></a>

**Topics**
+ [移除舊版的 PHP 7](#Appendix.PHPAutoDiscoverySetup.Removing.PHP7x)
+ [移除舊版的 PHP 5](#Appendix.PHPAutoDiscoverySetup.Removing.PHP5x)

## 移除舊版的 PHP 7
<a name="Appendix.PHPAutoDiscoverySetup.Removing.PHP7x"></a>

**移除舊版的 PHP 7**

1. 從適當的 PHP lib 目錄中移除 `amazon-elasticache-cluster-client.so` 檔案，如之前在安裝指示中所述。請參閱[針對已安裝 *php-memcached* 延伸的使用者](Appendix.PHPAutoDiscoverySetup.md#Appendix.PHPAutoDiscoverySetup.InstallingExisting)中您的安裝所適用章節。

1. 從 `php.ini` 檔案中移除 `extension=amazon-elasticache-cluster-client.so` 這一行。

1. 啟動或重新啟動您的 Apache 伺服器。

   ```
   sudo /etc/init.d/httpd start
   ```

## 移除舊版的 PHP 5
<a name="Appendix.PHPAutoDiscoverySetup.Removing.PHP5x"></a>

**移除舊版的 PHP 5**

1. 移除 `php-memcached` 延伸：

   ```
   sudo pecl uninstall __uri/AmazonElastiCacheClusterClient
   ```

1.  移除適當目錄中所新增的 `memcached.ini` 檔案，如先前安裝步驟中所述。

# 編譯適用於 PHP 的 ElastiCache 叢集用戶端原始碼
<a name="Appendix.PHPAutoDiscoveryCompile"></a>

本節說明如何取得及編譯適用於 PHP 的 ElastiCache 叢集用戶端之原始碼。

您需要從 GitHub 提取兩個套件並進行編譯：[aws-elasticache-cluster-client-libmemcached](https://github.com/awslabs/aws-elasticache-cluster-client-libmemcached) 及 [aws-elasticache-cluster-client-memcached-for-php](https://github.com/awslabs/aws-elasticache-cluster-client-memcached-for-php)。

**Topics**
+ [編譯 libmemcached 程式庫](#Appendix.PHPAutoDiscoveryCompile.Libmemcached)
+ [編譯適用於 PHP 的 ElastiCache Memcached 自動探索用戶端](#Appendix.PHPAutoDiscoveryCompile.Client)

## 編譯 libmemcached 程式庫
<a name="Appendix.PHPAutoDiscoveryCompile.Libmemcached"></a>

**編譯 aws-elasticache-cluster-client-libmemcached 程式庫**

1. 啟動 Amazon EC2 執行個體。

1. 安裝程式庫的依存項目。
   + Amazon Linux 201509 AMI

     ```
     sudo yum install gcc gcc-c++ autoconf libevent-devel
     ```
   + Ubuntu 14.04 AMI

     ```
     sudo apt-get update
     sudo apt-get install libevent-dev gcc g++ make autoconf libsasl2-dev
     ```

1. 提取儲存庫並編譯程式碼。

   ```
   Download and install [ https://github.com/awslabs/aws-elasticache-cluster-client-libmemcached/archive/v1.0.18.tar.gz]( https://github.com/awslabs/aws-elasticache-cluster-client-libmemcached/archive/v1.0.18.tar.gz)
   ```

## 編譯適用於 PHP 的 ElastiCache Memcached 自動探索用戶端
<a name="Appendix.PHPAutoDiscoveryCompile.Client"></a>

以下各節說明如何編譯 ElastiCache Memcached 自動探索用戶端

**Topics**
+ [編譯適用於 PHP 7 的 ElastiCache Memcached 用戶端](#Appendix.PHPAudiscoveryCompile.Client.PHP7)
+ [編譯適用於 PHP 5 的 ElastiCache Memcached 用戶端](#Appendix.PHPAudiscoveryCompile.PHP5)

### 編譯適用於 PHP 7 的 ElastiCache Memcached 用戶端
<a name="Appendix.PHPAudiscoveryCompile.Client.PHP7"></a>

在程式碼目錄下執行以下命令組。

```
git clone https://github.com/awslabs/aws-elasticache-cluster-client-memcached-for-php.git
cd aws-elasticache-cluster-client-memcached-for-php 
git checkout php7
sudo yum install php70-devel
phpize
./configure --with-libmemcached-dir=<libmemcached-install-directory> --disable-memcached-sasl
make
make install
```

**注意**  
您可以將 libmemcached 程式庫靜態連結至 PHP 二進位檔，讓它可以在各種 Linux 平台間移植。若要執行此作業，請在 `make` 前執行以下命令：  

```
sed -i "s#-lmemcached#<libmemcached-install-directory>/lib/libmemcached.a -lcrypt -lpthread -lm -lstdc++ -lsasl2#" Makefile 
```

### 編譯適用於 PHP 5 的 ElastiCache Memcached 用戶端
<a name="Appendix.PHPAudiscoveryCompile.PHP5"></a>

透過在 `aws-elasticache-cluster-client-memcached-for-php/` 資料夾下執行以下命令，來編譯 `aws-elasticache-cluster-client-memcached-for-php`。

```
git clone https://github.com/awslabs/aws-elasticache-cluster-client-memcached-for-php.git
cd aws-elasticache-cluster-client-memcached-for-php 
sudo yum install zlib-devel
phpize
./configure --with-libmemcached-dir=<libmemcached-install-directory>
make
make install
```

# 設定 ElastiCache 用戶端
<a name="ClientConfig"></a>

ElastiCache 叢集符合 Valkey、Memcached 和 Redis OSS 的通訊協定。您目前與現有環境搭配使用的程式碼、應用程式和最熱門的工具，將能順暢地與服務搭配使用。

本節討論連線到 ElastiCache 中快取節點的具體考量事項。

**Topics**
+ [受限制的命令](ClientConfig.RestrictedCommands.md)
+ [尋找節點端點及連接埠號碼](ClientConfig.FindingEndpointsAndPorts.md)
+ [進行連線以使用自動探索](ClientConfig.AutoDiscovery.md)
+ [連線至 Valkey 或 Redis OSS 叢集中的節點](ClientConfig.ReplicationGroup.md)
+ [DNS 名稱與基礎 IP](ClientConfig.DNS.md)

# 受限制的命令
<a name="ClientConfig.RestrictedCommands"></a>

為了提供受管服務體驗，ElastiCache 會限制存取某些需要進階權限的快取引擎特定命令。對於執行 Redis OSS 的叢集，無法使用下列命令：
+ `bgrewriteaof`
+ `bgsave`
+ `config`
+ `debug`
+ `migrate`
+ `replicaof`
+ `save`
+ `slaveof`
+ `shutdown`
+ `sync`

# 尋找節點端點及連接埠號碼
<a name="ClientConfig.FindingEndpointsAndPorts"></a>

若要連線到快取節點，您的應用程式需要知道該節點的端點及連接埠號碼。

## 尋找節點端點及連接埠號碼 (主控台)
<a name="ClientConfig.FindingEndpointsAndPorts.CON"></a>

 **判斷節點端點和連接埠號碼** 

1. 登入 [Amazon ElastiCache 管理主控台](https://aws.amazon.com/elasticache)，並選擇在您叢集上執行的引擎。

   接著會出現執行所選擇引擎的所有叢集清單。

1. 在您執行的引擎和組態下繼續。

1. 選擇您有興趣的叢集名稱。

1. 尋找您有興趣節點的 **Port (連接埠)** 及 **Endpoint (端點)** 欄。

## 尋找快取節點端點及連接埠號碼 (AWS CLI)
<a name="ClientConfig.FindingEndpointsAndPorts.CLI"></a>

若要判斷快取節點端點和連接埠號碼，請搭配 `--show-cache-node-info` 參數使用 `describe-cache-clusters` 命令。

```
aws elasticache describe-cache-clusters --show-cache-node-info 
```

完整 DNS 名稱和連接埠號碼會位於輸出的 Endpoint (端點) 區段。

## 尋找快取節點端點及連接埠號碼 (ElastiCache API)
<a name="ClientConfig.FindingEndpointsAndPorts.API"></a>

若要判斷快取節點端點和連接埠號碼，請搭配 `ShowCacheNodeInfo=true` 參數使用 `DescribeCacheClusters` 動作。

**Example**  

```
 1. https://elasticache.us-west-2.amazonaws.com /
 2.     ?Action=DescribeCacheClusters
 3.     &ShowCacheNodeInfo=true
 4.     &SignatureVersion=4
 5.     &SignatureMethod=HmacSHA256
 6.     &Timestamp=20140421T220302Z
 7.     &Version=2014-09-30   
 8.     &X-Amz-Algorithm=&AWS;4-HMAC-SHA256
 9.     &X-Amz-Credential=<credential>
10.     &X-Amz-Date=20140421T220302Z
11.     &X-Amz-Expires=20140421T220302Z
12.     &X-Amz-Signature=<signature>
13.     &X-Amz-SignedHeaders=Host
```

# 進行連線以使用自動探索
<a name="ClientConfig.AutoDiscovery"></a>

若您的應用程式使用自動探索，您只需要知道叢集的組態端點，而無須知道每個快取節點的個別端點。如需詳細資訊，請參閱[自動識別叢集中的節點 (Memcached)](AutoDiscovery.md)。

**注意**  
目前，Auto Discovery 僅適用於執行 Memcached 的叢集。

# 連線至 Valkey 或 Redis OSS 叢集中的節點
<a name="ClientConfig.ReplicationGroup"></a>

**注意**  
目前，支援複寫和僅供讀取複本的叢集 (API/CLI：複寫群組） 僅支援執行 Valkey 或 Redis OSS 的叢集。

針對叢集，ElastiCache 提供主控台、CLI 及 API 界面來取得個別節點的連線資訊。

針對唯讀活動，應用程式可連線到叢集中的任何節點。不過，對於寫入活動，我們建議您的應用程式連接到叢集的主要端點 (Valkey 或 Redis OSS （停用叢集模式）) 或組態端點 (Valkey 或 Redis OSS （啟用叢集模式）)，而不是直接連接到節點。這可確保您的應用程式總能找到正確的節點，即使您決定透過將僅供讀取複本提升到主要角色來重新設定叢集也一樣。

## 連線到複寫群組中的叢集 (主控台)
<a name="ClientConfig.ReplicationGroup.CON"></a>

**判斷端點和連接埠號碼**
+ 請參閱主題：[尋找 Valkey 或 Redis OSS （停用叢集模式） 叢集的端點 （主控台）](Endpoints.md#Endpoints.Find.Redis)。

## 連線到複寫群組中的叢集 (AWS CLI)
<a name="ClientConfig.ReplicationGroup.CLI"></a>

 **判斷快取節點端點和連接埠號碼**

搭配您複寫群組的名稱，使用 `describe-replication-groups` 命令：

```
aws elasticache describe-replication-groups redis2x2
```

此命令應該產生類似下列的輸出：

```
{
    "ReplicationGroups": [
        {
            "Status": "available", 
            "Description": "2 shards, 2 nodes (1 + 1 replica)", 
            "NodeGroups": [
                {
                    "Status": "available", 
                    "Slots": "0-8191", 
                    "NodeGroupId": "0001", 
                    "NodeGroupMembers": [
                        {
                            "PreferredAvailabilityZone": "us-west-2c", 
                            "CacheNodeId": "0001", 
                            "CacheClusterId": "redis2x2-0001-001"
                        }, 
                        {
                            "PreferredAvailabilityZone": "us-west-2a", 
                            "CacheNodeId": "0001", 
                            "CacheClusterId": "redis2x2-0001-002"
                        }
                    ]
                }, 
                {
                    "Status": "available", 
                    "Slots": "8192-16383", 
                    "NodeGroupId": "0002", 
                    "NodeGroupMembers": [
                        {
                            "PreferredAvailabilityZone": "us-west-2b", 
                            "CacheNodeId": "0001", 
                            "CacheClusterId": "redis2x2-0002-001"
                        }, 
                        {
                            "PreferredAvailabilityZone": "us-west-2a", 
                            "CacheNodeId": "0001", 
                            "CacheClusterId": "redis2x2-0002-002"
                        }
                    ]
                }
            ], 
            "ConfigurationEndpoint": {
                "Port": 6379, 
                "Address": "redis2x2.9dcv5r.clustercfg.usw2.cache.amazonaws.com"
            }, 
            "ClusterEnabled": true, 
            "ReplicationGroupId": "redis2x2", 
            "SnapshotRetentionLimit": 1, 
            "AutomaticFailover": "enabled", 
            "SnapshotWindow": "13:00-14:00", 
            "MemberClusters": [
                "redis2x2-0001-001", 
                "redis2x2-0001-002", 
                "redis2x2-0002-001", 
                "redis2x2-0002-002"
            ], 
            "CacheNodeType": "cache.m3.medium", 
            "PendingModifiedValues": {}
        }
    ]
}
```

## 連線到複寫群組中的叢集 (ElastiCache API)
<a name="ClientConfig.ReplicationGroup.API"></a>

 **判斷快取節點端點和連接埠號碼** 

使用下列參數呼叫 `DescribeReplicationGroups`：

`ReplicationGroupId` = 您複寫群組的名稱。

**Example**  

```
 1. https://elasticache.us-west-2.amazonaws.com /
 2.     ?Action=DescribeCacheClusters
 3.     &ReplicationGroupId=repgroup01
 4.     &Version=2014-09-30   
 5.     &SignatureVersion=4
 6.     &SignatureMethod=HmacSHA256
 7.     &Timestamp=20140421T220302Z
 8.     &X-Amz-Algorithm=&AWS;4-HMAC-SHA256
 9.     &X-Amz-Date=20140421T220302Z
10.     &X-Amz-SignedHeaders=Host
11.     &X-Amz-Expires=20140421T220302Z
12.     &X-Amz-Credential=<credential>
13.     &X-Amz-Signature=<signature>
```

# DNS 名稱與基礎 IP
<a name="ClientConfig.DNS"></a>

用戶端會維持一份伺服器清單，其中包含保有快取資料的伺服器地址及連接埠。使用 ElastiCache 時，DescribeCacheClusters API (或 describe-cache-clusters 命令列公用程式) 會傳回可用於伺服器清單的完整 DNS 項目和連接埠號碼。

**重要**  
將用戶端應用程式設為在嘗試連線到快取節點端點時頻繁解析快取節點的 DNS 名稱很重要。

ElastiCache 可確保快取節點的 DNS 名稱在故障時復原快取節點時保持不變。

根據預設，大多數的用戶端程式庫都支援持久性快取節點連線。建議使用 ElastiCache 時使用持久性快取節點連線。用戶端的 DNS 快取可能會在多個位置發生，包括用戶端程式庫、語言執行時間，或是用戶端作業系統。建議您檢閱每一個 layer 的應用程式組態，確保為您的快取節點頻繁解析 IP 地址。

# ElastiCache 中的資料分層
<a name="data-tiering"></a>

構成複寫群組並使用 r6gd 系列節點類型的 ElastiCache for Valkey 或 Redis OSS 叢集，其資料會在記憶體和本機 SSD （固態硬碟） 儲存體之間分層。資料分層除了在記憶體中存放資料之外，還在每個叢集節點中使用低成本固態硬碟 (SSDs)，為 Valkey 或 Redis OSS 工作負載提供新的價格效能選項。非常適合定期存取高達 20% 的整體資料集的工作負載，以及在存取 SSD 資料時可容忍額外延遲的應用程式。

在具有資料分層的 ElastiCache 叢集上，ElastiCache 會監控其存放的每個項目的上次存取時間。當可用記憶體 (DRAM) 完全耗盡時，ElastiCache 會使用最近使用的 (LRU) 演算法，自動將不常存取的項目從記憶體移至 SSD。當隨後存取 SSD 上的資料時，ElastiCache 會在處理請求之前自動並以異步的方式將其移回記憶體。如果您的工作負載只會定期存取其資料的子集，則資料分層是以符合成本效益的方式擴展容量的最佳方式。

請注意，使用資料分層時，金鑰本身一律會保留在記憶體中，而 LRU 則會控制記憶體與磁碟上值的位置。一般而言，建議在使用資料分層時，金鑰大小小於您值的大小。

資料分層專為盡量降低對應用程式工作負載的效能影響所設計。例如，假設 500 個位元組的字串值，與請求在記憶體中的資料相比，可以預期請求存放在 SSD 上的資料時會有額外 300 微秒的延遲。

使用最大的資料分層節點大小 (cache.r6gd.16xlarge)，可以在單一 500 個節點的叢集中存放高達 1 PB (使用 1 個僅供讀取複本時為 500 TB)。資料分層與 ElastiCache 中支援的所有 Valkey 或 Redis OSS 命令和資料結構相容。不需要任何用戶端變更就能使用此功能。

**Topics**
+ [最佳實務](#data-tiering-best-practices)
+ [限制](#data-tiering-prerequisites)
+ [定價](#data-tiering-pricing)
+ [監控](#data-tiering-monitoring)
+ [使用資料分層](#data-tiering-enabling)
+ [在資料分層啟用的情況下，將資料從備份還原到叢集](#data-tiering-enabling-snapshots)

## 最佳實務
<a name="data-tiering-best-practices"></a>

建議遵循下列最佳實務：
+ 資料分層非常適合定期存取高達 20% 的整體資料集的工作負載，以及在存取 SSD 資料時可容忍額外延遲的應用程式。
+ 使用資料分層節點上可用的 SSD 容量時，建議值的大小大於金鑰大小。項目在 DRAM 和 SSD 之間移動時，金鑰將一律保留在記憶體中，而且只有值會移至 SSD 層。

## 限制
<a name="data-tiering-prerequisites"></a>

資料分層具有下列限制：
+ 只能在屬於複寫群組一部分的叢集上使用資料分層。
+ 使用的節點類型必須來自 r6gd 系列，該系列在下列區域可用：`us-east-2`、`us-east-1`、`us-west-2`、`us-west-1`、`eu-west-1`、`eu-central-1`、`eu-north-1`、`eu-west-3`、`ap-northeast-1`、`ap-southeast-1`、`ap-southeast-2`、`ap-south-1`、`ca-central-1` 和 `sa-east-1`。
+ 您必須使用 Valkey 7.2 或更新版本的引擎，或 Redis OSS 6.2 或更新版本的引擎。
+ 無法將 r6gd 叢集的備份還原到另一個叢集，除非該叢集也使用 r6gd。
+ 無法將備份匯出到 Amazon S3 以用於資料分層叢集。　
+ 在 r6gd 節點類型上執行的叢集不支援線上遷移。
+ 不支援從資料分層叢集 (例如，使用 r6gd 節點類型的叢集) 擴展到未使用資料分層的叢集 (例如，使用 r6g 節點類型的叢集)。如需詳細資訊，請參閱[擴展 ElastiCache](Scaling.md)。
+ 針對 Valkey 7.2 版和更新版本以及 Redis OSS 7.0.7 版和更新版本使用資料分層的叢集支援自動擴展。如需詳細資訊，請參閱[Auto Scaling Valkey 和 Redis OSS 叢集](AutoScaling.md)
+ 資料分層僅支援 `volatile-lru`、`allkeys-lru`、`volatile-lfu`、`allkeys-lfu` 和 `noeviction` 最大記憶體政策。
+ Valkey 7.2 版和更新版本以及 Redis OSS 7.0.7 版和更新版本支援無痕儲存。如需詳細資訊，請參閱[同步與備份的實作方式](Replication.Redis.Versions.md)。
+ 大於 128 MiB 的項目不會移至固態硬碟。
+ 從 Valley 8.1 及更新版本開始，金鑰 \$1 值大小小於 40 個位元組的項目將不會移至 SSD。

## 定價
<a name="data-tiering-pricing"></a>

與 R6g 節點 (僅記憶體) 相比，R6gd 節點的總容量 (記憶體 \$1 SSD) 多出 4.8 倍，而且在以最大使用率執行時，可協助您節省 60% 以上的成本。如需詳細資訊，請參閱 [Amazon ElastiCache 定價](https://aws.amazon.com/elasticache/pricing/)。

## 監控
<a name="data-tiering-monitoring"></a>

ElastiCache 提供專為監控使用資料分層之效能叢集而設計的指標。若要監控 DRAM 中項目相較於 SSD 的比率，您可以在 [Valkey 和 Redis OSS 的指標](CacheMetrics.Redis.md)中使用 `CurrItems` 指標。您可以按照以下方式計算百分比：*(有維度的 CurrItems：分層 = 記憶體 \$1 100) / (沒有維度篩選條件的 CurrItems)*。

 如果設定的移出政策允許，則當記憶體中的項目百分比低於 5% 時，ElastiCache 會開始移出項目。在設定了封存政策的節點上，寫入操作將收到記憶體不足錯誤。

 當記憶體中的項目百分比低於 5% 時，仍建議您考慮擴展啟用叢集模式的叢集，或擴展停用叢集模式的叢集。如需擴展的詳細資訊，請參閱 [擴展 Valkey 或 Redis OSS （啟用叢集模式） 叢集](scaling-redis-cluster-mode-enabled.md)。如需使用資料分層之 Valkey 或 Redis OSS 叢集指標的詳細資訊，請參閱 [Valkey 和 Redis OSS 的指標](CacheMetrics.Redis.md)。

## 使用資料分層
<a name="data-tiering-enabling"></a>

### 使用 使用資料分層 AWS 管理主控台
<a name="data-tiering-enabling-console"></a>

在建立叢集做為複寫群組的一部分時，可以從 r6gd 系列中選取節點類型來使用資料分層，例如*cache.r6gd.xlarge*。選取該節點類型會自動啟用資料分層。

如需有關建立叢集的詳細資訊，請參閱 [為 Valkey 或 Redis OSS 建立叢集](Clusters.Create.md)。

### 使用 啟用資料分層 AWS CLI
<a name="data-tiering-enabling-cli"></a>

使用 建立複寫群組時 AWS CLI，您可以從 r6gd 系列選取節點類型，例如 *cache.r6gd.xlarge，*並設定 `--data-tiering-enabled` 參數，以使用資料分層。

從 r6gd 系列中選取節點類型時，無法選擇退出資料分層。如果您設定 `--no-data-tiering-enabled` 參數，操作將會失敗。

若為 Linux、macOS 或 Unix：

```
aws elasticache create-replication-group \
   --replication-group-id redis-dt-cluster \
   --replication-group-description "Redis OSS cluster with data tiering" \
   --num-node-groups 1 \
   --replicas-per-node-group 1 \
   --cache-node-type cache.r6gd.xlarge \
   --engine redis \   
   --cache-subnet-group-name default \
   --automatic-failover-enabled \
   --data-tiering-enabled
```

針對 Windows：

```
aws elasticache create-replication-group ^
   --replication-group-id redis-dt-cluster ^
   --replication-group-description "Redis OSS cluster with data tiering" ^
   --num-node-groups 1 ^
   --replicas-per-node-group 1 ^
   --cache-node-type cache.r6gd.xlarge ^
   --engine redis ^   
   --cache-subnet-group-name default ^
   --automatic-failover-enabled ^
   --data-tiering-enabled
```

執行此操作之後，將會看到類似如下的回應：

```
{
    "ReplicationGroup": {
        "ReplicationGroupId": "redis-dt-cluster",
        "Description": "Redis OSS cluster with data tiering",
        "Status": "creating",           
        "PendingModifiedValues": {},
        "MemberClusters": [
            "redis-dt-cluster"
        ],
        "AutomaticFailover": "enabled",
        "DataTiering": "enabled",
        "SnapshotRetentionLimit": 0,
        "SnapshotWindow": "06:00-07:00",
        "ClusterEnabled": false,
        "CacheNodeType": "cache.r6gd.xlarge",       
        "TransitEncryptionEnabled": false,
        "AtRestEncryptionEnabled": false
    }
}
```

## 在資料分層啟用的情況下，將資料從備份還原到叢集
<a name="data-tiering-enabling-snapshots"></a>

在資料分層啟用的情況下，可以使用 (主控台)、(AWS CLI) 或 (ElastiCache API) 將備份還原到新的叢集。當使用 r6gd 系列中的節點類型建立叢集時，會啟用資料分層。

### 在資料分層啟用的情況下，將資料從備份還原到叢集 (主控台)
<a name="data-tiering-enabling-snapshots-console"></a>

**在資料分層啟用的情況下，將備份還原到新叢集 (主控台)**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/) 的 ElastiCache 主控台。

1. 從導覽窗格，選擇 **Backups (備份)**。

1. 在備份清單中，選擇您要從中還原之備份名稱左側的方塊。

1. 選擇 **Restore** (還原)。

1. 完成 **Restore Cluster (還原叢集)** 對話方塊。務必完成所有**必填**欄位，以及您想要變更預設值的任何其他欄位。

   1. **Cluster ID (叢集 ID** - 必要。新叢集的名稱。

   1. **啟用叢集模式 （向外擴展）** – 針對 Valkey 或 Redis OSS （啟用叢集模式） 叢集選擇此選項。

   1. **節點類型** – 指定 **cache.r6gd.xlarge** 或任何其他 r6gd 系列中的節點類型。

   1. **Number of Shards (碎片數)** - 選擇您要讓新叢集具備的碎片 (API/CLI：節點群組) 數。

   1. **Replicas per Shard (每個碎片的複本數)** - 選擇您要讓每個碎片具備的僅供讀取複本節點數。

   1. **Slots and keyspaces (位置和 Keyspace)** - 選擇您要如何將索引鍵分佈到不同的碎片中。如果您選擇指定金鑰分佈，請指定每個碎片的金鑰範圍，以完成資料表。

   1. **Availability zone(s) (可用區域)** - 指定您要如何選取叢集的可用區域。

   1. **Port (連接埠)** - 只有在您希望新叢集使用不同的連接埠時，才變更此選項。

   1. **Choose a VPC (選擇 VPC)** - 選擇要在其中建立此叢集的 VPC。

   1. **參數群組** – 選擇參數群組，為您選取的節點類型保留足夠的記憶體以用於 Valkey 或 Redis OSS 額外負荷。

1. 當您滿意設定後，請選擇 **Create (建立)**。

如需有關建立叢集的詳細資訊，請參閱 [為 Valkey 或 Redis OSS 建立叢集](Clusters.Create.md)。

### 在資料分層啟用的情況下，將資料從備份還原到叢集 (AWS CLI)
<a name="data-tiering-enabling-snapshots-cli"></a>

使用 建立複寫群組時 AWS CLI，預設會使用資料分層，方法是從 r6gd 系列選取節點類型，例如 *cache.r6gd.xlarge* 和設定 `--data-tiering-enabled` 參數。

從 r6gd 系列中選取節點類型時，無法選擇退出資料分層。如果您設定 `--no-data-tiering-enabled` 參數，操作將會失敗。

若為 Linux、macOS 或 Unix：

```
aws elasticache create-replication-group \
   --replication-group-id redis-dt-cluster \
   --replication-group-description "Redis OSS cluster with data tiering" \
   --num-node-groups 1 \
   --replicas-per-node-group 1 \
   --cache-node-type cache.r6gd.xlarge \
   --engine redis \   
   --cache-subnet-group-name default \
   --automatic-failover-enabled \
   --data-tiering-enabled \
   --snapshot-name my-snapshot
```

若為 Linux、macOS 或 Unix：

```
aws elasticache create-replication-group ^
   --replication-group-id redis-dt-cluster ^
   --replication-group-description "Redis OSS cluster with data tiering" ^
   --num-node-groups 1 ^
   --replicas-per-node-group 1 ^
   --cache-node-type cache.r6gd.xlarge ^
   --engine redis ^   
   --cache-subnet-group-name default ^
   --automatic-failover-enabled ^
   --data-tiering-enabled ^
   --snapshot-name my-snapshot
```

執行此操作之後，將會看到類似如下的回應：

```
{
    "ReplicationGroup": {
        "ReplicationGroupId": "redis-dt-cluster",
        "Description": "Redis OSS cluster with data tiering",
        "Status": "creating",           
        "PendingModifiedValues": {},
        "MemberClusters": [
            "redis-dt-cluster"
        ],
        "AutomaticFailover": "enabled",
        "DataTiering": "enabled",
        "SnapshotRetentionLimit": 0,
        "SnapshotWindow": "06:00-07:00",
        "ClusterEnabled": false,
        "CacheNodeType": "cache.r6gd.xlarge",        
        "TransitEncryptionEnabled": false,
        "AtRestEncryptionEnabled": false
    }
}
```

# 在 ElastiCache 中準備叢集
<a name="Clusters.Prepare"></a>

以下說明如何使用 ElastiCache 主控台、 AWS CLI或 ElastiCache API 來建立叢集。

您也可以使用 [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 建立 ElastiCache 叢集。如需詳細資訊，請參閱《AWS ‬ Cloud Formation 使用者指南》中的 ‭[‬‭AWS::ElastiCache::CacheCluster](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticache-cache-cluster.html)‭，其中包括如何實作該做法的指引。

每當您建立叢集或複寫群組，建議您進行一些準備工作，將來就不需要升級或當下進行變更。

**Topics**
+ [判斷您的 ElastiCache 叢集需求](cluster-create-determine-requirements.md)
+ [選擇您的節點大小](CacheNodes.SelectSize.md)

# 判斷您的 ElastiCache 叢集需求
<a name="cluster-create-determine-requirements"></a>

**準備**  
了解下列問題的答案有助於更順暢地建立 ElastiCache 叢集：
+ 您需要哪種類型的節點執行個體？

  如需選擇執行個體節點類型的指導方針，請參閱[選擇您的節點大小](CacheNodes.SelectSize.md)。
+ 您是否會在以 Amazon VPC 為基礎的 Virtual Private Cloud (VPC) 中啟動叢集？ 
**重要**  
如果您要在 VPC 中啟動叢集，請先在相同 VPC 中建立子網路群組，再開始建立叢集。如需詳細資訊，請參閱[子網路和子網路群組](SubnetGroups.md)。  
ElastiCache 旨在 AWS 使用 Amazon EC2 從 內部存取。不過，如果您在以 Amazon VPC 為基礎的 VPC 中啟動叢集，並且叢集在 VPC 中，則可以從 AWS外部提供存取。如需詳細資訊，請參閱[從外部存取 ElastiCache 資源AWS](accessing-elasticache.md#access-from-outside-aws)。
+ 您是否需要自訂任何參數值？

  如果需要，請建立自訂參數群組。如需詳細資訊，請參閱[建立 ElastiCache 參數群組](ParameterGroups.Creating.md)。

   如果您正在執行 Valkey 或 Redis OSS，請考慮設定 `reserved-memory`或 `reserved-memory-percent`。如需詳細資訊，請參閱[管理 Valkey 和 Redis OSS 的預留記憶體](redis-memory-management.md)。
+ 您是否需要建立自己的 *VPC 安全群組*？ 

  如需詳細資訊，請參閱 [VPC 中的安全性](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Security.html)。
+ 您要如何實作容錯能力？

  如需詳細資訊，請參閱[減少故障](disaster-recovery-resiliency.md#FaultTolerance)。

**Topics**
+ [ElastiCache 記憶體和處理器需求](#cluster-create-determine-requirements-memory)
+ [Memcached 叢集組態](#memcached-cluster-configuration)
+ [Valkey 和 Redis OSS 叢集組態](#redis-cluster-configuration)
+ [ElastiCache 擴展需求](#cluster-create-determine-requirements-scaling)
+ [ElastiCache 存取需求](#cluster-create-determine-requirements-access)
+ [ElastiCache 的區域、可用區域和本機區域需求](#cluster-create-determine-requirements-region)

## ElastiCache 記憶體和處理器需求
<a name="cluster-create-determine-requirements-memory"></a>

Amazon ElastiCache 的基本建置區塊為節點。您可以逐一設定節點或以群組形式設定節點，以形成叢集。當您判斷要為叢集使用何種節點類型時，請一併考量叢集的節點組態和您要存放的資料量。

Memcached 是多執行緒的引擎，因此節點的核心數量會影響叢集可用的運算能力。

## Memcached 叢集組態
<a name="memcached-cluster-configuration"></a>

ElastiCache for Memcached 叢集由 1 到 60 個節點組成。Memcached 叢集中的資料會分割到叢集的各節點中。您的應用程式會使用網路位址 (稱為「端點」) 來與 Memcached 叢集連線。Memcached 叢集中的每個節點都有自己的端點，您的應用程式會使用這些端點來讀取或寫入特定節點。除了節點端點之外，Memcached 叢集本身還有一個端點名為*組態端點*。您的應用程式可使用此端點來讀取或寫入叢集，並由自動探索判斷要讀取或寫入哪些節點。

![\[顯示 Memcached 叢集如何跨叢集中的節點分割的影像。\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/images/ElastiCache-Cluster-Memcached.png)


如需詳細資訊，請參閱[在 ElastiCache 中管理叢集](Clusters.md)。

## Valkey 和 Redis OSS 叢集組態
<a name="redis-cluster-configuration"></a>

ElastiCache for Valkey 和 Redis OSS 叢集由 0 到 500 個碎片 （也稱為節點群組） 組成。Valkey 或 Redis OSS 叢集中的資料會分割為叢集中的碎片。您的應用程式會使用稱為 端點的網路地址，與 Valkey 或 Redis OSS 叢集連線。Valkey 或 Redis OSS 碎片中的節點滿足兩個角色的其中之一：一個讀取/寫入主要節點和所有其他節點唯讀次要節點 （也稱為僅供讀取複本）。除了節點端點之外，Valkey 或 Redis OSS 叢集本身還有稱為*組態端點的端點*。您的應用程式可以使用此端點來讀取或寫入叢集，從而決定要讀取或寫入哪個節點至 ElastiCache for Redis OSS。

![\[以停用模式與啟用模式比較 Valkey 或 Redis OSS 叢集的影像。\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/images/ElastiCacheClusters-Redis-ClustersRGs.png)


如需詳細資訊，請參閱[在 ElastiCache 中管理叢集](Clusters.md)。

## ElastiCache 擴展需求
<a name="cluster-create-determine-requirements-scaling"></a>

您可以使用更大的新節點類型來建立新叢集，以擴展所有叢集的規模。當您擴展 Memcached 叢集時，新叢集會開始清空。當您擴展 Valkey 或 Redis OSS 叢集時，您可以從備份植入它，並避免讓新叢集啟動為空。

您可以擴展或縮減 Amazon ElastiCache for Memcached 叢集的規模。若要擴展或縮減 Memcached 叢集的規模，您只要新增或移除叢集的節點即可。如果您已啟用 Automatic Discovery 且應用程式已連線至叢集的組態端點，則當您新增或移除節點時不需要對應用程式進行任何變更。

如需詳細資訊，請參閱本指南中的 [擴展 ElastiCache](Scaling.md)。

## ElastiCache 存取需求
<a name="cluster-create-determine-requirements-access"></a>

根據設計，Amazon ElastiCache 叢集是透過 Amazon EC2 執行個體來存取。僅有當初建立叢集的帳戶可以網路存取 ElastiCache 叢集。因此，在您從 Amazon EC2 執行個體存取叢集之前，必須先授權讓 Amazon EC2 執行個體存取叢集。執行此作業的步驟依據您要在 EC2-VPC 或 EC2-Classic 中啟動而異。

如果您是在 EC2-VPC 中啟動叢集，則需要授權網路輸入至您的叢集。如果您是在 EC2-Classic 中啟動叢集，則需要授權讓與執行個體相關聯的 Amazon Elastic Compute Cloud 安全群組存取 ElastiCache 安全群組。如需詳細說明，請參閱本指南的[步驟 3。授權對叢集的存取](SubnetGroups.designing-cluster-pre.valkey.md#GettingStarted.AuthorizeAccess.valkey)。

## ElastiCache 的區域、可用區域和本機區域需求
<a name="cluster-create-determine-requirements-region"></a>

Amazon ElastiCache 支援所有 AWS 區域。透過將 ElastiCache 叢集放置在靠近應用程式 AWS 的區域，您可以減少延遲。如果您的叢集有多個節點，將節點安置在不同可用區域或 Local Zones 中可降低故障對叢集的影響。

如需詳細資訊，請參閱下列內容：
+ [選擇 ElastiCache 的區域和可用區域](RegionsAndAZs.md)
+ [搭配 ElastiCache 使用本地區域](Local_zones.md)
+ [減少故障](disaster-recovery-resiliency.md#FaultTolerance)

# 選擇您的節點大小
<a name="CacheNodes.SelectSize"></a>

您為 ElastiCache 叢集選取的節點大小會影響成本、效能和容錯能力。

## 節點大小 (Valkey 和 Redis OSS)
<a name="CacheNodes.SelectSize.redis"></a>

如需有關 Graviton 處理器優點的詳細資訊，請參閱 [AWS  Graviton 處理器](https://aws.amazon.com/pm/ec2-graviton/)。

回答下列問題可協助您判斷 Valkey 或 Redis OSS 實作所需的最低節點類型：
+ 您是否預期會有具有多個用戶端連線的輸送量繫結工作負載？

  如果是這種情況，而且您正在執行 Redis OSS 5.0.6 版或更高版本，您可以使用增強型 I/O 功能來獲得更好的輸送量和延遲，其中可用的 CPUs用於代表 Redis OSS 引擎卸載用戶端連線。如果您執行 Redis OSS 7.0.4 版或更新版本，除了增強型 I/O 之外，您還可以透過增強型 I/O 多工功能獲得額外的加速，其中每個專用網路 IO 執行緒管道命令都會從多個用戶端流向 Redis OSS 引擎，利用 Redis OSS 的 功能有效率地分批處理命令。在 ElastiCache for Redis OSS v7.1 及更高版本中，我們擴展了增強型 I/O 執行緒功能，以處理呈現層邏輯。依呈現層而言，我們的意思是增強型 I/O 執行緒現在不僅讀取用戶端輸入，還會將輸入剖析為 Redis OSS 二進位命令格式，然後轉送至主執行緒以執行，從而提高效能。如需其他詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/database/achieve-over-500-million-requests-per-second-per-cluster-with-amazon-elasticache-for-redis-7-1/)和[支援的版本](VersionManagement.md#supported-engine-versions)頁面。
+ 您是否有經常存取少量資料的工作負載？

  如果是這種情況，而且您在 Redis OSS 引擎 6.2 版或更新版本上執行，您可以選擇 r6gd 節點類型來利用資料分層。透過資料分層，最近使用的資料會存放在 SSD 中。當檢索資料時，會有少量的延遲成本，可藉由成本節省加以抵銷。如需詳細資訊，請參閱[ElastiCache 中的資料分層](data-tiering.md)。

  如需詳細資訊，請參閱[支援的節點類型](CacheNodes.SupportedTypes.md)。
+ 您的資料需要多少總記憶體？

  若要取得一般估計值，請使用要快取的項目大小。將此大小乘以您希望同時保持在快取中的項目數。若要取得合理的項目大小估計，收先請序列化您的快取項目，接著計算字元數。然後再除以您叢集中碎片數。

  如需詳細資訊，請參閱[支援的節點類型](CacheNodes.SupportedTypes.md)。
+ 您正在執行哪個版本的 Redis OSS？

  2.8.22 之前的 Redis OSS 版本要求您為容錯移轉、快照、同步和將複本提升為主要操作預留更多記憶體。此需求的原因是您必須針對處理期間所有發生的寫入擁有足夠的記憶體。

  Redis OSS 2.8.22 版和更新版本使用無分支儲存程序，需要的記憶體比先前程序更少。

  如需詳細資訊，請參閱下列內容：
  + [同步與備份的實作方式](Replication.Redis.Versions.md)
  + [確保您有足夠的記憶體來建立 Valkey 或 Redis OSS 快照](BestPractices.BGSAVE.md)
+ 您應用程式所需要的大量寫入程度為何？

  需要大量寫入的應用程式可能需要在取得快照或容錯移轉時擁有大上許多的可用記憶體 (尚未由資料使用的記憶體)。每次執行 `BGSAVE` 處理序時，都必須有資料未使用的足夠記憶體，以容納執行 `BGSAVE` 處理序時產生的所有寫入。例如拍攝快照、將主要叢集與叢集中的複本同步，以及啟用僅限附加檔案 (AOF) 功能時。另一個範例是將複本提升為主要節點 (若您已啟用多個可用區) 時。最糟糕的情況是執行處理序過程中所有資料都被重寫。在這種情況下，節點執行個體的大小需為單純資料所需記憶體的兩倍。

  如需詳細資訊，請參閱[確保您有足夠的記憶體來建立 Valkey 或 Redis OSS 快照](BestPractices.BGSAVE.md)。
+ 您的實作是獨立的 Valkey 或 Redis OSS （停用叢集模式） 叢集，還是具有多個碎片的 Valkey 或 Redis OSS （啟用叢集模式） 叢集？

**Valkey 或 Redis OSS （停用叢集模式） 叢集**  
如果您要實作 Valkey 或 Redis OSS （停用叢集模式） 叢集，您的節點類型必須能夠容納所有資料加上必要的額外負荷，如上一個項目符號所述。

  例如，假設您估計所有項目的總大小為 12 GB。在這種情況下，您可以使用具有 13.3 GB 記憶體的 `cache.m3.xlarge` 節點或記憶體為 13.5 GB 的 `cache.r3.large` 節點。但是，您可能需要更多記憶體以執行 `BGSAVE` 作業。如果您的應用程式需執行大量寫入，請將記憶體需求加倍為至少 24 GB。因此，可使用 `cache.m3.2xlarge` (含 27.9 GB 記憶體) 或 `cache.r3.xlarge` (含 30.5 GB 記憶體)。

**具有多個碎片的 Valkey 或 Redis OSS （啟用叢集模式）**  
如果您要實作具有多個碎片的 Valkey 或 Redis OSS （啟用叢集模式） 叢集，則節點類型必須能夠容納資料的`bytes-for-data-and-overhead / number-of-shards`位元組。

  例如，假設您估計所有項目的總大小為 12 GB 且有兩個碎片。在這種情況下，您可以使用具有 6.05 GB 記憶體 (12 GB/2) 的 `cache.m3.large` 節點。但是，您可能需要更多記憶體以執行 `BGSAVE` 作業。如果您的應用程式需執行大量寫入，請將記憶體需求加倍為每個碎片至少 12 GB。因此，可使用 `cache.m3.xlarge` (含 13.3 GB 記憶體) 或 `cache.r3.large` (含 13.5 GB 記憶體)。
+ 您是否有使用 Local Zones？

[Local Zones](Local_zones.md) 可讓您將資源 (例如 ElastiCache 叢集) 放置在靠近使用者的多個位置。但是選擇節點大小時請注意，無論容量要求為何，目前可用節點都會限制為下列大小：
  + 最新一代：

    **M5 節點類型：**`cache.m5.large`、`cache.m5.xlarge`、`cache.m5.2xlarge`、`cache.m5.4xlarge`、`cache.m5.12xlarge`、`cache.m5.24xlarge`

    **R5 節點類型：**`cache.r5.large`、`cache.r5.xlarge`、`cache.r5.2xlarge`、`cache.r5.4xlarge`、`cache.r5.12xlarge`、`cache.r5.24xlarge`

    **T3 節點類型：**`cache.t3.micro`、`cache.t3.small`、`cache.t3.medium`

在您的叢集執行中時，您可以監控發佈到 CloudWatch 的記憶體用量、處理器使用率、快取命中及快取未命中指標。您可能會注意到叢集沒有您想要的命中率，或是索引鍵被移出的頻率太頻繁。在這些情況下，您可以選擇 CPU 和記憶體規格較大的不同節點大小。

監控 CPU 用量時，請記住 Valkey 和 Redis OSS 是單執行緒。因此，將回報的 CPU 使用率乘上 CPU 核心數，可得出實際的使用率。例如，報告 20% 使用率的四核心 CPU 實際上是 Redis OSS 以 80% 使用率執行的一個核心。

## 節點大小 (Memcached)
<a name="CacheNodes.SelectSize.Mem"></a>

Memcached 叢集包含一或多個節點，其中叢集的資料會分割在各個節點中。因此，叢集的記憶體需求與節點的記憶體相關，但不相同。您可以透過擁有幾個大型節點或數個較小的節點，來達到您需要的叢集記憶體容量。除此之外，隨著您的需求變更，您可以新增節點或從叢集移除節點，來只為您需要的項目支付費用。

您叢集的總記憶體容量是透過將叢集中的節點數與每個節點的 RAM 容量相乘，再減去系統額外負荷計算而得。每個節點的容量是根據節點類型而定。

```
cluster_capacity = number_of_nodes * (node_capacity - system_overhead)
```

叢集中的節點數量是您執行 Memcached 叢集可用性的關鍵因素。單一節點發生故障，可能會影響您應用程式的可用性及後端資料庫的負載。在這種情況下，ElastiCache 會為失敗的節點佈建一個替代節點，並重新填入資料。您可以將記憶體和運算容量分散到更多容量較小的節點間，而非使用少數具備高容量的節點，藉此降低此可用性影響。

在希望擁有 35 GB 快取記憶體的案例中，可以透過以下任一組態進行設定：
+ 11 個 `cache.t2.medium` 節點，其具備 3.22 GB 的記憶體及 2 個執行緒，合計 35.42 GB 和 22 個執行緒。
+ 6 個 `cache.m4.large` 節點，其具備 6.42 GB 的記憶體及 2 個執行緒，合計 38.52 GB 和 12 個執行緒。
+ 3 個 `cache.r4.large` 節點，其具備 12.3 GB 的記憶體及 2 個執行緒，合計 36.90 GB 和 6 個執行緒。
+ 3 個 `cache.m4.xlarge` 節點，其具備 14.28 GB 的記憶體及 4 個執行緒，合計 42.84 GB 和 12 個執行緒。


**比較節點選項**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/CacheNodes.SelectSize.html)

這些選項每個都能提供相似的記憶體容量，但不同的運算容量及成本。若要比較您具體選項的成本，請參閱 [Amazon ElastiCache 定價](https://aws.amazon.com/elasticache/pricing/)。

針對執行 Memcached 的叢集，每個節點上一部分的可用記憶體會用於連線額外負荷。如需詳細資訊，請參閱 [Memcached 連線額外負荷](ParameterGroups.Engine.md#ParameterGroups.Memcached.Overhead)

使用多個節點需要將索引鍵分散到這些節點當中。每個節點都有自己的端點。為了簡化端點管理，您可以使用 ElastiCache 的自動探索功能，讓用戶端程式能自動識別叢集中的所有節點。如需詳細資訊，請參閱[自動識別叢集中的節點 (Memcached)](AutoDiscovery.md)。

在某些案例中，您可能不確定需要多少容量。這個情況下，建議從一個 `cache.m5.large` 節點開始測試。然後使用發佈到 Amazon CloudWatch 的 ElastiCache 指標，監控記憶體用量、CPU 使用率及快取命中率。如需有關 ElastiCache 的 CloudWatch 指標的詳細資訊，請參閱「[使用 CloudWatch 指標監控用量](CacheMetrics.md)」。針對生產及更大的工作負載，R5 節點可提供最佳效能及 RAM 成本值。

若您的叢集沒有達到所需的命中率，您可輕易新增更多節點來增加叢集中可用的總記憶體。

若您的叢集具備足夠的命中率，但受到 CPU 限制，請使用提供更強運算能力的節點類型設定新的叢集。

# 為 Valkey 或 Redis OSS 建立叢集
<a name="Clusters.Create"></a>

下列範例示範如何使用AWS 管理主控台AWS CLI和 ElastiCache API 建立 Valkey 或 Redis OSS 叢集。

## 建立 Valkey 或 Redis OSS （停用叢集模式） （主控台）
<a name="Clusters.Create.CON.Redis"></a>

當您使用 Valkey 或 Redis OSS 引擎時，ElastiCache 支援複寫。若要監控資料寫入 Valkey 或 Redis OSS 讀取/寫入主要叢集和傳播至唯讀次要叢集之間的延遲，ElastiCache 會將特殊金鑰 新增至叢集`ElastiCacheMasterReplicationTimestamp`。此鍵是目前國際標準時間 (UTC) 的時間。由於 Valkey 或 Redis OSS 叢集稍後可能會新增至複寫群組，因此此金鑰會包含在所有 Valkey 或 Redis OSS 叢集中，即使最初不是複寫群組的成員。如需複寫群組的詳細資訊，請參閱[使用複寫群組的高可用性](Replication.md)。

若要建立 Valkey 或 Redis OSS （停用叢集模式） 叢集，請遵循 中的步驟[建立 Valkey （停用叢集模式） 叢集 （主控台）](SubnetGroups.designing-cluster-pre.valkey.md#Clusters.Create.CON.valkey-gs)。

一旦叢集的狀態變為*可用*，您就可以為其授予 Amazon EC2 存取權限、連線至叢集並開始使用叢集。如需詳細資訊，請參閱[步驟 3。授權對叢集的存取](SubnetGroups.designing-cluster-pre.valkey.md#GettingStarted.AuthorizeAccess.valkey)及[步驟 4. 連接至叢集的節點](SubnetGroups.designing-cluster-pre.valkey.md#GettingStarted.ConnectToCacheNode.valkey)。

**重要**  
在您的叢集可用之後，系統就會按叢集作用中時間每個小時或部分小時計費 (即使您並未主動使用亦同)。若要停止此叢集產生費用，您必須將其刪除。請參閱 [在 ElastiCache 中刪除叢集](Clusters.Delete.md)。

## 建立 Valkey 或 Redis OSS （啟用叢集模式） 叢集 （主控台）
<a name="Clusters.Create.CON.RedisCluster"></a>

如果您執行 Redis OSS 3.2.4 或更新版本，您可以建立 Valkey 或 Redis OSS （啟用叢集模式） 叢集。Valkey 或 Redis OSS （啟用叢集模式） 叢集支援將您的資料分割到 1 到 500 個碎片 (API/CLI：節點群組），但有一些限制。如需 Valkey 或 Redis OSS （停用叢集模式） 和 Valkey 或 Redis OSS （啟用叢集模式） 的比較，請參閱 [支援的引擎和版本](VersionManagement.md#supported-engine-versions)。

**使用 ElastiCache 主控台建立 Valkey 或 Redis OSS （啟用叢集模式） 叢集**

1. 登入AWS 管理主控台，並在 [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)：// 開啟 Amazon ElastiCache 主控台。

1. 從右上角的清單中，選擇要啟動此叢集AWS的區域。

1. 從導覽窗格選擇 **Get started** (開始使用)。

1. 選擇 **Create VPC** (建立 VPC)，然後按照[建立虛擬私有雲端 (VPC)](VPCs.CreatingVPC.md) 中列出的步驟操作。

1. 在 ElastiCache 儀表板頁面上，選擇**建立叢集**，然後選擇**建立 Valkey 叢集**或**建立 Redis OSS 叢集**。

1. 在 **Cluster settings** (叢集設定) 中，執行下列動作：

   1. 選擇 **Configure and create a new cluster** (設定和建立新叢集)。

   1. 針對 **Cluster mode** (叢集模式)，選擇 **Enabled** (已啟用)。

   1. 針對 **Cluster info** (叢集資訊)，輸入 **Name** (名稱) 值。

   1. (選用) 輸入 **Description** (描述) 值。

1. 在 **Location** (位置) 中：

------
#### [ AWS Cloud  ]

   1. 針對 **AWS雲端**，建議您接受**多可用區域**和**自動容錯移轉**的預設設定。如需詳細資訊，請參閱[使用異地同步備份將 ElastiCache for Redis OSS 的停機時間降至最低](AutoFailover.md)。

   1. 在 **Cluster settings** (叢集設定) 中

      1. 針對 **Engine version** (引擎版本)，選擇可用的版本。

      1. 針對 **Port** (連接埠)，使用預設連接埠 6379。如果您基於任何原因需要使用不同的連接埠，請輸入連接埠號碼。

      1. 對於 **Parameter group (參數群組)**，請選擇參數群組或新建參數群組。參數群組可控制叢集的執行時間參數。如需參數群組的詳細資訊，請參閱 [Valkey 和 Redis OSS 參數](ParameterGroups.Engine.md#ParameterGroups.Redis)和[建立 ElastiCache 參數群組](ParameterGroups.Creating.md)。
**注意**  
當您選取參數群組來設定引擎組態值時，該參數群組會套用至全域資料存放區中的所有叢集。在 **Parameter Groups (參數群組)** 頁面上，yes/no (是/否) **Global (全域)** 屬性指出參數群組是否為全域資料存放區的一部分。

      1. 在 **Node type (節點類型)** 中，選擇向下箭頭 (![\[Downward-pointing triangle icon, typically used to indicate a dropdown menu.\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/images/ElastiCache-DnArrow.png))。在 **Change node type (變更節點類型)** 對話方塊中，為您想要的節點類型選擇 **Instance family (執行個體系列)** 的值。然後選擇您要用於此叢集的節點類型，然後選擇 **Save (儲存)**。

         如需詳細資訊，請參閱[選擇您的節點大小](CacheNodes.SelectSize.md)。

         如果選擇 r6gd 節點類型，將自動啟用資料分層。如需詳細資訊，請參閱[ElastiCache 中的資料分層](data-tiering.md)。

      1. 針對**碎片數量**，選擇您希望此 Valkey 或 Redis OSS （啟用叢集模式） 叢集的碎片數量 （分割區/節點群組）。

         對於某些版本的 Valkey 或 Redis OSS （啟用叢集模式），您可以動態變更叢集中的碎片數量：
         + **Redis OSS 3.2.10 和更新版本** – 如果您的叢集執行 Redis OSS 3.2.10 或更新版本，您可以動態變更叢集中的碎片數量。如需詳細資訊，請參閱[擴展 Valkey 或 Redis OSS （啟用叢集模式） 叢集](scaling-redis-cluster-mode-enabled.md)。
         + **其他 Redis OSS 版本** – 如果您的叢集在 3.2.10 版之前執行 Redis OSS 版本，則有其他方法。在這種情況下，若要變更叢集中的碎片數量，請使用新的碎片數量建立新的叢集。如需詳細資訊，請參閱[從備份還原到新的快取](backups-restoring.md)。

      1. 針對 **Replicas per shard (每個碎片的複本)**，選擇您要讓每個碎片具備的僅供讀取複本節點數目。

         下列限制適用於 Valkey 或 Redis OSS （啟用叢集模式）。
         + 如果您已啟用多個可用區，請確保每個碎片至少有一個複本。
         + 使用主控台建立叢集時，每個碎片的複本數都相同。
         + 每個碎片的僅供讀取複本數均固定而無法變更。如果您發現每個碎片 (API/CLI：節點群組) 需要更多或更少的複本，則必須使用新的複本數來建立新叢集。如需詳細資訊，請參閱[教學課程：使用外部建立的備份植入新的節點型叢集](backups-seeding-redis.md)。

   1. 在 **Connectivity** (連線) 下

      1. 針對 **Network type** (網路類型)，請選擇此叢集支援的 IP 版本。

      1. 在 **Subnet group** (子網路群組) 中，選擇要套用至此叢集的子網路。ElastiCache 會使用此子網路群組選擇子網路及該子網路中的 IP 地址，以與您的節點建立關聯。ElastiCache 叢集需要具有 IPv4 和 IPv6 地址的雙堆疊子網路，以便在雙堆疊模式下運作，且僅限 IPv6 的子網路僅會以 IPv6 運作。

         建立新的子網路群組時，請輸入其所屬的 **VPC ID**。

         選取 **Discovery IP type** (探索 IP 類型)。僅回傳您選擇的通訊協定 IP 地址。

         如需詳細資訊，請參閱：
         + [在 ElastiCache 中選擇網路類型](network-type.md).
         + [在 VPC 中建立子網路](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#AddaSubnet)。

         如果您是 [搭配 ElastiCache 使用本地區域](Local_zones.md)，必須建立或選擇位於本地區域中的子網路。

         如需詳細資訊，請參閱[子網路和子網路群組](SubnetGroups.md)。

   1. 針對 **Availability zone placements** (可用區域置放)，您有兩種選項：
      + **No preference (無偏好設定)** - ElastiCache 會選擇可用區域。
      + **Specify availability zones (指定可用區域)** - 您可為每個叢集指定可用區域。

        如果您選擇指定可用區域，請針對每個碎片中的每個叢集，從清單中選擇可用區域。

      如需詳細資訊，請參閱[選擇 ElastiCache 的區域和可用區域](RegionsAndAZs.md)。

   1. 選擇 **Next** (下一步)

   1. 在**進階 Valkey 設定**或**進階 Redis OSS 設定**下，或 

      1. 針對 **Security** (安全)：

        1. 若要加密資料，您有下列選項：
           + **Encryption at rest (靜態加密)** - 啟用存放在磁碟上的資料加密功能。如需詳細資訊，請參閱[靜態加密](at-rest-encryption.md)。
**注意**  
您可以選擇**客戶受管AWS KMS 金鑰**並選擇金鑰，以提供不同的加密金鑰。如需詳細資訊，請參閱[使用來自AWS KMS 的客戶受管金鑰](at-rest-encryption.md#using-customer-managed-keys-for-elasticache-security)。
           + **Encryption in-transit (傳輸中加密)** - 啟用傳輸中資料加密功能。如需詳細資訊，請參閱[傳輸中加密](in-transit-encryption.md)。對於 Valkey 7.2 及更高版本或 Redis OSS 6.0 及更高版本，如果您啟用傳輸中加密，系統會提示您指定下列其中一個**存取控制**選項：
             + **No Access Control (無存取控制)** - 這是預設的設定。這表示使用者存取叢集時不受任何限制。
             + **User Group Access Control List (使用者群組存取控制清單)** - 選取的使用者群組需具有可存取叢集的已定義使用者集。如需詳細資訊，請參閱[使用主控台和 CLI 管理使用者群組](Clusters.RBAC.md#User-Groups)。
             + **AUTH 預設使用者** – Valkey 或 Redis OSS 伺服器的身分驗證機制。如需詳細資訊，請參閱 [AUTH](auth.md)。
           + **AUTH** – Valkey 或 Redis OSS 伺服器的身分驗證機制。如需詳細資訊，請參閱 [AUTH](auth.md)。
**注意**  
對於 3.2.6 以上版本的 Redis OSS，除了 3.2.10 版之外，AUTH 是唯一的選項。

        1. 在 **Security groups (安全群組)** 中，選擇要用於此叢集的安全群組。*安全群組*可做為防火牆來控制叢集的網路存取。您可以使用 VPC 的預設安全群組，或建立新的安全群組。

           如需安全群組的詳細資訊，請參閱 *Amazon VPC 使用者指南*中的 [VPC 的安全群組](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html)。

   1. 針對定期排程自動備份，請選取 **Enable automatic backups (啟用自動備份)**，然後輸入每份自動備份要保存的天數，過了此天數後即會自動將其刪除。如果您不想定期排程自動備份，請清除 **Enable automatic backups (啟用自動備份)** 核取方塊。在任何一種情況下，您都可以選擇建立手動備份。

      如需備份和還原的詳細資訊，請參閱[快照和還原](backups.md)。

   1. (選用) 指定維護時段。*維護時段*是 ElastiCache 排程的每週叢集系統維護時間，通常長度為一小時。您可以讓 ElastiCache 選擇維護時段的日期和時間 (*No preference* (無偏好設定))，或自行選擇日期、時間和持續時間 (*Specify maintenance window* (指定維護時段))。如果您從清單中選擇 *Specify maintenance window (指定維護時段)*，請為您的維護時段選擇 *Start day (開始日)*、*Start time (開始時間)* 和 *Duration (持續時間)*。所有時間都是 UCT 時間。

      如需詳細資訊，請參閱[管理 ElastiCache 叢集維護](maintenance-window.md)。

   1. (選用) 針對 **Logs (日誌)**：
      + 在 **Log format (日誌格式)** 下，選擇 **Text (文字)** 或 **JSON**。
      + 在 **Destination Type (目的地類型)** 下，選擇 **CloudWatch Logs** 或 **Kinesis Firehose**。
      + 在**日誌目的地**下，選擇**建立新** ，然後輸入您的 CloudWatch Logs 日誌群組名稱或 Firehose 串流名稱，或選擇**選取現有**，然後選擇您的 CloudWatch Logs 日誌群組名稱或您的 Firehose 串流名稱。

   1. 針對 **Tags** (標籤)，為協助您管理叢集和其他 ElastiCache 資源，您可以用標籤形式將自己的中繼資料指派給每個資源。如需詳細資訊，請參閱[為您的 ElastiCache 資源加上標籤](Tagging-Resources.md)。

   1. 選擇**下一步**。

   1. 檢閱所有項目和選項，然後進行任何所需的更正。當您準備好時，請選擇 **Create** (建立)。

------
#### [ On premises ]

   1. 針對 **On premises** (內部部署)，建議您將 **Auto-failover** (自動容錯移轉) 保持啟用。如需詳細資訊，請參閱[使用異地同步備份將 ElastiCache for Redis OSS 的停機時間降至最低](AutoFailover.md)

   1. 按照[使用 Outposts](ElastiCache-Outposts.md) 的步驟執行。

------

若要使用 ElastiCache API 或AWS CLI而非 ElastiCache 主控台建立對等項目，請參閱以下內容：
+ API：[CreateReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateReplicationGroup.html)
+ CLI：[create-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-replication-group.html)

一旦叢集的狀態變為*可用*，您就可以為其授予 EC2 存取權限、連線至叢集並開始使用叢集。如需詳細資訊，請參閱[步驟 3。授權對叢集的存取](SubnetGroups.designing-cluster-pre.valkey.md#GettingStarted.AuthorizeAccess.valkey)及[步驟 4. 連接至叢集的節點](SubnetGroups.designing-cluster-pre.valkey.md#GettingStarted.ConnectToCacheNode.valkey)。

**重要**  
在您的叢集可用之後，系統就會按叢集作用中時間每個小時或部分小時計費 (即使您並未主動使用亦同)。若要停止此叢集產生費用，您必須將其刪除。請參閱 [在 ElastiCache 中刪除叢集](Clusters.Delete.md)。

## 建立叢集 (AWS CLI)
<a name="Clusters.Create.CLI"></a>

若要使用 建立叢集AWS CLI，請使用 `create-cache-cluster`命令。

**重要**  
在您的叢集可用之後，系統就會按叢集作用中時間每個小時或部分小時計費 (即使您並未主動使用亦同)。若要停止此叢集產生費用，您必須將其刪除。請參閱 [在 ElastiCache 中刪除叢集](Clusters.Delete.md)。

### 建立 Valkey 或 Redis OSS （停用叢集模式） 叢集 (CLI)
<a name="Clusters.Create.CLI.Redis"></a>

**Example – 沒有僅供讀取複本的 Valkey 或 Redis OSS （停用叢集模式） 叢集**  
下列 CLI 程式碼會建立沒有複本的 Valkey 或 Redis OSS （停用叢集模式） 叢集。  
使用 r6gd 系列中的節點類型建立叢集時，必須傳遞 `data-tiering-enabled` 參數。
針對 Linux、macOS 或 Unix：  

```
aws elasticache create-cache-cluster \
--cache-cluster-id my-cluster \
--cache-node-type cache.r4.large \
--engine redis \
--num-cache-nodes 1 \
--cache-parameter-group default.redis6.x \
--snapshot-arns arn:aws:s3:::amzn-s3-demo-bucket/snapshot.rdb
```
針對 Windows：  

```
aws elasticache create-cache-cluster ^
--cache-cluster-id my-cluster ^
--cache-node-type cache.r4.large ^
--engine redis ^
--num-cache-nodes 1 ^
--cache-parameter-group default.redis6.x ^
--snapshot-arns arn:aws:s3:::amzn-s3-demo-bucket/snapshot.rdb
```

### 建立 Valkey 或 Redis OSS （啟用叢集模式） 叢集 (AWS CLI)
<a name="Clusters.Create.CLI.RedisCluster"></a>

無法使用 `create-cache-cluster`操作建立 Valkey 或 Redis OSS （啟用叢集模式） 叢集 (API/CLI：複寫群組）。若要建立 Valkey 或 Redis OSS （啟用叢集模式） 叢集 (API/CLI：複寫群組），請參閱 [從頭開始建立 Valkey 或 Redis OSS （啟用叢集模式） 複寫群組 (AWS CLI)](Replication.CreatingReplGroup.NoExistingCluster.Cluster.md#Replication.CreatingReplGroup.NoExistingCluster.Cluster.CLI)。

如需詳細資訊，請參閱AWS CLI適用於 ElastiCache 的 參考主題[https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-replication-group.html](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-replication-group.html)。

## 為 Valkey 或 Redis OSS 建立叢集 (ElastiCache API)
<a name="Clusters.Create.API.red-heading"></a>

若要使用 ElastiCache API 建立叢集，請使用 `CreateCacheCluster` 動作。

**重要**  
在您的叢集可用之後，系統就會按叢集作用中時間每個小時或部分小時計費 (即使您並未使用亦同)。若要停止此叢集產生費用，您必須將其刪除。請參閱 [在 ElastiCache 中刪除叢集](Clusters.Delete.md)。

**Topics**
+ [建立 Valkey 或 Redis OSS （停用叢集模式） 叢集 (ElastiCache API)](#Clusters.Create.API.Redis)
+ [在 Valkey 或 Redis OSS 中建立叢集 （啟用叢集模式） (ElastiCache API)](#Clusters.Create.API.RedisCluster)

### 建立 Valkey 或 Redis OSS （停用叢集模式） 叢集 (ElastiCache API)
<a name="Clusters.Create.API.Redis"></a>

下列程式碼會建立 Valkey 或 Redis OSS （停用叢集模式） 叢集 (ElastiCache API)。

加上分行符號的用意是便於閱讀。

```
https://elasticache.us-west-2.amazonaws.com/
    ?Action=CreateCacheCluster
    &CacheClusterId=my-cluster
    &CacheNodeType=cache.r4.large
    &CacheParameterGroup=default.redis3.2
    &Engine=redis
    &EngineVersion=3.2.4
    &NumCacheNodes=1
    &SignatureVersion=4       
    &SignatureMethod=HmacSHA256
    &SnapshotArns.member.1=arn%3Aaws%3As3%3A%3A%3AmyS3Bucket%2Fdump.rdb
    &Timestamp=20150508T220302Z
    &Version=2015-02-02
    &X-Amz-Algorithm=&AWS;4-HMAC-SHA256
    &X-Amz-Credential=<credential>
    &X-Amz-Date=20150508T220302Z
    &X-Amz-Expires=20150508T220302Z
    &X-Amz-SignedHeaders=Host
    &X-Amz-Signature=<signature>
```

### 在 Valkey 或 Redis OSS 中建立叢集 （啟用叢集模式） (ElastiCache API)
<a name="Clusters.Create.API.RedisCluster"></a>

無法使用 `CreateCacheCluster`操作建立 Valkey 或 Redis OSS （啟用叢集模式） 叢集 (API/CLI：複寫群組）。若要建立 Valkey 或 Redis OSS （啟用叢集模式） 叢集 (API/CLI：複寫群組），請參閱 [從頭開始在 Valkey 或 Redis OSS （啟用叢集模式） 中建立複寫群組 (ElastiCache API)](Replication.CreatingReplGroup.NoExistingCluster.Cluster.md#Replication.CreatingReplGroup.NoExistingCluster.Cluster.API)。

如需詳細資訊，請參閱 ElastiCache API 參考主題 [https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateReplicationGroup.html](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateReplicationGroup.html)。

# 為 Memcached 建立叢集
<a name="Clusters.Create-mc"></a>

下列範例示範如何使用AWS 管理主控台AWS CLI和 ElastiCache API 建立叢集。

## 建立 Memcached 叢集 (主控台)
<a name="Clusters.Create.CON.Memcached"></a>

使用 Memcached 引擎時，Amazon ElastiCache 支援將資料水平分割至多個節點。Memcached 可啟用自動探索功能，因此您不需要追蹤每個節點的端點。Memcached 可追蹤每個節點的端點，並隨著節點新增與移除節點而更新端點清單。您的應用程式只需要組態端點即可與叢集互動。

若要透過主控台建立 Memcached 叢集，請遵循[建立 Valkey （停用叢集模式） 叢集 （主控台）](Clusters.Create.md#Clusters.Create.CON.RedisCluster) 中的步驟。當您到達步驟五時，請選取**建立 Memcached 快取**。

一旦叢集的狀態變為*可用*，您就可以為其授予 Amazon EC2 存取權限、連線至叢集並開始使用叢集。如需詳細資訊，請參閱類似的步驟 [步驟 3。授權對叢集的存取](SubnetGroups.designing-cluster-pre.valkey.md#GettingStarted.AuthorizeAccess.valkey)和 [步驟 4. 連接至叢集的節點](SubnetGroups.designing-cluster-pre.valkey.md#GettingStarted.ConnectToCacheNode.valkey)。

**重要**  
在您的叢集可用之後，系統就會按叢集作用中時間每個小時或部分小時計費 (即使您並未主動使用亦同)。若要停止此叢集產生費用，您必須將其刪除。請參閱 [在 ElastiCache 中刪除叢集](Clusters.Delete.md)。

## 建立叢集 (AWS CLI)
<a name="Clusters.Create.CLI.memcached-intro"></a>

若要使用 建立叢集AWS CLI，請使用 `create-cache-cluster`命令。

**重要**  
在您的叢集可用之後，系統就會按叢集作用中時間每個小時或部分小時計費 (即使您並未主動使用亦同)。若要停止此叢集產生費用，您必須將其刪除。請參閱 [在 ElastiCache 中刪除叢集](Clusters.Delete.md)。

### 建立 Memcached 快取叢集 (AWS CLI)
<a name="Clusters.Create.CLI.Memcached"></a>

下列 CLI 程式碼會建立具有 3 個節點的 Memcached 叢集。

針對 Linux、macOS 或 Unix：

```
aws elasticache create-cache-cluster \
--cache-cluster-id my-cluster \
--cache-node-type cache.r4.large \
--engine memcached \
--engine-version 1.4.24 \
--cache-parameter-group default.memcached1.4 \
--num-cache-nodes 3
```

針對 Windows：

```
aws elasticache create-cache-cluster ^
--cache-cluster-id my-cluster ^
--cache-node-type cache.r4.large ^
--engine memcached ^
--engine-version 1.4.24 ^
--cache-parameter-group default.memcached1.4 ^
--num-cache-nodes 3
```

## 建立 Memcached 的叢集 (ElastiCache API)
<a name="Clusters.Create.API.mem-heading"></a>

若要使用 ElastiCache API 建立叢集，請使用 `CreateCacheCluster` 動作。

**重要**  
在您的叢集可用之後，系統就會按叢集作用中時間每個小時或部分小時計費 (即使您並未使用亦同)。若要停止此叢集產生費用，您必須將其刪除。請參閱 [在 ElastiCache 中刪除叢集](Clusters.Delete.md)。

**Topics**
+ [建立 Memcached 叢集 (ElastiCache API)](#Clusters.Create.API.Memcached)

### 建立 Memcached 叢集 (ElastiCache API)
<a name="Clusters.Create.API.Memcached"></a>

下列程式碼會建立含 3 個節點的 Memcached 叢集 (ElastiCache API)。

加上分行符號的用意是便於閱讀。

```
https://elasticache.us-west-2.amazonaws.com/
    ?Action=CreateCacheCluster
    &CacheClusterId=my-cluster
    &CacheNodeType=cache.r4.large
    &Engine=memcached
    &NumCacheNodes=3
    &SignatureVersion=4       
    &SignatureMethod=HmacSHA256
    &Timestamp=20150508T220302Z
    &Version=2015-02-02
    &X-Amz-Algorithm=&AWS;4-HMAC-SHA256
    &X-Amz-Credential=<credential>
    &X-Amz-Date=20150508T220302Z
    &X-Amz-Expires=20150508T220302Z
    &X-Amz-SignedHeaders=Host
    &X-Amz-Signature=<signature>
```

# 檢視 ElastiCache 叢集的詳細資訊
<a name="Clusters.ViewDetails"></a>

您可以使用 ElastiCache 主控台或 AWS CLI ElastiCache API 檢視一或多個叢集的詳細資訊。

## 檢視 Memcached 叢集的詳細資訊 （主控台）
<a name="Clusters.ViewDetails.CON.Memcached"></a>

您可以使用 ElastiCache 主控台、 AWS CLI 適用於 ElastiCache 的 或 ElastiCache API 檢視 Memcached 叢集的詳細資訊。

下列程序詳細說明如何使用 ElastiCache 主控台來檢視 Memcached 叢集的詳細資訊。

**檢視 Memcached 叢集的詳細資訊**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)：// 開啟 Amazon ElastiCache 主控台。

1. 從右上角的清單中，選擇您感興趣的 AWS 區域。

1. 在 ElastiCache 引擎儀表板中，選擇 **Memcached**。這樣做會顯示 Memcached 引擎上執行的所有叢集清單。

1. 若要查看叢集的詳細資訊，請選擇叢集名稱左側的方塊。

1. 若要檢視節點資訊，請選擇 **Nodes** (節點) 標籤，此標籤會顯示節點狀態和端點的相關資訊。

1. 若要檢視指標，請選擇 **Metrics** (指標) 標籤，此標籤會顯示叢集中所有節點的相關指標。如需詳細資訊，請參閱[使用 CloudWatch 指標監控用量](CacheMetrics.md)

1. 選擇 **Network and security** (網路和安全性) 標籤，以檢視叢集的網路連線、子網路群組組態以及 VPC 安全群組的詳細資訊。如需詳細資訊，請參閱[子網路和子網路群組](SubnetGroups.md)。

1. 選擇 **Maintenance** (維護) 標籤，以檢視叢集維護設定的詳細資訊。如需詳細資訊，請參閱[管理 ElastiCache 叢集維護](maintenance-window.md)。

1. 選擇 **Tags** (標籤) 標籤，以檢視套用至叢集資源的任何標籤詳細資訊。如需詳細資訊，請參閱[為您的 ElastiCache 資源加上標籤](Tagging-Resources.md)。

## 檢視 Valkey 或 Redis OSS （停用叢集模式） 詳細資訊 （主控台）
<a name="Clusters.ViewDetails.CON.Redis"></a>

您可以使用 ElastiCache 主控台、 AWS CLI 適用於 ElastiCache 的 或 ElastiCache API，檢視 Valkey 或 Redis OSS （停用叢集模式） 叢集的詳細資訊。

下列程序詳細說明如何使用 ElastiCache 主控台檢視 Valkey 或 Redis OSS （停用叢集模式） 叢集的詳細資訊。

**檢視 Valkey 或 Redis OSS （停用叢集模式） 叢集的詳細資訊**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)：// 開啟 Amazon ElastiCache 主控台。

1. 在 ElastiCache 引擎儀表板中，選擇 **Valkey** 或 **Redis OSS** 以顯示在該引擎上執行的所有叢集清單。

1. 要查看叢集的詳細資訊，請選擇叢集名稱左側的核取方塊。請務必選取執行 Valkey 或 Redis OSS 引擎的叢集，而非叢集 Valkey 或叢集 Redis OSS。這會顯示叢集的詳細資訊，包括叢集的主端點。

1. 檢視節點資訊：

   1. 選擇叢集名稱。

   1. 選擇 **Shards and nodes** (碎片和節點) 標籤。這會顯示各節點的詳細資訊，包括您必須用來讀取叢集的節點之端點。

1. 若要檢視指標，請選擇 **Metrics** (指標) 標籤，此標籤會顯示叢集中所有節點的相關指標。如需詳細資訊，請參閱[使用 CloudWatch 指標監控用量](CacheMetrics.md)

1. 若要檢視日誌，請選擇 **Logs** (日誌) 標籤，此標籤會指出叢集是否使用慢速日誌或引擎日誌，並提供相關詳細資訊。如需詳細資訊，請參閱[日誌傳送](Log_Delivery.md)。

1. 選擇 **Network and security** (網路和安全性) 標籤，以檢視叢集網路連線和子網路群組組態的詳細資訊。如需詳細資訊，請參閱[子網路和子網路群組](SubnetGroups.md)。

1. 選擇 **Maintenance** (維護) 標籤，以檢視叢集維護設定的詳細資訊。如需詳細資訊，請參閱[管理 ElastiCache 叢集維護](maintenance-window.md)。

1. 選擇 **Service updates** (服務更新) 標籤，以檢視任何可用的服務更新詳細資訊，以及其建議套用日期。如需詳細資訊，請參閱[ElastiCache 中的服務更新](Self-Service-Updates.md)。

1. 選擇 **Tags** (標籤) 標籤，以檢視套用至叢集資源的任何標籤詳細資訊。如需詳細資訊，請參閱[為您的 ElastiCache 資源加上標籤](Tagging-Resources.md)。

## 檢視 Valkey 或 Redis OSS （啟用叢集模式） 叢集 （主控台） 的詳細資訊
<a name="Clusters.ViewDetails.CON.RedisCluster"></a>

您可以使用 ElastiCache 主控台、 AWS CLI 適用於 ElastiCache 的 或 ElastiCache API，檢視 Valkey 或 Redis OSS （啟用叢集模式） 叢集的詳細資訊。

下列程序詳細說明如何使用 ElastiCache 主控台檢視 Valkey 或 Redis OSS （啟用叢集模式） 叢集的詳細資訊。

**檢視 Valkey 或 Redis OSS （啟用叢集模式） 叢集的詳細資訊**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)：// 開啟 Amazon ElastiCache 主控台。

1. 從右上角的清單中，選擇您感興趣的 AWS 區域。

1. 在 ElastiCache 引擎儀表板中，選擇 **Valkey** 或 **Redis OSS**，以顯示在該引擎上執行的所有叢集清單。

1. 若要查看 Valkey 或 Redis OSS （啟用叢集模式） 叢集的詳細資訊，請選擇叢集名稱左側的方塊。請務必選擇執行 Valkey 或叢集 Redis OSS 引擎的叢集。

   叢集下方會展開一個畫面，並顯示叢集的詳細資訊，包括叢集的組態端點。

1. 若要查看叢集碎片的清單，以及每個碎片的節點數，請選擇 **Shards and nodes** (碎片與節點) 標籤。

1. 若要檢視節點的特定資訊：

   1. 選擇碎片的 ID。

     這麼做會顯示每個節點的資訊，包括您要用來讀取叢集資料之每個節點的端點。

1. 若要檢視指標，請選擇 **Metrics** (指標) 標籤，此標籤會顯示叢集中所有節點的相關指標。如需詳細資訊，請參閱[使用 CloudWatch 指標監控用量](CacheMetrics.md)

1. 若要檢視日誌，請選擇 **Logs** (日誌) 標籤，此標籤會指出叢集是否使用慢速日誌或引擎日誌，並提供相關詳細資訊。如需詳細資訊，請參閱[日誌傳送](Log_Delivery.md)。

1. 選擇 **Network and security** (網路和安全性) 標籤，以檢視叢集的網路連線、子網路群組組態、VPC 安全群組的詳細資訊，以及 (如果有) 叢集上啟用的加密方式。如需詳細資訊，請參閱[子網路和子網路群組](SubnetGroups.md)及[Amazon ElastiCache 的資料安全性](encryption.md)。

1. 選擇 **Maintenance** (維護) 標籤，以檢視叢集維護設定的詳細資訊。如需詳細資訊，請參閱[管理 ElastiCache 叢集維護](maintenance-window.md)。

1. 選擇 **Service updates** (服務更新) 標籤，以檢視任何可用的服務更新詳細資訊，以及其建議套用日期。如需詳細資訊，請參閱[ElastiCache 中的服務更新](Self-Service-Updates.md)。

1. 選擇 **Tags** (標籤) 標籤，以檢視套用至叢集資源的任何標籤詳細資訊。如需詳細資訊，請參閱[為您的 ElastiCache 資源加上標籤](Tagging-Resources.md)。

## 檢視 ElastiCache 叢集的詳細資訊 (AWS CLI)
<a name="Clusters.ViewDetails.CLI"></a>

以下程式碼會列出 *my-cluster* 的詳細資訊：

```
aws elasticache describe-cache-clusters --cache-cluster-id my-cluster
```

如果使用 `create-cache-cluster` 指令所建立的叢集有 1 個快取節點和 0 碎片，將 *my-cluster* 取代為您的叢集名稱。

```
{
    "CacheClusters": [
        {
            "CacheClusterStatus": "available",
            "SecurityGroups": [
                {
                    "Status": "active",
                    "SecurityGroupId": "sg-dbe93fa2"
                }
            ],
            "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:",
            "Engine": "redis",
            "PreferredMaintenanceWindow": "wed:12:00-wed:13:00",
            "CacheSubnetGroupName": "default",
            "SnapshotWindow": "08:30-09:30",
            "TransitEncryptionEnabled": false,
            "AtRestEncryptionEnabled": false,
            "CacheClusterId": "my-cluster1",
            "CacheClusterCreateTime": "2018-02-26T21:06:43.420Z",
            "PreferredAvailabilityZone": "us-west-2c",
            "AuthTokenEnabled": false,
            "PendingModifiedValues": {},
            "CacheNodeType": "cache.r4.large",
           "DataTiering": "disabled",
            "CacheParameterGroup": {
                "CacheNodeIdsToReboot": [],
                "ParameterApplyStatus": "in-sync",
                "CacheParameterGroupName": "default.redis3.2"
            },
            "SnapshotRetentionLimit": 0,
            "AutoMinorVersionUpgrade": true,
            "EngineVersion": "3.2.10",
            "CacheSecurityGroups": [],
            "NumCacheNodes": 1
        }
```

```
{
    "CacheClusters": [
        {
            "SecurityGroups": [
                {
                    "Status": "active",
                    "SecurityGroupId": "sg-dbe93fa2"
                }
            ],
            "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:",
            "AuthTokenEnabled": false,
            "CacheSubnetGroupName": "default",
            "SnapshotWindow": "12:30-13:30",
            "AutoMinorVersionUpgrade": true,
            "CacheClusterCreateTime": "2018-02-26T21:13:24.250Z",
            "CacheClusterStatus": "available",
            "AtRestEncryptionEnabled": false,
            "PreferredAvailabilityZone": "us-west-2a",
            "TransitEncryptionEnabled": false,
            "ReplicationGroupId": "my-cluster2",
            "Engine": "redis",
            "PreferredMaintenanceWindow": "sun:08:30-sun:09:30",
            "CacheClusterId": "my-cluster2-001",
            "PendingModifiedValues": {},
            "CacheNodeType": "cache.r4.large",
            "DataTiering": "disabled",
            "CacheParameterGroup": {
                "CacheNodeIdsToReboot": [],
                "ParameterApplyStatus": "in-sync",
                "CacheParameterGroupName": "default.redis6.x"
            },
            "SnapshotRetentionLimit": 0,
            "EngineVersion": "6.0",
            "CacheSecurityGroups": [],
            "NumCacheNodes": 1
        },
        {
            "SecurityGroups": [
                {
                    "Status": "active",
                    "SecurityGroupId": "sg-dbe93fa2"
                }
            ],
            "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:",
            "AuthTokenEnabled": false,
            "CacheSubnetGroupName": "default",
            "SnapshotWindow": "12:30-13:30",
            "AutoMinorVersionUpgrade": true,
            "CacheClusterCreateTime": "2018-02-26T21:13:24.250Z",
            "CacheClusterStatus": "available",
            "AtRestEncryptionEnabled": false,
            "PreferredAvailabilityZone": "us-west-2b",
            "TransitEncryptionEnabled": false,
            "ReplicationGroupId": "my-cluster2",
            "Engine": "redis",
            "PreferredMaintenanceWindow": "sun:08:30-sun:09:30",
            "CacheClusterId": "my-cluster2-002",
            "PendingModifiedValues": {},
            "CacheNodeType": "cache.r4.large",
            "DataTiering": "disabled",
            "CacheParameterGroup": {
                "CacheNodeIdsToReboot": [],
                "ParameterApplyStatus": "in-sync",
                "CacheParameterGroupName": "default.redis6.x"
            },
            "SnapshotRetentionLimit": 0,
            "EngineVersion": "6.0",
            "CacheSecurityGroups": [],
            "NumCacheNodes": 1
        },
        {
            "SecurityGroups": [
                {
                    "Status": "active",
                    "SecurityGroupId": "sg-dbe93fa2"
                }
            ],
            "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:",
            "AuthTokenEnabled": false,
            "CacheSubnetGroupName": "default",
            "SnapshotWindow": "12:30-13:30",
            "AutoMinorVersionUpgrade": true,
            "CacheClusterCreateTime": "2018-02-26T21:13:24.250Z",
            "CacheClusterStatus": "available",
            "AtRestEncryptionEnabled": false,
            "PreferredAvailabilityZone": "us-west-2c",
            "TransitEncryptionEnabled": false,
            "ReplicationGroupId": "my-cluster2",
            "Engine": "redis",
            "PreferredMaintenanceWindow": "sun:08:30-sun:09:30",
            "CacheClusterId": "my-cluster2-003",
            "PendingModifiedValues": {},
            "CacheNodeType": "cache.r4.large",
            "DataTiering": "disabled",
            "CacheParameterGroup": {
                "CacheNodeIdsToReboot": [],
                "ParameterApplyStatus": "in-sync",
                "CacheParameterGroupName": "default.redis3.2"
            },
            "SnapshotRetentionLimit": 0,
            "EngineVersion": "3.2.10",
            "CacheSecurityGroups": [],
            "NumCacheNodes": 1
        }
```

```
{
    "CacheClusters": [
        {
            "SecurityGroups": [
                {
                    "Status": "active",
                    "SecurityGroupId": "sg-dbe93fa2"
                }
            ],
            "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:",
            "AuthTokenEnabled": true,
            "CacheSubnetGroupName": "default",
            "SnapshotWindow": "12:30-13:30",
            "AutoMinorVersionUpgrade": true,
            "CacheClusterCreateTime": "2018-02-26T21:17:01.439Z",
            "CacheClusterStatus": "available",
            "AtRestEncryptionEnabled": true,
            "PreferredAvailabilityZone": "us-west-2a",
            "TransitEncryptionEnabled": true,
            "ReplicationGroupId": "my-cluster3",
            "Engine": "redis",
            "PreferredMaintenanceWindow": "thu:11:00-thu:12:00",
            "CacheClusterId": "my-cluster3-0001-001",
            "PendingModifiedValues": {},
            "CacheNodeType": "cache.r4.large",
            "DataTiering": "disabled",
            "CacheParameterGroup": {
                "CacheNodeIdsToReboot": [],
                "ParameterApplyStatus": "in-sync",
                "CacheParameterGroupName": "default.redis6.x.cluster.on"
            },
            "SnapshotRetentionLimit": 0,
            "EngineVersion": "6.0",
            "CacheSecurityGroups": [],
            "NumCacheNodes": 1
        },
        {
            "SecurityGroups": [
                {
                    "Status": "active",
                    "SecurityGroupId": "sg-dbe93fa2"
                }
            ],
            "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:",
            "AuthTokenEnabled": true,
            "CacheSubnetGroupName": "default",
            "SnapshotWindow": "12:30-13:30",
            "AutoMinorVersionUpgrade": true,
            "CacheClusterCreateTime": "2018-02-26T21:17:01.439Z",
            "CacheClusterStatus": "available",
            "AtRestEncryptionEnabled": true,
            "PreferredAvailabilityZone": "us-west-2b",
            "TransitEncryptionEnabled": true,
            "ReplicationGroupId": "my-cluster3",
            "Engine": "redis",
            "PreferredMaintenanceWindow": "thu:11:00-thu:12:00",
            "CacheClusterId": "my-cluster3-0001-002",
            "PendingModifiedValues": {},
            "CacheNodeType": "cache.r4.large",
             "DataTiering": "disabled",
            "CacheParameterGroup": {
                "CacheNodeIdsToReboot": [],
                "ParameterApplyStatus": "in-sync",
                "CacheParameterGroupName": "default.redis3.2.cluster.on"
            },
            "SnapshotRetentionLimit": 0,
            "EngineVersion": "3.2.6",
            "CacheSecurityGroups": [],
            "NumCacheNodes": 1
        },
        {
            "SecurityGroups": [
                {
                    "Status": "active",
                    "SecurityGroupId": "sg-dbe93fa2"
                }
            ],
            "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:",
            "AuthTokenEnabled": true,
            "CacheSubnetGroupName": "default",
            "SnapshotWindow": "12:30-13:30",
            "AutoMinorVersionUpgrade": true,
            "CacheClusterCreateTime": "2018-02-26T21:17:01.439Z",
            "CacheClusterStatus": "available",
            "AtRestEncryptionEnabled": true,
            "PreferredAvailabilityZone": "us-west-2c",
            "TransitEncryptionEnabled": true,
            "ReplicationGroupId": "my-cluster3",
            "Engine": "redis",
            "PreferredMaintenanceWindow": "thu:11:00-thu:12:00",
            "CacheClusterId": "my-cluster3-0001-003",
            "PendingModifiedValues": {},
            "CacheNodeType": "cache.r4.large",
             "DataTiering": "disabled",
            "CacheParameterGroup": {
                "CacheNodeIdsToReboot": [],
                "ParameterApplyStatus": "in-sync",
                "CacheParameterGroupName": "default.redis6.x.cluster.on"
            },
            "SnapshotRetentionLimit": 0,
            "EngineVersion": "6.0",
            "CacheSecurityGroups": [],
            "NumCacheNodes": 1
        },
        {
            "SecurityGroups": [
                {
                    "Status": "active",
                    "SecurityGroupId": "sg-dbe93fa2"
                }
            ],
            "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:",
            "AuthTokenEnabled": true,
            "CacheSubnetGroupName": "default",
            "SnapshotWindow": "12:30-13:30",
            "AutoMinorVersionUpgrade": true,
            "CacheClusterCreateTime": "2018-02-26T21:17:01.439Z",
            "CacheClusterStatus": "available",
            "AtRestEncryptionEnabled": true,
            "PreferredAvailabilityZone": "us-west-2b",
            "TransitEncryptionEnabled": true,
            "ReplicationGroupId": "my-cluster3",
            "Engine": "redis",
            "PreferredMaintenanceWindow": "thu:11:00-thu:12:00",
            "CacheClusterId": "my-cluster3-0002-001",
            "PendingModifiedValues": {},
            "CacheNodeType": "cache.r4.large",
             "DataTiering": "disabled",
            "CacheParameterGroup": {
                "CacheNodeIdsToReboot": [],
                "ParameterApplyStatus": "in-sync",
                "CacheParameterGroupName": "default.redis6.x.cluster.on"
            },
            "SnapshotRetentionLimit": 0,
            "EngineVersion": "6.0",
            "CacheSecurityGroups": [],
            "NumCacheNodes": 1
        },
        {
            "SecurityGroups": [
                {
                    "Status": "active",
                    "SecurityGroupId": "sg-dbe93fa2"
                }
            ],
            "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:",
            "AuthTokenEnabled": true,
            "CacheSubnetGroupName": "default",
            "SnapshotWindow": "12:30-13:30",
            "AutoMinorVersionUpgrade": true,
            "CacheClusterCreateTime": "2018-02-26T21:17:01.439Z",
            "CacheClusterStatus": "available",
            "AtRestEncryptionEnabled": true,
            "PreferredAvailabilityZone": "us-west-2c",
            "TransitEncryptionEnabled": true,
            "ReplicationGroupId": "my-cluster3",
            "Engine": "redis",
            "PreferredMaintenanceWindow": "thu:11:00-thu:12:00",
            "CacheClusterId": "my-cluster3-0002-002",
            "PendingModifiedValues": {},
            "CacheNodeType": "cache.r4.large",
             "DataTiering": "disabled",
            "CacheParameterGroup": {
                "CacheNodeIdsToReboot": [],
                "ParameterApplyStatus": "in-sync",
                "CacheParameterGroupName": "default.redis3.2.cluster.on"
            },
            "SnapshotRetentionLimit": 0,
            "EngineVersion": "3.2.6",
            "CacheSecurityGroups": [],
            "NumCacheNodes": 1
        },
        {
            "SecurityGroups": [
                {
                    "Status": "active",
                    "SecurityGroupId": "sg-dbe93fa2"
                }
            ],
            "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:",
            "AuthTokenEnabled": true,
            "CacheSubnetGroupName": "default",
            "SnapshotWindow": "12:30-13:30",
            "AutoMinorVersionUpgrade": true,
            "CacheClusterCreateTime": "2018-02-26T21:17:01.439Z",
            "CacheClusterStatus": "available",
            "AtRestEncryptionEnabled": true,
            "PreferredAvailabilityZone": "us-west-2a",
            "TransitEncryptionEnabled": true,
            "ReplicationGroupId": "my-cluster3",
            "Engine": "redis",
            "PreferredMaintenanceWindow": "thu:11:00-thu:12:00",
            "CacheClusterId": "my-cluster3-0002-003",
            "PendingModifiedValues": {},
            "CacheNodeType": "cache.r4.large",
             "DataTiering": "disabled",
            "CacheParameterGroup": {
                "CacheNodeIdsToReboot": [],
                "ParameterApplyStatus": "in-sync",
                "CacheParameterGroupName": "default.redis6.x.cluster.on"
            },
            "SnapshotRetentionLimit": 0,
            "EngineVersion": "6.0",
            "CacheSecurityGroups": [],
            "NumCacheNodes": 1
        }
    ]
}
```

如果使用 AWS 管理主控台 （啟用或停用具有 1 個或更多碎片的叢集節點） 建立叢集，請使用下列命令來描述叢集的詳細資訊 （將 *my-cluster* 取代為複寫群組的名稱 （叢集的名稱）：

```
aws elasticache describe-replication-groups --replication-group-id my-cluster 
```

如需詳細資訊，請參閱適用於 ElastiCache AWS CLI 的 主題[https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-cache-clusters.html](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-cache-clusters.html)。

## 檢視 ElastiCache 叢集的詳細資訊 (ElastiCache API)
<a name="Clusters.ViewDetails.API"></a>

您可以使用 ElastiCache API `DescribeCacheClusters` 動作來檢視叢集的詳細資訊。如果包含 `CacheClusterId` 參數，則會傳回指定叢集的詳細資訊。如果省略 `CacheClusterId` 參數，則會傳回最多 `MaxRecords` 個叢集 (預設值為 100) 的詳細資訊。`MaxRecords` 的值不可小於 20 或大於 100。

以下程式碼會列出 `my-cluster` 的詳細資訊。

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=DescribeCacheClusters
   &CacheClusterId=my-cluster
   &Version=2015-02-02
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &X-Amz-Credential=<credential>
```

以下程式碼清單會列出最多 25 個叢集的詳細資訊。

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=DescribeCacheClusters
   &MaxRecords=25
   &Version=2015-02-02
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &X-Amz-Credential=<credential>
```

如需詳細資訊，請參閱 ElastiCache API 參考主題 [https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeCacheClusters.html](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeCacheClusters.html)。

# 修改 ElastiCache 叢集
<a name="Clusters.Modify"></a>

除了從 ElastiCache 叢集新增或移除節點之外，有時您可能需要進行其他變更，例如新增安全群組、變更維護時段或參數群組。

建議您將維護時段落在使用量最低的時段。您可能需要不時進行調整。

當變更叢集的參數時，變更即會立即套用至叢集，或在叢集重新啟動之後套用。無論是變更叢集的參數群組本身或是叢集的參數群組內的參數值，均適用此情況。若要判斷何時套用特定參數變更，請參閱 [Memcached 專用參數](ParameterGroups.Engine.md#ParameterGroups.Memcached)和 資料表中**詳細資訊**欄**的變更生效**一節[Valkey 和 Redis OSS 參數](ParameterGroups.Engine.md#ParameterGroups.Redis)。如需重新啟動叢集節點的資訊，請參閱[重新啟動節點](nodes.rebooting.md)。

## 使用 ElastiCache AWS 管理主控台
<a name="Clusters.Modify.CON"></a>

**修改叢集**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/) 開啟 ElastiCache 主控台。

1. 從右上角的清單中，選擇您要修改的叢集所在的 AWS 區域。

1. 在導覽窗格中，選擇您要修改之叢集所執行的引擎。

   接著會出現所選引擎的叢集清單。

1. 在叢集清單中，針對您要修改的叢集，選擇其名稱。

1. 選擇 **Actions (動作)**，然後選擇 **Modify (修改)**。

   **Modify Cluster (修改叢集)** 視窗隨即出現。

1. 在 **Modify Cluster (修改叢集)** 視窗中，進行所需的修改。選項包括：
   + 描述
   + 叢集模式 – 若要將叢集模式從**停用**修改為**啟用**，您必須先將叢集模式設定為**相容**。

     相容模式可讓您的 Valkey 或 Redis OSS 用戶端使用啟用叢集模式和停用叢集模式進行連線。遷移所有 Valkey 或 Redis OSS 用戶端以使用啟用的叢集模式後，您就可以完成叢集模式組態，並將叢集模式設定為**已啟用**。
   + 引擎版本相容性
**重要**  
您可以升級到較新的引擎版本。如果您升級主要引擎版本 (例如從 5.0.6 升級到 6.0)，則需要選取與新引擎版本相容的參數群組系列。如需這項作業的詳細資訊，請參閱[ElastiCache 的版本管理](VersionManagement.md)。不過，您無法降級至舊版引擎，除非您刪除現有的叢集，並重新建立叢集。
   + VPC 安全群組
   + 參數群組
   + 節點類型
**注意**  
如果叢集使用 r6gd 系列中的節點類型，則只能從該系列中選擇不同的節點大小。如果從 r6gd 系列中選擇節點類型，則將自動啟用資料分層。如需詳細資訊，請參閱[資料分層](data-tiering.md)。
   + Multi-AZ
   + 自動容錯移轉 (僅適用於停用叢集模式)
   + 啟用自動備份
   + 備份節點 ID
   + 備份保留期間
   + 備份時段
   + SNS 通知的主題
   + Memcached 引擎版本相容性
   + Network type (網路類型)
**注意**  
如果您要從 IPv4 切換到 IPv6，則須選取或建立與 IPv6 相容的子網路群組。如需詳細資訊，請參閱[在 ElastiCache 中選擇網路類型](network-type.md)。
   + VPC 安全群組
   + 參數群組
   + 維護時段
   + SNS 通知的主題

   「**立即套用**」方塊僅適用於引擎版本和節點類型修改。若要立即套用變更，請選擇 **Apply Immediately (立即套用)** 核取方塊。如果未選擇此方塊，引擎版本的修改將於下次維護時段套用。其他修改 (例如變更維護時段) 則會立即套用。

**啟用/停用 Redis 的日誌交付**

1. 從叢集清單中選擇您要修改的叢集。請選擇**叢集名稱**而不是名稱旁邊的核取方塊。

1. 在**叢集詳細資訊**頁面上，選擇**日誌**索引標籤。

1. 若要啟用或停用慢速日誌，請選擇**啟用或停用******。

   如果您選擇 Enable (啟用)：

   1. 在 **Log format** (日誌格式) 下，選擇 **JSON** 或 **Text** (文字)。

   1. 在 **Log destination type** (日誌目的地類型) 下，選擇 **CloudWatch Logs** 或 **Kinesis Firehose**。

   1. 在**日誌目的地**下，您可以選擇**建立新的** ，然後輸入您的 CloudWatchLogs 日誌群組名稱或 Kinesis Data Firehose 串流名稱。您也可以選擇**選取現有**，然後選擇 CloudWatchLogs 日誌群組名稱或 Kinesis Data Firehose 串流名稱。

   1. 選擇 **啟用** 。

**若要變更 Redis 的組態：**

1. 選擇 **Modify** (修改)。

1. 在 **Log format** (日誌格式) 下，選擇 **JSON** 或 **Text** (文字)。

1. 在 **Destination Type (目的地類型)** 下，選擇 **CloudWatch Logs** 或 **Kinesis Firehose**。

1. 在 **Log destination** (日誌目的地) 下，選擇 **Create new** (新建)，然後輸入您的 CloudWatchLogs 日誌群組名稱或 Kinesis Data Firehose 串流名稱。或是選擇 **Select existing** (選取現有)，然後選擇您的 CloudWatchLogs 日誌群組名稱或 Kinesis Data Firehose 串流名稱。

## AWS CLI 搭配 ElastiCache 使用
<a name="Clusters.Modify.CLI"></a>

您可以使用 操作修改現有的叢集 AWS CLI `modify-cache-cluster`。若要修改叢集的組態值，請指定叢集 ID、要變更的參數以及參數的新值。下方範例會變更名稱為 `my-cluster` 之叢集的維護時段，並立即套用變更。

**重要**  
您可以升級至較新的 Memcached 引擎版本。如需這項作業的詳細資訊，請參閱[ElastiCache 的版本管理](VersionManagement.md)。不過，您無法降級至舊版引擎，除非您刪除現有的叢集，並重新建立叢集。

**重要**  
您可以升級至較新的 Valkey 或 Redis OSS 引擎版本。如果您將主要引擎版本升級，例如從 Redis OSS 5.0.6 升級至 Redis OSS 6.0，則需要選取與新引擎版本相容的參數群組系列。如需這項作業的詳細資訊，請參閱[ElastiCache 的版本管理](VersionManagement.md)。不過，您無法降級至舊版引擎，除非您刪除現有的叢集，並重新建立叢集。

若為 Linux、macOS 或 Unix：

```
aws elasticache modify-cache-cluster \
    --cache-cluster-id my-cluster \
    --preferred-maintenance-window sun:23:00-mon:02:00
```

針對 Windows：

```
aws elasticache modify-cache-cluster ^
    --cache-cluster-id my-cluster ^
    --preferred-maintenance-window sun:23:00-mon:02:00
```

`--apply-immediately` 參數僅適用於節點類型、引擎版本和叢集節點數的修改。如果您要立即套用其中任何變更，請使用 `--apply-immediately` 參數。如果您想將這些變更延期至下一個維護時段，請使用 `--no-apply-immediately` 參數。其他修改 (例如變更維護時段) 則會立即套用。

如需詳細資訊，請參閱適用於 ElastiCache AWS CLI 的 主題[https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-cache-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-cache-cluster.html)。

## 使用 ElastiCache API
<a name="Clusters.Modify.API"></a>

您可以使用 ElastiCache API `ModifyCacheCluster` 作業修改現有的叢集。若要修改叢集的組態值，請指定叢集 ID、要變更的參數以及參數的新值。下方範例會變更名稱為 `my-cluster` 之叢集的維護時段，並立即套用變更。

**重要**  
您可以升級至較新的 Memcached 引擎版本。如需這項作業的詳細資訊，請參閱[ElastiCache 的版本管理](VersionManagement.md)。不過，您無法降級至舊版引擎，除非您刪除現有的叢集，並重新建立叢集。

**重要**  
您可以升級至較新的 Valkey 或 Redis OSS 引擎版本。如果您將主要引擎版本升級，例如從 Redis OSS 5.0.6 升級至 Redis OSS 6.0，則需要選取與新引擎版本相容的參數群組系列。如需這項作業的詳細資訊，請參閱[ElastiCache 的版本管理](VersionManagement.md)。不過，您無法降級至舊版引擎，除非您刪除現有的叢集，並重新建立叢集。

加上分行符號的用意是便於閱讀。

```
https://elasticache.us-west-2.amazonaws.com/
    ?Action=ModifyCacheCluster
    &CacheClusterId=my-cluster
    &PreferredMaintenanceWindow=sun:23:00-mon:02:00
    &SignatureVersion=4
    &SignatureMethod=HmacSHA256
    &Timestamp=20150901T220302Z
    &X-Amz-Algorithm=&AWS;4-HMAC-SHA256
    &X-Amz-Date=20150202T220302Z
    &X-Amz-SignedHeaders=Host
    &X-Amz-Expires=20150901T220302Z
    &X-Amz-Credential=<credential>
    &X-Amz-Signature=<signature>
```

`ApplyImmediately` 參數僅適用於節點類型、引擎版本和叢集節點數的修改。如果您要立即套用其中任何變更，請將 `ApplyImmediately` 參數設為 `true`。如果您想將這些變更延期至下一個維護時段，請將 `ApplyImmediately` 參數設為 `false`。其他修改 (例如變更維護時段) 則會立即套用。

如需詳細資訊，請參閱 ElastiCache API 參考主題 [https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheCluster.html](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheCluster.html)。

# 將節點新增至 ElastiCache 叢集
<a name="Clusters.AddNode"></a>

將節點新增至 Memcached 叢集會增加叢集分割區的數量。當您變更叢集中的分割區數量時，您必須重新對應一些鍵空間，以讓它們對應到正確的節點。重新對應鍵空間時，會暫時增加叢集的快取未命中數。如需詳細資訊，請參閱[設定 ElastiCache 用戶端以實現高效率的負載平衡 (Memcached)](BestPractices.LoadBalancing.md)。

若要重新設定您的 Valkey 或 Redis OSS （啟用叢集模式） 叢集，請參閱 [擴展 Valkey 或 Redis OSS （啟用叢集模式） 叢集](scaling-redis-cluster-mode-enabled.md)

您可以使用 ElastiCache 管理主控台、AWS CLI或 ElastiCache API 將節點新增至叢集。

## 使用 ElastiCache AWS 管理主控台
<a name="Clusters.AddNode.CON"></a>

如果您想要將節點新增至單一節點 Valkey 或 Redis OSS （停用叢集模式） 叢集 （未啟用複寫），則這是一個兩步驟的程序：首先新增複寫，然後新增複本節點。

**主題**
+ [將複寫新增至沒有碎片的 Valkey 或 Redis OSS 叢集](#AddReplication.CON)
+ [將節點新增至 ElastiCache 叢集 （主控台）](#AddNode.CON)

下列程序會將複寫新增至未啟用複寫的單一節點 Valkey 或 Redis OSS。當您新增複寫時，現有節點會變成已啟用複寫之叢集中的主要節點。新增複寫之後，您即可新增最多 5 個複本節點至該叢集。<a name="AddReplication.CON"></a>

**將複寫新增至沒有碎片的 Valkey 或 Redis OSS 叢集**

1. 登入AWS 管理主控台並開啟位於 https：//[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/) 的 ElastiCache 主控台。

1. 從導覽窗格中，選擇 **Valkey 叢集**或 **Redis OSS 叢集**。

   隨即顯示執行該引擎的叢集清單。

1. 選擇您要為其新增節點的叢集名稱，而非叢集名稱左側的方塊。

   下列適用於未啟用複寫的 Redis OSS 叢集：
   + 它正在執行 Redis OSS，而非叢集 Redis OSS。
   + 它具有零個碎片。

     如果叢集有任何碎片，該叢集就已經啟用複寫，因此您可以繼續 [將節點新增至 ElastiCache 叢集 （主控台）](#AddNode.CON)。

1. 選擇 **Add replication (新增複寫)**。

1. 在 **Add Replication (新增複寫)** 中，為這個已啟用複寫的叢集輸入說明。

1. 選擇**新增**。

   只要叢集的狀態回到*「可用」*，您就可以繼續下一個程序並新增複本至叢集。<a name="AddNode.CON"></a>

**將節點新增至 ElastiCache 叢集 （主控台）**

下列程序可用來將節點新增至叢集。

1. 登入AWS 管理主控台並開啟位於 https：//[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/) 的 ElastiCache 主控台。

1. 在導覽窗格中，選擇您要為其新增節點之叢集所執行的引擎。

   接著會出現執行所選引擎的叢集清單。

1. 從叢集清單中，針對您要新增節點的叢集，選擇其名稱。

   如果您的叢集是 Valkey 或 Redis OSS （啟用叢集模式） 叢集，請參閱 [擴展 Valkey 或 Redis OSS （啟用叢集模式） 叢集](scaling-redis-cluster-mode-enabled.md)。

   如果您的叢集是具有零碎片的 Valkey 或 Redis OSS （停用叢集模式） 叢集，請先完成 中的步驟[將複寫新增至沒有碎片的 Valkey 或 Redis OSS 叢集](#AddReplication.CON)。

1. 選擇 **Add node (新增節點)**。

1. 完成 **Add Node (新增節點)** 對話方塊中請求的資訊。

1. 選擇 **Apply Immediately - Yes (立即套用 - 是)** 按鈕可立即新增此節點；或選擇 **No (否)**，在此叢集的下一個維護時段期間，新增此節點。  
**新增和移除要求對待定請求的影響**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/Clusters.AddNode.html)

   若要判斷哪些作業處於待定狀態，請選擇 **Description (描述)** 索引標籤，並檢查顯示多少待定的建立或刪除項目。待定建立和待定刪除項目不能同時存在。

1. 選擇 **Add (新增)** 按鈕。

    在一段時間之後，新的節點應會顯示在節點清單中，且狀態為 **creating (建立中)**。如果並未顯示，請重新整理瀏覽器頁面。如果節點狀態變更為*「可用」*，新的節點即可供使用。

## AWS CLI搭配 ElastiCache 使用
<a name="Clusters.AddNode.CLI"></a>

若要使用 將節點新增至叢集AWS CLI，請使用AWS CLI操作`modify-cache-cluster`搭配下列參數：
+ `--cache-cluster-id` 您想為其新增節點的叢集 ID。
+ `--num-cache-nodes` `--num-cache-nodes` 參數可指定套用修改之後您要在此叢集中使用的節點數。若要新增節點至此叢集，`--num-cache-nodes` 必須大於此叢集中的目前節點數。如果此值小於目前節點數，ElastiCache 會預期收到 `cache-node-ids-to-remove` 參數以及要從叢集中移除的節點清單。如需詳細資訊，請參閱[AWS CLI搭配 ElastiCache 使用](Clusters.DeleteNode.md#Clusters.DeleteNode.CLI)。
+ `--apply-immediately` 或 `--no-apply-immediately` 指定是否要立即新增這些節點，或等到下個維護時段再新增。

針對 Linux、macOS 或 Unix：

```
aws elasticache modify-cache-cluster \
    --cache-cluster-id my-cluster \
    --num-cache-nodes 5 \
    --apply-immediately
```

針對 Windows：

```
aws elasticache modify-cache-cluster ^
    --cache-cluster-id my-cluster ^
    --num-cache-nodes 5 ^
    --apply-immediately
```

此作業會產生類似下列的輸出 (JSON 格式)：

```
{
    "CacheCluster": {
        "Engine": "memcached", 
        "CacheParameterGroup": {
            "CacheNodeIdsToReboot": [], 
            "CacheParameterGroupName": "default.memcached1.4", 
            "ParameterApplyStatus": "in-sync"
        }, 
        "CacheClusterId": "my-cluster", 
        "PreferredAvailabilityZone": "us-west-2b", 
        "ConfigurationEndpoint": {
            "Port": 11211, 
            "Address": "rlh-mem000.7alc7bf-example.cfg.usw2.cache.amazonaws.com"
        }, 
        "CacheSecurityGroups": [], 
        "CacheClusterCreateTime": "2016-09-21T16:28:28.973Z", 
        "AutoMinorVersionUpgrade": true, 
        "CacheClusterStatus": "modifying", 
        "NumCacheNodes": 2, 
        "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:", 
        "SecurityGroups": [
            {
                "Status": "active", 
                "SecurityGroupId": "sg-dbe93fa2"
            }
        ], 
        "CacheSubnetGroupName": "default", 
        "EngineVersion": "1.4.24", 
        "PendingModifiedValues": {
            "NumCacheNodes": 5
        }, 
        "PreferredMaintenanceWindow": "sat:09:00-sat:10:00", 
        "CacheNodeType": "cache.m3.medium",
         "DataTiering": "disabled",
    }
}
```

如需詳細資訊，請參閱AWS CLI主題 [https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-cache-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-cache-cluster.html)。

## AWS CLI搭配 ElastiCache 使用
<a name="Clusters.AddNode.CLI"></a>

如果您想要將節點新增至未啟用複寫的現有 Valkey 或 Redis OSS （停用叢集模式） 叢集，您必須先建立將現有叢集指定為主要叢集的複寫群組。如需詳細資訊，請參閱[使用可用的 Valkey 或 Redis OSS 叢集建立複寫群組 (AWS CLI)](Replication.CreatingReplGroup.ExistingCluster.md#Replication.CreatingReplGroup.ExistingCluster.CLI)。複寫群組為*「可用」*之後，您即可繼續下列程序。

若要使用 將節點新增至叢集AWS CLI，請使用AWS CLI操作`increase-replica-count`搭配下列參數：
+ `--replication-group-id` 您想為其新增節點的複寫群組 ID。
+ `--new-replica-count` 可指定套用修改之後您要在此複寫群組中使用的節點數。若要新增節點至此叢集，`--new-replica-count` 必須大於此叢集中的目前節點數。
+ `--apply-immediately` 或 `--no-apply-immediately` 指定是否要立即新增這些節點，或等到下個維護時段再新增。

針對 Linux、macOS 或 Unix：

```
aws elasticache increase-replica-count \
    --replication-group-id my-replication-group \
    --new-replica-count 4 \
    --apply-immediately
```

針對 Windows：

```
aws elasticache increase-replica-count ^
    --replication-group-id my-replication-group ^
    --new-replica-count 4 ^
    --apply-immediately
```

此作業會產生類似下列的輸出 (JSON 格式)：

```
{
    "ReplicationGroup": {
        "ReplicationGroupId": "node-test",
        "Description": "node-test",       
        "Status": "modifying",
        "PendingModifiedValues": {},
        "MemberClusters": [
            "node-test-001",
            "node-test-002",
            "node-test-003",
            "node-test-004",
            "node-test-005"
        ],
        "NodeGroups": [
            {
                "NodeGroupId": "0001",
                "Status": "modifying",
                "PrimaryEndpoint": {
                    "Address": "node-test.zzzzzz.ng.0001.usw2.cache.amazonaws.com",
                    "Port": 6379
                },
                "ReaderEndpoint": {
                    "Address": "node-test.zzzzzz.ng.0001.usw2.cache.amazonaws.com",
                    "Port": 6379
                },
                "NodeGroupMembers": [
                    {
                        "CacheClusterId": "node-test-001",
                        "CacheNodeId": "0001",
                        "ReadEndpoint": {
                            "Address": "node-test-001.zzzzzz.0001.usw2.cache.amazonaws.com",
                            "Port": 6379
                        },
                        "PreferredAvailabilityZone": "us-west-2a",
                        "CurrentRole": "primary"
                    },
                    {
                        "CacheClusterId": "node-test-002",
                        "CacheNodeId": "0001",
                        "ReadEndpoint": {
                            "Address": "node-test-002.zzzzzz.0001.usw2.cache.amazonaws.com",
                            "Port": 6379
                        },
                        "PreferredAvailabilityZone": "us-west-2c",
                        "CurrentRole": "replica"
                    },
                    {
                        "CacheClusterId": "node-test-003",
                        "CacheNodeId": "0001",
                        "ReadEndpoint": {
                            "Address": "node-test-003.zzzzzz.0001.usw2.cache.amazonaws.com",
                            "Port": 6379
                        },
                        "PreferredAvailabilityZone": "us-west-2b",
                        "CurrentRole": "replica"
                    }
                ]
            }
        ],
        "SnapshottingClusterId": "node-test-002",
        "AutomaticFailover": "enabled",
        "MultiAZ": "enabled",
        "SnapshotRetentionLimit": 1,
        "SnapshotWindow": "07:30-08:30",
        "ClusterEnabled": false,
        "CacheNodeType": "cache.r5.large",
         "DataTiering": "disabled",
        "TransitEncryptionEnabled": false,
        "AtRestEncryptionEnabled": false,
        "ARN": "arn:aws:elasticache:us-west-2:123456789012:replicationgroup:node-test"
    }
}
```

如需詳細資訊，請參閱AWS CLI主題 [https://docs.aws.amazon.com/cli/latest/reference/elasticache/increase-replica-count.html](https://docs.aws.amazon.com/cli/latest/reference/elasticache/increase-replica-count.html)。

## 使用 ElastiCache API
<a name="Clusters.AddNode.API"></a>

如果您想要將節點新增至未啟用複寫的現有 Valkey 或 Redis OSS （停用叢集模式） 叢集，您必須先建立將現有叢集指定為主要叢集的複寫群組。如需詳細資訊，請參閱[將複本新增至獨立 Valkey 或 Redis OSS （停用叢集模式） 叢集 (ElastiCache API)](Replication.CreatingReplGroup.ExistingCluster.md#Replication.CreatingReplGroup.ExistingCluster.API)。複寫群組為*「可用」*之後，您即可繼續下列程序。

**將節點新增至叢集 (ElastiCache API)**
+ 使用下列參數呼叫 `IncreaseReplicaCount` API 操作：
  + `ReplicationGroupId` 您想為其新增節點的叢集 ID。
  + `NewReplicaCount` `NewReplicaCount` 參數可指定套用修改之後您要在此叢集中使用的節點數。若要新增節點至此叢集，`NewReplicaCount` 必須大於此叢集中的目前節點數。如果此值小於目前節點數，請使用 `DecreaseReplicaCount` API 以及要從叢集中移除的節點數。
  + `ApplyImmediately` 指定是否要立即新增這些節點，或等到下個維護時段再新增。
  + `Region` 指定您要新增節點的叢集AWS區域。

  下列範例說明可將節點新增至叢集的呼叫。  
**Example**  

  ```
  https://elasticache.us-west-2.amazonaws.com/
      ?Action=IncreaseReplicaCount
      &ApplyImmediately=true
      &NumCacheNodes=4
      &ReplicationGroupId=my-replication-group
      &Region=us-east-2
      &Version=2014-12-01
      &SignatureVersion=4
      &SignatureMethod=HmacSHA256
      &Timestamp=20141201T220302Z
      &X-Amz-Algorithm=&AWS;4-HMAC-SHA256
      &X-Amz-Date=20141201T220302Z
      &X-Amz-SignedHeaders=Host
      &X-Amz-Expires=20141201T220302Z
      &X-Amz-Credential=<credential>
      &X-Amz-Signature=<signature>
  ```

如需詳細資訊，請參閱 ElastiCache API 主題 [https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_IncreaseReplicaCount.html](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_IncreaseReplicaCount.html)。

## 使用 ElastiCache API
<a name="Clusters.AddNode.API"></a>

**將節點新增至叢集 (ElastiCache API)**
+ 使用下列參數呼叫 `ModifyCacheCluster` API 操作：
  + `CacheClusterId` 您想為其新增節點的叢集 ID。
  + `NumCacheNodes` `NumCachNodes` 參數可指定套用修改之後您要在此叢集中使用的節點數。若要新增節點至此叢集，`NumCacheNodes` 必須大於此叢集中的目前節點數。如果此值小於目前節點數，ElastiCache 會預期收到 `CacheNodeIdsToRemove` 參數以及要從叢集中移除的節點清單 (請參閱「[搭配 Memcached 使用 ElastiCache API](Clusters.DeleteNode.md#Clusters.DeleteNode.API)」)。
  + `ApplyImmediately` 指定是否要立即新增這些節點，或等到下個維護時段再新增。
  + `Region` 指定您要新增節點的叢集AWS區域。

  下列範例說明可將節點新增至叢集的呼叫。  
**Example**  

  ```
  https://elasticache.us-west-2.amazonaws.com/
      ?Action=ModifyCacheCluster
      &ApplyImmediately=true
      &NumCacheNodes=5
  	&CacheClusterId=my-cluster
  	&Region=us-east-2
      &Version=2014-12-01
      &SignatureVersion=4
      &SignatureMethod=HmacSHA256
      &Timestamp=20141201T220302Z
      &X-Amz-Algorithm=&AWS;4-HMAC-SHA256
      &X-Amz-Date=20141201T220302Z
      &X-Amz-SignedHeaders=Host
      &X-Amz-Expires=20141201T220302Z
      &X-Amz-Credential=<credential>
      &X-Amz-Signature=<signature>
  ```

如需詳細資訊，請參閱 ElastiCache API 主題 [https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheCluster.html](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheCluster.html)。

# 從 ElastiCache 叢集移除節點
<a name="Clusters.DeleteNode"></a>

您可以使用 、 或 ElastiCache API AWS 管理主控台，從 Valkey AWS CLI、Memcached 或 Redis OSS 叢集刪除節點。

**注意**  
每當您變更 Memcached 叢集中的節點數量時，必須至少重新對應一些索引鍵空間，使其對應到正確的節點。如需有關負載平衡 Memcached 叢集的詳細資訊，請參閱[設定 ElastiCache 用戶端以實現高效率的負載平衡 (Memcached)](BestPractices.LoadBalancing.md)。

## 使用 ElastiCache AWS 管理主控台
<a name="Clusters.DeleteNode.CON"></a>

**從叢集中移除節點 (主控台)**

1. 登入AWS 管理主控台並開啟位於 https：//[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/) 的 ElastiCache 主控台。

1. 從右上角的清單中，選擇要從中移除節點的叢集AWS區域。

1. 在導覽窗格中，選擇您要從中移除節點之叢集所執行的引擎。

   接著會出現執行所選引擎的叢集清單。

1. 在叢集清單中，選擇您要從中移除節點的叢集名稱。

   接著會出現叢集的節點清單。

1. 選擇您要移除之節點的節點 ID 旁的方塊。使用 ElastiCache 主控台時，您一次只能刪除一個節點，因此選擇多個節點表示您無法使用 **Delete node (刪除節點)** 按鈕。

   *Delete Node (刪除節點)* 頁面隨即出現。

1. 若要刪除節點，請完成 **Delete Node (刪除節點)** 頁面，然後選擇 **Delete Node (刪除節點)**。如要保留節點，請選擇 **Cancel (取消)**。
**重要**  
使用 Valkey 或 Redis OSS，如果您刪除叢集中不再符合異地同步備份標準的節點結果，請務必先清除**異地同步**備份核取方塊，然後刪除節點。如果清除 **Multi-AZ (多個可用區)** 核取方塊，您可以選擇啟用 **Auto failover (自動容錯移轉)**。


**新增和移除請求對待定請求的影響**  

| 案例 | 待定作業 | 新請求 | 結果 | 
| --- | --- | --- | --- | 
|  案例 1 |  刪除 | 刪除 |  新的刪除請求 (待定或立即) 會取代待定的刪除請求。 例如，如果節點 0001、0003 和 0007 處於待定刪除狀態，並發出刪除節點 0002 和 0004 的新請求，則只會刪除節點 0002 和 0004。系統不會刪除節點 0001、0003 和 0007。 | 
|  案例 2 |  刪除 |  建立 |  新的建立請求 (待定或立即) 會取代待定的刪除請求。 例如，如果節點 0001、0003 和 0007 處於待定刪除狀態，並發出建立節點的新請求，則會建立新的節點，而不會刪除節點 0001、0003 和 0007。 | 
|  案例 3 |  建立 |  刪除 |  新的刪除請求 (待定或立即) 會取代待定的建立請求。 例如，若存在建立兩個節點的待定請求，並發出刪除節點 0003 的新請求，則不會建立新的節點，且會刪除節點 0003。 | 
|  案例 4 |  建立 |  建立 |  新的建立請求會新增至待定的建立請求。 例如，若存在建立兩個節點的待定請求，並發出建立三個節點的新請求，則新請求會新增至待定請求，並建立五個節點。 如果新的建立請求設定為 **Apply Immediately - Yes (立即套用 - 是)**，則會立即執行所有建立請求。如果新的建立請求設定為 **Apply Immediately - No (立即套用 - 否)**，則所有建立請求都處於待定狀態。 | 

若要判斷哪些作業處於待定狀態，請選擇 **Description (描述)** 索引標籤，並檢查顯示多少待定的建立或刪除項目。待定建立和待定刪除項目不能同時存在。

## AWS CLI搭配 ElastiCache 使用
<a name="Clusters.DeleteNode.CLI"></a>

1. 找出您要移除的節點 ID。如需詳細資訊，請參閱[檢視 ElastiCache 叢集的詳細資訊](Clusters.ViewDetails.md)。

1. 搭配使用 `decrease-replica-count` CLI 操作與要移除的節點清單，如下列範例所示。

   若要使用命令列界面移除叢集中的節點，請搭配使用 `decrease-replica-count` 命令與下列參數：
   + `--replication-group-id` 您想要從中移除節點的快取複寫群組 ID。
   + `--new-replica-count` `--new-replica-count` 參數可指定套用修改之後您要在此叢集中使用的節點數。
   + `--replicas-to-remove` 您要從這個叢集中移除的節點 ID 清單。
   + `--apply-immediately` 或 `--no-apply-immediately` 指定是否要立即移除這些節點，或等到下個維護時段再移除。
   + `--region` 指定您要從中移除節點的叢集AWS區域。
**注意**  
呼叫此作業時，您只能傳遞其中一個 `--replicas-to-remove` 或 `--new-replica-count` 參數。

   針對 Linux、macOS 或 Unix：

   ```
   aws elasticache decrease-replica-count \
       --replication-group-id my-replication-group \
       --new-replica-count 2 \   
       --region us-east-2 \
       --apply-immediately
   ```

   針對 Windows：

   ```
   aws elasticache decrease-replica-count ^
       --replication-group-id my-replication-group ^
       --new-replica-count 3 ^   
       --region us-east-2 ^
       --apply-immediately
   ```

   此作業會產生類似下列的輸出 (JSON 格式)：

   ```
   {
       "ReplicationGroup": {
           "ReplicationGroupId": "node-test",
           "Description": "node-test"
          },
           "Status": "modifying",
           "PendingModifiedValues": {},
           "MemberClusters": [
               "node-test-001",
               "node-test-002",
               "node-test-003",
               "node-test-004",
               "node-test-005",
               "node-test-006"
           ],
           "NodeGroups": [
               {
                   "NodeGroupId": "0001",
                   "Status": "modifying",
                   "PrimaryEndpoint": {
                       "Address": "node-test.zzzzzz.ng.0001.usw2.cache.amazonaws.com",
                       "Port": 6379
                   },
                   "ReaderEndpoint": {
                       "Address": "node-test-ro.zzzzzz.ng.0001.usw2.cache.amazonaws.com",
                       "Port": 6379
                   },
                   "NodeGroupMembers": [
                       {
                           "CacheClusterId": "node-test-001",
                           "CacheNodeId": "0001",
                           "ReadEndpoint": {
                               "Address": "node-test-001.zzzzzz.0001.usw2.cache.amazonaws.com",
                               "Port": 6379
                           },
                           "PreferredAvailabilityZone": "us-west-2a",
                           "CurrentRole": "primary"
                       },
                       {
                           "CacheClusterId": "node-test-002",
                           "CacheNodeId": "0001",
                           "ReadEndpoint": {
                               "Address": "node-test-002.zzzzzz.0001.usw2.cache.amazonaws.com",
                               "Port": 6379
                           },
                           "PreferredAvailabilityZone": "us-west-2c",
                           "CurrentRole": "replica"
                       },
                       {
                           "CacheClusterId": "node-test-003",
                           "CacheNodeId": "0001",
                           "ReadEndpoint": {
                               "Address": "node-test-003.zzzzzz.0001.usw2.cache.amazonaws.com",
                               "Port": 6379
                           },
                           "PreferredAvailabilityZone": "us-west-2b",
                           "CurrentRole": "replica"
                       },
                       {
                           "CacheClusterId": "node-test-004",
                           "CacheNodeId": "0001",
                           "ReadEndpoint": {
                               "Address": "node-test-004.zzzzzz.0001.usw2.cache.amazonaws.com",
                               "Port": 6379
                           },
                           "PreferredAvailabilityZone": "us-west-2c",
                           "CurrentRole": "replica"
                       },
                       {
                           "CacheClusterId": "node-test-005",
                           "CacheNodeId": "0001",
                           "ReadEndpoint": {
                               "Address": "node-test-005.zzzzzz.0001.usw2.cache.amazonaws.com",
                               "Port": 6379
                           },
                           "PreferredAvailabilityZone": "us-west-2b",
                           "CurrentRole": "replica"
                       },
                       {
                           "CacheClusterId": "node-test-006",
                           "CacheNodeId": "0001",
                           "ReadEndpoint": {
                               "Address": "node-test-006.zzzzzz.0001.usw2.cache.amazonaws.com",
                               "Port": 6379
                           },
                           "PreferredAvailabilityZone": "us-west-2b",
                           "CurrentRole": "replica"
                       }
                   ]
               }
           ],
           "SnapshottingClusterId": "node-test-002",
           "AutomaticFailover": "enabled",
           "MultiAZ": "enabled",
           "SnapshotRetentionLimit": 1,
           "SnapshotWindow": "07:30-08:30",
           "ClusterEnabled": false,
           "CacheNodeType": "cache.r5.large",
            "DataTiering": "disabled",
           "TransitEncryptionEnabled": false,
           "AtRestEncryptionEnabled": false,
           "ARN": "arn:aws:elasticache:us-west-2:123456789012:replicationgroup:node-test"
       }
   }
   ```

或者，您可以呼叫 `decrease-replica-count`，不傳入 `--new-replica-count` 參數，而是可以傳遞 `--replicas-to-remove` 參數，如下所示：

針對 Linux、macOS 或 Unix：

```
aws elasticache decrease-replica-count \
    --replication-group-id my-replication-group \
    --replicas-to-remove node-test-003 \   
    --region us-east-2 \
    --apply-immediately
```

針對 Windows：

```
aws elasticache decrease-replica-count ^
    --replication-group-id my-replication-group ^
    --replicas-to-remove node-test-003 ^   
    --region us-east-2 ^
    --apply-immediately
```

如需詳細資訊，請參閱AWS CLI主題 [https://docs.aws.amazon.com/cli/latest/reference/elasticache/decrease-replica-count.html](https://docs.aws.amazon.com/cli/latest/reference/elasticache/decrease-replica-count.html)。

## 搭配 Valkey 或 Redis OSS 使用 ElastiCache API
<a name="Clusters.DeleteNode.API2"></a>

若要使用 ElastiCache API 移除節點，請搭配使用複寫群組 ID 與要移除的節點清單來呼叫 `DecreaseReplicaCount` API 作業，如下所示：
+ `ReplicationGroupId` 您想要從中移除節點的快取複寫群組 ID。
+ `ReplicasToRemove` `ReplicasToRemove` 參數可指定套用修改之後您要在此叢集中使用的節點數。
+ `ApplyImmediately` 指定是否要立即移除這些節點，或等到下個維護時段再移除。
+ `Region` 指定您要從中移除節點的叢集AWS區域。

下列範例會從 my-cluster 叢集中立即移除節點 0004 和 0005。

```
https://elasticache.us-west-2.amazonaws.com/
    ?Action=DecreaseReplicaCount
    &ReplicationGroupId=my-replication-group
    &ApplyImmediately=true
    &ReplicasToRemove=node-test-003    
    &Region us-east-2
    &Version=2014-12-01
    &SignatureVersion=4
    &SignatureMethod=HmacSHA256
    &Timestamp=20141201T220302Z
    &X-Amz-Algorithm=&AWS;4-HMAC-SHA256
    &X-Amz-Date=20141201T220302Z
    &X-Amz-SignedHeaders=Host
    &X-Amz-Expires=20141201T220302Z
    &X-Amz-Credential=<credential>
    &X-Amz-Signature=<signature>
```

如需詳細資訊，請參閱 ElastiCache API 主題 [https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DecreaseReplicaCount.html](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DecreaseReplicaCount.html)。

## 搭配 Memcached 使用 ElastiCache API
<a name="Clusters.DeleteNode.API"></a>

若要使用 ElastiCache API 移除節點，請搭配使用快取叢集 ID 與要移除的節點清單來呼叫 `ModifyCacheCluster` API 作業，如下所示：
+ `CacheClusterId` 您要從中移除節點的叢集 ID。
+ `NumCacheNodes` `NumCacheNodes` 參數可指定套用修改之後您要在此叢集中使用的節點數。
+ `CacheNodeIdsToRemove.member.n` 要從叢集中移除的節點 ID 清單。
  + `CacheNodeIdsToRemove.member.1=0004`
  + `CacheNodeIdsToRemove.member.1=0005`
+ `ApplyImmediately` 指定是否要立即移除這些節點，或等到下個維護時段再移除。
+ `Region` 指定您要從中移除節點的叢集AWS區域。

下列範例會從 my-cluster 叢集中立即移除節點 0004 和 0005。

```
https://elasticache.us-west-2.amazonaws.com/
    ?Action=ModifyCacheCluster
    &CacheClusterId=my-cluster
    &ApplyImmediately=true
    &CacheNodeIdsToRemove.member.1=0004
    &CacheNodeIdsToRemove.member.2=0005
    &NumCacheNodes=3   
    &Region us-east-2
    &Version=2014-12-01
    &SignatureVersion=4
    &SignatureMethod=HmacSHA256
    &Timestamp=20141201T220302Z
    &X-Amz-Algorithm=&AWS;4-HMAC-SHA256
    &X-Amz-Date=20141201T220302Z
    &X-Amz-SignedHeaders=Host
    &X-Amz-Expires=20141201T220302Z
    &X-Amz-Credential=<credential>
    &X-Amz-Signature=<signature>
```

如需詳細資訊，請參閱 ElastiCache API 主題 [https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheCluster.html](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_ModifyCacheCluster.html)。

# 取消 ElastiCache 中的待定新增或刪除節點操作
<a name="Clusters.CancelPending"></a>

如果您選擇不立即套用 ElastiCache 叢集變更，則操作會處於**待**定狀態，直到在下一個維護時段執行為止。您可以取消任何待處理的新增或刪除操作。

若要使用 取消待定的新增或刪除節點操作 AWS CLI，請使用 `modify-cache-cluster`命令。將 `num-cache-nodes`設定為等於叢集中目前快取節點的數量，然後新增 `--apply-immediately`旗標。這將覆寫待定的變更。

若要取消待定節點新增或刪除：

```
aws elasticache modify-cache-cluster 
	--cache-cluster-id <your-cluster-id> 
	--num-cache-nodes <current-number-of-nodes> 
	--apply-immediately
```

如果不清楚是否有任何節點新增或刪除處於待定狀態，您可以使用 `describe-cache-clusters`命令確認其狀態：

```
aws elasticache describe-cache-clusters 
	--cache-cluster-id <your-cluster-id>
```

任何待定節點都應該出現在`PendingModifiedValues`輸出中。例如：

```
"PendingModifiedValues": {
	"NumCacheNodes": 3
	},
```

# 在 ElastiCache 中刪除叢集
<a name="Clusters.Delete"></a>

只要 ElastiCache 叢集處於*可用*狀態，就會向您收取費用，無論您是否正在使用它。若要停止產生費用，請刪除叢集。

**警告**  
當您刪除 ElastiCache 叢集時，會保留您的手動快照。您也可以在刪除叢集之前建立最終快照。自動快取快照則不會保留。

## 使用AWS 管理主控台
<a name="Clusters.Delete.CON"></a>

以下程序會從您的部署中刪除單一叢集。若要刪除多個叢集，請針對每個要刪除的叢集重複此程序。您不需要等待某個叢集完成刪除，即可開始刪除其他叢集。

**刪除叢集**

1. 登入AWS 管理主控台，並在 [https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)：// 開啟 Amazon ElastiCache 主控台。

1. 在 ElastiCache 引擎儀表板中，選擇您要刪除之叢集中執行的引擎。

   接著會出現執行該引擎的所有叢集清單。

1. 要選擇欲刪除的叢集，請從叢集清單選擇叢集的名稱。
**重要**  
您一次只能從 ElastiCache 主控台刪除一個叢集。選擇多個叢集會停用刪除操作。

1. 對於 **Actions** (動作)，請選擇 **Delete** (刪除)。

1. 在 **Delete Cluster (刪除叢集)** 確認畫面中，選擇 **Delete (刪除)** 以刪除叢集，或選擇 **Cancel (取消)** 來保留叢集。

   如果您選擇 **Delete (刪除)**，叢集的狀態就會變更為 *deleting (正在刪除)*。

一旦您的叢集不再列於叢集清單，您就不會再因此產生費用。

## 使用AWS CLI刪除 ElastiCache 叢集
<a name="Clusters.Delete.CLI"></a>

下列程式碼會刪除 ElastiCache 叢集 `my-cluster`。

```
aws elasticache delete-cache-cluster --cache-cluster-id my-cluster
```

CLI `delete-cache-cluster` 動作只會刪除一個叢集。若要刪除多個叢集，`delete-cache-cluster`請針對您要刪除的每個快取叢集呼叫 。您不需要等待某個叢集完成刪除，即可刪除另一個叢集。

針對 Linux、macOS 或 Unix：

```
aws elasticache delete-cache-cluster \
    --cache-cluster-id my-cluster \
    --region us-east-2
```

針對 Windows：

```
aws elasticache delete-cache-cluster ^
    --cache-cluster-id my-cluster ^
    --region us-east-2
```

如需詳細資訊，請參閱適用於 ElastiCache AWS CLI的 主題[https://docs.aws.amazon.com/cli/latest/reference/elasticache/delete-cache-cluster.html](https://docs.aws.amazon.com/cli/latest/reference/elasticache/delete-cache-cluster.html)。

## 使用 ElastiCache API
<a name="Clusters.Delete.API"></a>

下列程式碼會刪除 `my-cluster` 叢集。

```
https://elasticache.us-west-2.amazonaws.com/    
    ?Action=DeleteCacheCluster
    &CacheClusterId=my-cluster
    &Region us-east-2
    &SignatureVersion=4
    &SignatureMethod=HmacSHA256
    &Timestamp=20150202T220302Z
    &X-Amz-Algorithm=&AWS;4-HMAC-SHA256
    &X-Amz-Date=20150202T220302Z
    &X-Amz-SignedHeaders=Host
    &X-Amz-Expires=20150202T220302Z
    &X-Amz-Credential=<credential>
    &X-Amz-Signature=<signature>
```

`DeleteCacheCluster` API 操作只會刪除一個叢集。若要刪除多個叢集，`DeleteCacheCluster`請針對您要刪除的每個叢集呼叫 。您不需要等待某個叢集完成刪除，即可刪除另一個叢集。

如需詳細資訊，請參閱 ElastiCache API 參考主題 [https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DeleteCacheCluster.html](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DeleteCacheCluster.html)。

# 存取您的 ElastiCache 叢集或複寫群組
<a name="accessing-elasticache"></a>

Amazon ElastiCache 執行個體設計為透過 Amazon EC2 執行個體來存取。

若您在 Amazon Virtual Private Cloud (Amazon VPC) 中啟動 ElastiCache 執行個體，您可以從同一個 Amazon VPC 中的 Amazon EC2 執行個體存取您的 ElastiCache 執行個體。或者，您可以透過使用 VPC 對等互連，從不同 Amazon VPC 中的 Amazon EC2 存取 ElastiCache 執行個體。

如果您在 EC2 Classic 中啟動了 ElastiCache 執行個體，則可透過授權讓與執行個體相關聯的 Amazon EC2 安全群組存取快取安全群組，允許 EC2 執行個體存取您的叢集。根據預設，僅有啟動叢集的帳戶才能存取該叢集。

**Topics**
+ [授權存取您的叢集或複寫群組](#grant-access)

## 授權存取您的叢集或複寫群組
<a name="grant-access"></a>

### 您在 EC2-VPC 中啟動了叢集
<a name="authorize-access-vpc"></a>

如果您將叢集啟動到 Amazon Virtual Private Cloud (Amazon VPC) 中，則只能從在同一個 Amazon VPC 中執行的 Amazon EC2 執行個體連接至 ElastiCache 叢集。在此情況下，您需要授權透過網路輸入至叢集。

**注意**  
如果您有使用 *Local Zones*，請確定已啟用。如需詳細資訊，請參閱[啟用 Local Zones](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/using-regions-availability-zones.html#opt-in-local-zone)。如此一來，您的 VPC 會擴展到該本地區域，且您的 VPC 會將該子網路視為任何其他可用區域中的任何子網路，並自動調整相關閘道、路由表和其他安全群組考量事項。

**授權從 Amazon VPC 安全群組透過網路輸入至叢集**

1. 登入AWS 管理主控台，並在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)：// 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，在 **Network & Security (網路與安全)** 下，選擇 **Security Groups (安全群組)**。

1. 從安全群組的清單中，選擇要用於 Amazon VPC 的安全群組。除非您建立了安全群組供 ElastiCache 使用，否則此安全群組將會命名為 *default*。

1. 選擇 **Inbound (傳入)** 標籤，然後執行下列動作：

   1. 選擇**編輯**。

   1. 選擇**新增規則**。

   1. 在 **Type (類型)** 欄中，選擇 **Custom TCP rule (自訂 TCP 規則)**。

   1. 在 **Port range (連接埠範圍)** 方塊中，輸入要用於叢集節點的連接埠號碼。此號碼必須與您啟動叢集時指定的號碼相同。Memcached 的預設連接埠是 **11211** Valkey 和 Redis OSS 的預設連接埠是 **6379**。

   1. 在 **Source (來源)** 方塊中，選擇具有埠範圍 (0.0.0.0/0) 的 **Anywhere (隨處)**，讓任何您在 Amazon VPC 內啟動的 Amazon EC2 執行個體都能連接至 ElastiCache 節點。
**重要**  
向 0.0.0.0/0 開放 ElastiCache 叢集不會向網際網路公開該叢集，因為它沒有任何公有 IP 地址，因此無法從 VPC 外部進行存取。不過，預設安全群組可能會套用到客戶帳戶中的其他 Amazon EC2 執行個體，而這些執行個體可能有公有 IP 地址。如果他們正巧在預設連接埠上執行某些項目，就可能會意外公開該服務。因此，建議您建立一個 ElastiCache 專用的 VPC 安全群組。如需詳細資訊，請參閱[自訂安全群組](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#creating-your-own-security-groups)。

   1. 選擇**儲存**。

將 Amazon EC2 執行個體啟動至 Amazon VPC 中時，該執行個體就能連接至您的 ElastiCache 叢集。

### 從外部存取 ElastiCache 資源AWS
<a name="access-from-outside-aws"></a>

Amazon ElastiCache 是一種AWS服務，可提供雲端型記憶體內金鑰值存放區。此服務專為從內部存取而設計AWS。但是，若 ElastiCache 叢集託管在 VPC 內部，您可以使用網路位址轉譯 (NAT) 執行個體來提供外部存取。

#### 要求
<a name="access-from-outside-aws-requirements"></a>

您必須符合以下需求，才能從AWS外部存取 ElastiCache 資源：
+ 叢集必須位於 VPC 內，並且必須透過網路位址轉譯 (NAT) 執行個體存取。此需求沒有任何例外。
+ NAT 執行個體必須在與叢集相同的 VPC 內啟動。
+ NAT 執行個體必須在與叢集不同的公有子網路內啟動。
+ 彈性 IP 地址 (EIP) 必須與 NAT 執行個體建立關聯。iptable 的網路埠轉遞功能會用於將 NAT 執行個體上的連接埠轉送至 VPC 內的快取節點連接埠。

#### 考量事項
<a name="access-from-outside-aws-considerations"></a>

從 ElastiCache 外部存取您的 ElastiCache 資源時，應牢記以下幾點。
+ 用戶端會連線到 EIP 和 NAT 執行個體的快取連接埠。NAT 執行個體上的連接埠轉送會將流量轉送至適當的叢集節點。
+ 若新增或取代叢集節點，iptable 規則便需要更新以反映此變更。

#### 限制
<a name="access-from-outside-aws-limitations"></a>

此方法應僅用於測試及開發用途。基於下列限制，不建議用於生產用途：
+ NAT 執行個體的角色是用戶端與多個叢集間的代理。新增代理會影響叢集的效能。影響會隨著您透過 NAT 執行個體存取的叢集數量而增加。
+ 從用戶端到 NAT 執行個體的流量未經過加密。因此，建議您避免透過 NAT 執行個體傳送敏感性資料。
+ NAT 執行個體會增加維持另一個執行個體的額外負荷。
+ NAT 執行個體會做為故障的單一窗口。如需在 VPC 上設定高可用性 NAT 方式的資訊，請參閱 [Amazon VPC NAT 執行個體的高可用性：範例](https://aws.amazon.com/articles/2781451301784570)。

#### 如何從外部存取 ElastiCache 資源AWS
<a name="access-from-outside-aws-how-to"></a>

下列程序示範如何使用 NAT 執行個體連線到您的 ElastiCache 資源。

這些步驟假設下列事項：
+ `iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6380 -j DNAT --to 10.0.1.231:6379`
+ `iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6381 -j DNAT --to 10.0.1.232:6379`

接下來，您需要反向的 NAT：

`iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 10.0.0.55`

您也需要啟用 IP 轉送 (預設為停用)：

`sudo sed -i 's/net.ipv4.ip_forward=0/net.ipv4.ip_forward=1/g' /etc/sysctl.conf sudo sysctl --system`
+ 您是透過以下設定存取 Memcached 叢集：
  + IP 地址 - *10.0.1.230*
  + 預設 Memcached 連接埠 - *11211*。
  + 安全群組 - *\$110\$1.0\$1.0\$1.55\$1*
+ 您使用下列方式存取 Valkey 或 Redis OSS 叢集：
  + IP 地址 - *10.0.1.230*
  + 預設連接埠 – *6379*
  + 安全群組 - *sg-bd56b7da*
  + AWS執行個體 IP 地址 – *198.99.100.27*
+ 您信任的用戶端 IP 地址為 *198.51.100.27*。
+ 您的 NAT 執行個體具有彈性 IP 地址 *203.0.113.73*。
+ 您的 NAT 執行個體具有安全群組 *sg-ce56b7a9*。



**使用 NAT 執行個體連線到您的 ElastiCache 資源**

1. 在與叢集相同的 VPC 中，但在公有子網路中建立 NAT 執行個體。

   根據預設，VPC 精靈會啟動 *cache.m1.small* 節點類型。建議您根據需求選取節點大小。您必須使用 EC2 NAT AMI 才能從AWS外部存取 ElastiCache。

   如需有關建立 NAT 執行個體的資訊，請參閱AWS《VPC 使用者指南》中的 [NAT 執行個體](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html)。

1. 建立叢集和 NAT 執行個體的安全群組規則。

   NAT 執行個體安全群組和叢集執行個體應具有以下規則：
   + 兩個傳入規則
     + 使用 Memcached 時，第一個規則是允許從信任用戶端到從 NAT 執行個體轉送的每個快取連接埠的 TCP 連線 (11211 - 11213)。
     + 透過 Valkey 和 Redis OSS，第一個規則是允許從受信任用戶端到從 NAT 執行個體轉送的每個快取連接埠 (6379 - 6381) 的 TCP 連線。
     + 允許 SSH 存取信任用戶端的第二個規則。  
**NAT 執行個體安全群組 - 使用 Memcached 的傳入規則**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/accessing-elasticache.html)  
**NAT 執行個體安全群組 - 使用 Valkey 或 Redis OSS 的傳入規則**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/accessing-elasticache.html)
   + 使用 Memcached 時，允許 TCP 連線快取連接埠 (11211) 的傳出規則。  
**NAT 執行個體安全群組 - 傳出規則**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/accessing-elasticache.html)
   + 使用 Valkey 或 Redis OSS 時，允許 TCP 連線快取連接埠 (6379) 的傳出規則。  
**NAT 執行個體安全群組 - 傳出規則**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/accessing-elasticache.html)
   + 使用 Memcached 時，叢集安全群組的傳入規則，允許從 NAT 執行個體到快取連接埠 (11211) 的 TCP 連線。  
**叢集執行個體安全群組 - 傳入規則**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/accessing-elasticache.html)
   + 使用 Valkey 或 Redis OSS 時，叢集安全群組的傳入規則，允許從 NAT 執行個體到快取連接埠 (6379) 的 TCP 連線。  
**叢集執行個體安全群組 - 傳入規則**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/accessing-elasticache.html)

1. 驗證規則。
   + 確認信任的用戶端能夠透過 SSH 連線到 NAT 執行個體。
   + 確認信任的用戶端能夠從 NAT 執行個體連線到叢集。

1. **Memcached**

   將 iptable 規則新增至 NAT 執行個體。

   iptable 規則必須新增到叢集中每個節點的 NAT 表，才能將來自 NAT 執行個體的快取連接埠轉送到叢集節點。範例看起來與以下內容相似：

   ```
   iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 11211 -j DNAT --to 10.0.1.230:11211
   ```

   叢集中每個節點的連接埠號碼必須是唯一的。例如，若搭配連接埠 11211 到 11213 使用一個三節點 Memcached 叢集，規則看起來會與以下內容相似：

   ```
   iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 11211 -j DNAT --to 10.0.1.230:11211
   iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 11212 -j DNAT --to 10.0.1.231:11211
   iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 11213 -j DNAT --to 10.0.1.232:11211
   ```

   確認信任的用戶端能夠連線到叢集。

   信任的用戶端應會連線到與 NAT 執行個體相關聯的 EIP，以及對應到適當叢集節點的叢集連接埠。例如，PHP 的連接字串看起來類似如下：

   ```
   $memcached->connect( '203.0.113.73', 11211 );
   $memcached->connect( '203.0.113.73', 11212 );
   $memcached->connect( '203.0.113.73', 11213 );
   ```

   telnet 用戶端也能用於驗證連線。例如：

   ```
   telnet 203.0.113.73 11211
   telnet 203.0.113.73 11212
   telnet 203.0.113.73 11213
   ```

   **Valkey 或 Redis OSS**

   將 iptable 規則新增至 NAT 執行個體。

   iptable 規則必須新增到叢集中每個節點的 NAT 表，才能將來自 NAT 執行個體的快取連接埠轉送到叢集節點。範例看起來與以下內容相似：

   ```
   iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6379 -j DNAT --to 10.0.1.230:6379
   ```

   叢集中每個節點的連接埠號碼必須是唯一的。例如，如果使用連接埠 6379 - 6381 來使用三個節點 Redis OSS 叢集，則規則如下所示：

   ```
   iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6379 -j DNAT --to 10.0.1.230:6379
   iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6380 -j DNAT --to 10.0.1.231:6379
   iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6381 -j DNAT --to 10.0.1.232:6379
   ```

   確認信任的用戶端能夠連線到叢集。

   信任的用戶端應會連線到與 NAT 執行個體相關聯的 EIP，以及對應到適當叢集節點的叢集連接埠。例如，PHP 的連接字串看起來類似如下：

   ```
   redis->connect( '203.0.113.73', 6379 );
   redis->connect( '203.0.113.73', 6380 );
   redis->connect( '203.0.113.73', 6381 );
   ```

   telnet 用戶端也能用於驗證連線。例如：

   ```
   telnet 203.0.113.73 6379
   telnet 203.0.113.73 6380
   telnet 203.0.113.73 6381
   ```

1. 儲存 iptable 組態。

   在測試及驗證過後儲存規則。如果您使用的是 Redhat 類型 Linux 發行版本 (例如 Amazon Linux)，我們建議使用以下命令：

   ```
   service iptables save
   ```

#### 相關主題
<a name="access-from-outside-aws-see-also"></a>

下列主題可能可以提供額外的資訊。
+ [用於存取 Amazon VPC 中 ElastiCache 快取的存取模式](elasticache-vpc-accessing.md)
+ [從在客戶資料中心執行的應用程式存取 ElastiCache 快取](elasticache-vpc-accessing.md#elasticache-vpc-accessing-data-center)
+ [NAT 執行個體](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html)
+ [設定 ElastiCache 用戶端](ClientConfig.md)
+ [Amazon VPC NAT 執行個體的高可用性：範例](https://aws.amazon.com/articles/2781451301784570)

# 在 ElastiCache 中尋找連線端點
<a name="Endpoints"></a>

您的應用程式會使用端點連線至 ElastiCache 叢集。端點是節點或叢集的唯一位址。

您也可以透過建立界面 VPC 端點，在 VPC 和 ElastiCache API 端點之間建立私有連線 AWS PrivateLink。如需詳細資訊，請參閱[ElastiCache API 和界面 VPC 端點 (AWS PrivateLink)](elasticache-privatelink.md)。

**要與 Valkey 或 Redis OSS 搭配使用的端點。**
+ 對於**獨立節點**，請將節點的端點用於讀取和寫入操作。

   
+ 對於 **Valkey 或 Valkey 或 Redis OSS （停用叢集模式） 叢集**，請使用*主要端點*進行所有寫入操作。使用「讀取器端點」**來將傳入連線平均分散在所有讀取複本間的端點中。使用個別「節點端點」**以進行讀取操作 (在 API/CLI 中，它們稱為「讀取端點」)。

   
+ 針對 **Valkey 或 Redis OSS （啟用叢集模式） 叢集**，針對支援啟用叢集模式命令的所有操作，使用叢集的*組態端點*。您必須使用支援 Valkey Cluster 或 Redis OSS 3.2 及更高版本的 Redis OSS 叢集的用戶端。您仍然可以從個別節點端點讀取 (在 API/CLI 中，它們稱為「讀取端點」)。

   

以下各節可引導您探索執行引擎所需的端點。

**要與 Memcached 搭配使用的端點。**

對於適用於 **Memcached 的 ElastiCache 無伺服器快取**，只需從主控台取得叢集端點 DNS 和連接埠即可。

從 中 AWS CLI，使用 `describe-serverless-caches`命令來取得端點資訊。

Linux

```
aws elasticache describe-serverless-caches --serverless-cache-name CacheName
```

Windows

```
aws elasticache describe-serverless-caches --serverless-cache-name CacheName
```

上述操作的輸出看起來會像這樣 (JSON 格式)：

```
{
    "ServerlessCaches": [
        {
            "ServerlessCacheName": "serverless-memcached",
            "Description": "test",
            "CreateTime": 1697659642.136,
            "Status": "available",
            "Engine": "memcached",
            "MajorEngineVersion": "1.6",
            "FullEngineVersion": "21",
            "SecurityGroupIds": [
                "sg-083eda453e1e51310"
            ],
            "Endpoint": {
                "Address": "serverless-memcached-01.amazonaws.com",
                "Port":11211
            },
            "ARN": "<the ARN>",
            "SubnetIds": [
                "subnet-0cf759df15bd4dc65",
                "subnet-09e1307e8f1560d17"
            ],
            "SnapshotRetentionLimit": 0,
            "DailySnapshotTime": "03:00"
        }
    ]
}
```

對於以**執行個體為基礎的 Memcached 叢集**，如果您使用自動探索，則可以使用叢集的*組態端點*來設定 Memcached 用戶端。這表示您必須使用支援 Automatic Discovery 的用戶端。

如果您並未使用 Automatic Discovery，則必須將用戶端設定為使用個別的節點端點以進行讀取和寫入。您也必須在新增和移除節點時追蹤這些端點。

## 尋找 Valkey 或 Redis OSS （停用叢集模式） 叢集的端點 （主控台）
<a name="Endpoints.Find.Redis"></a>

如果 Valkey 或 Valkey 或 Redis OSS （停用叢集模式） 叢集只有一個節點，則節點的端點會同時用於讀取和寫入。如果 Valkey 或 Valkey 或 Redis OSS （停用叢集模式） 叢集有多個節點，則有三種類型的端點：*主要端點*、*讀取器端點*和*節點端點*。

主要端點是一種一律會解析至叢集中主要節點的 DNS 名稱。主要端點不會受到您叢集變更的影響 (例如將僅供讀取複本提升至主要角色)。針對寫入活動，我們建議您的應用程式連線到主要端點。

讀取器端點會在 ElastiCache for Redis OSS 叢集中的所有僅供讀取複本之間平均分割端點的傳入連線。其他因素 (例如應用程式建立連線或應用程式如何 (重新) 使用連線) 將決定流量分佈。隨著複本的新增或移除，讀取器端點會跟著叢集的變更即時保持在最新狀態。您可以將 ElastiCache for Redis OSS 叢集的多個僅供讀取複本放在不同的 AWS 可用區域 (AZ)，以確保讀取器端點的高可用性。

**注意**  
讀取者端點並非負載平衡器。它是一筆 DNS 記錄，會以循環配置方式解析為其中一個複本節點的 IP 地址。

針對讀取活動，應用程式也可連線到叢集中的任何節點。與主要端點不同，節點端點會解析至特定端點。若您在叢集中進行變更 (例如新增或刪除複本)，您必須更新您應用程式中的節點端點。

**尋找 Valkey 或 Valkey 或 Redis OSS （停用叢集模式） 叢集的端點**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/) 的 ElastiCache 主控台。

1. 從導覽窗格中，選擇 **Valkey 叢集**或 **Redis OSS 叢集**。

   叢集畫面會顯示 Valkey 或 Valkey 或 Redis OSS （停用叢集模式） 和 Valkey 或 Redis OSS （啟用叢集模式） 叢集的清單。

1. 若要尋找叢集的主要和/或讀取器端點，請選擇叢集名稱 (而非左側的按鈕)。  
![\[影像：Valkey 或 Valkey 或 Redis OSS （停用叢集模式） 叢集的主要端點\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/images/Reader-Endpoint.png)

   *Valkey 或 Valkey 或 Redis OSS （停用叢集模式） 叢集的主要端點和讀取器端點*

   如果叢集中只有一個節點，就不會有主要端點，因此您必須繼續下一個步驟。

1. 如果 Valkey 或 Valkey 或 Redis OSS （停用叢集模式） 叢集有複本節點，您可以選擇叢集的名稱，然後選擇**節點**索引標籤，以尋找叢集的複本節點端點。

   隨即顯示節點畫面，其顯示叢集中的每個節點、主要複本和複本，並與其端點一起列出。  
![\[影像：Valkey 或 Valkey 或 Redis OSS （停用叢集模式） 叢集的節點端點\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/images/ElastiCache-Endpoints-Redis-Node.png)

   *Valkey 或 Valkey 或 Redis OSS （停用叢集模式） 叢集的節點端點*

1. 將端點複製到剪貼簿：

   1. 逐一尋找您要複製的端點。

   1. 選擇端點前面的複製圖示。

   現在，端點即已複製到您的剪貼簿。如需使用端點連線至節點的相關資訊，請參閱 [連線至 Memcached 節點](nodes-connecting.md#nodes-connecting.mem)。

Valkey 或 Valkey 或 Redis OSS （停用叢集模式） 主要端點看起來如下。其中的差異取決於是否啟用傳輸中加密。

**未啟用傳輸中加密**

```
clusterName.xxxxxx.nodeId.regionAndAz.cache.amazonaws.com:port
			
redis-01.7abc2d.0001.usw2.cache.amazonaws.com:6379
```

**已啟用傳輸中加密**

```
master.clusterName.xxxxxx.regionAndAz.cache.amazonaws.com:port

master.ncit.ameaqx.use1.cache.amazonaws.com:6379
```

## 尋找 Valkey 或 Redis OSS （啟用叢集模式） 叢集的端點 （主控台）
<a name="Endpoints.Find.RedisCluster"></a>

Valkey 或 Redis OSS （啟用叢集模式） 叢集具有單一組態端點。只要連線到組態端點，您的應用程式就可以探索叢集中每個碎片的主要和讀取端點。

**尋找 Valkey 或 Redis OSS （啟用叢集模式） 叢集的端點**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/) 的 ElastiCache 主控台。

1. 從導覽窗格中，選擇 **Valkey 叢集**或 **Redis OSS 叢集**。

   叢集畫面會顯示叢集清單。選擇您要連線的叢集。

1. 若要尋找叢集的組態端點，請選擇叢集名稱 (而非選項按鈕)。

1. **Configuration endpoint** (組態端點) 會顯示於 **Cluster details** (叢集詳細資訊) 中。若要加以複製，請選擇端點左側的複製圖示。

## 尋找叢集的端點 （主控台） (Memcached)
<a name="Endpoints.Find.Memcached"></a>

所有 Memcached 端點都是讀取/寫入端點。若要連線至 Memcached 叢集中的節點，您的應用程式可以使用每個叢集的端點，或搭配使用 Automatic Discovery 與叢集的組態端點。若要使用 Automatic Discovery，您必須使用支援 Automatic Discovery 的用戶端。

使用 Automatic Discovery 時，您的用戶端應用程式會使用組態端點連線至 Memcached 叢集。當您透過新增或移除節點以擴展叢集時，應用程式會自動「知道」叢集中的所有節點，並能連線至其中任何節點。如果未使用 Automatic Discovery，應用程式就無法完成上述作業；您必須在每次新增或移除節點時手動更新應用程式中的端點。

若要複製端點，請選擇端點位址前面的複製圖示。如需使用端點連線至節點的相關資訊，請參閱 [連線至 Memcached 節點](nodes-connecting.md#nodes-connecting.mem)。

組態端點和節點端點看起來非常類似。下列會將差異以**粗體**醒目提示。

```
myclustername.xxxxxx.cfg.usw2.cache.amazonaws.com:port   # configuration endpoint contains "cfg"
myclustername.xxxxxx.0001.usw2.cache.amazonaws.com:port  # node endpoint for node 0001
```

**重要**  
若您選擇為 Memcached 組態端點建立正式名稱記錄 (CNAME)，為了讓自動探索用戶端將正式名稱記錄 (CNAME) 辨識為組態端點，您必須在正式名稱記錄 (CNAME) 中包含 `.cfg.`。

## 尋找端點 (AWS CLI)
<a name="Endpoints.Find.CLI"></a>

對於 Memcached，您可以使用 AWS CLI for Amazon ElastiCache 來探索節點和叢集的端點。

對於 Redis OSS，您可以使用 AWS CLI 適用於 Amazon ElastiCache 的 來探索節點、叢集和複寫群組的端點。

**Topics**
+ [尋找節點和叢集的端點 (AWS CLI)](#Endpoints.Find.CLI.Nodes)
+ [尋找 Valkey 或 Redis OSS 複寫群組的端點 (AWS CLI)](#Endpoints.Find.CLI.ReplGroups)

### 尋找節點和叢集的端點 (AWS CLI)
<a name="Endpoints.Find.CLI.Nodes"></a>

您可以使用 AWS CLI ，透過 `describe-cache-clusters`命令探索叢集及其節點的端點。對於 Valkey 或 Redis OSS 叢集，命令會傳回叢集端點。 若是 Memcached 叢集，則命令會傳回組態端點。如果您包含選用參數 `--show-cache-node-info`，則命令也會傳回叢集中個別節點的端點。

**Example**  
以下命令會擷取 Memcached 叢集 *mycluster* 的組態端點 (`ConfigurationEndpoint`) 和個別節點端點 (`Endpoint`)。  
若為 Linux、macOS 或 Unix：  

```
aws elasticache describe-cache-clusters \
    --cache-cluster-id mycluster \
    --show-cache-node-info
```
針對 Windows：  

```
aws elasticache describe-cache-clusters ^
    --cache-cluster-id mycluster ^
    --show-cache-node-info
```
上述操作的輸出看起來應會與以下內容相似 (JSON 格式)。  

```
{
   "CacheClusters": [
   {
       "Engine": "memcached", 
       "CacheNodes": [
          {
             "CacheNodeId": "0001", 
             "Endpoint": {
                "Port": 11211, 
                "Address": "mycluster.amazonaws.com"
             }, 
                "CacheNodeStatus": "available", 
                "ParameterGroupStatus": "in-sync", 
                "CacheNodeCreateTime": "2016-09-22T21:30:29.967Z", 
                "CustomerAvailabilityZone": "us-west-2b"
          }, 
          {
             "CacheNodeId": "0002", 
             "Endpoint": {
                "Port": 11211, 
                "Address": "mycluster.amazonaws.com"
             }, 
                "CacheNodeStatus": "available", 
                "ParameterGroupStatus": "in-sync", 
                "CacheNodeCreateTime": "2016-09-22T21:30:29.967Z", 
                "CustomerAvailabilityZone": "us-west-2b"
          }, 
          {
                "CacheNodeId": "0003", 
                "Endpoint": {
                   "Port": 11211, 
                   "Address": "mycluster.amazonaws.com"
                }, 
                   "CacheNodeStatus": "available", 
                   "ParameterGroupStatus": "in-sync", 
                   "CacheNodeCreateTime": "2016-09-22T21:30:29.967Z", 
                   "CustomerAvailabilityZone": "us-west-2b"
          }
       ], 
       "CacheParameterGroup": {
       "CacheNodeIdsToReboot": [], 
       "CacheParameterGroupName": "default.memcached1.4", 
       "ParameterApplyStatus": "in-sync"
            }, 
            "CacheClusterId": "mycluster", 
            "PreferredAvailabilityZone": "us-west-2b", 
            "ConfigurationEndpoint": {
                "Port": 11211, 
                "Address": "mycluster.amazonaws.com"
            }, 
            "CacheSecurityGroups": [], 
            "CacheClusterCreateTime": "2016-09-22T21:30:29.967Z", 
            "AutoMinorVersionUpgrade": true, 
            "CacheClusterStatus": "available", 
            "NumCacheNodes": 3, 
            "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:", 
            "CacheSubnetGroupName": "default", 
            "EngineVersion": "1.4.24", 
            "PendingModifiedValues": {}, 
            "PreferredMaintenanceWindow": "mon:09:00-mon:10:00", 
            "CacheNodeType": "cache.m4.large",
             "DataTiering": "disabled"
        }
    ]   
}
```
若您選擇為 Memcached 組態端點建立 CNAME，為了讓自動探索用戶端將 CNAME 辨識為組態端點，您必須在 CNAME 中包含 `.cfg.`。例如，`session.save_path` 參數 php.ini 檔案中的 `mycluster.cfg.local`。

**Example**  
針對 Valkey 和 Redis OSS，下列命令會擷取單一節點叢集 *mycluster* 的叢集資訊。  
參數`--cache-cluster-id`可與複寫群組中的單一節點 Valkey 或 Redis OSS （停用叢集模式） 叢集 ID 或特定節點 ID 搭配使用。複寫群組`--cache-cluster-id`的 是 4 位數的值，例如 `0001`。如果 `--cache-cluster-id`是複寫群組中叢集 （節點） 的 ID，則 `replication-group-id`會包含在輸出中。
若為 Linux、macOS 或 Unix：  

```
aws elasticache describe-cache-clusters \
    --cache-cluster-id redis-cluster \
    --show-cache-node-info
```
針對 Windows：  

```
aws elasticache describe-cache-clusters ^
    --cache-cluster-id redis-cluster ^
    --show-cache-node-info
```
上述操作的輸出看起來應會與以下內容相似 (JSON 格式)。  

```
{
    "CacheClusters": [
        {
            "CacheClusterStatus": "available",
            "SecurityGroups": [
                {
                    "SecurityGroupId": "sg-77186e0d",
                    "Status": "active"
                }
            ],
            "CacheNodes": [
                {
                    "CustomerAvailabilityZone": "us-east-1b",
                    "CacheNodeCreateTime": "2018-04-25T18:19:28.241Z",
                    "CacheNodeStatus": "available",
                    "CacheNodeId": "0001",
                    "Endpoint": {
                        "Address": "redis-cluster.amazonaws.com",
                        "Port": 6379
                    },
                    "ParameterGroupStatus": "in-sync"
                }
            ],
            "AtRestEncryptionEnabled": false,
            "CacheClusterId": "redis-cluster",
            "TransitEncryptionEnabled": false,
            "CacheParameterGroup": {
                "ParameterApplyStatus": "in-sync",
                "CacheNodeIdsToReboot": [],
                "CacheParameterGroupName": "default.redis3.2"
            },
            "NumCacheNodes": 1,
            "PreferredAvailabilityZone": "us-east-1b",
            "AutoMinorVersionUpgrade": true,
            "Engine": "redis",
            "AuthTokenEnabled": false,
            "PendingModifiedValues": {},
            "PreferredMaintenanceWindow": "tue:08:30-tue:09:30",
            "CacheSecurityGroups": [],
            "CacheSubnetGroupName": "default",
            "CacheNodeType": "cache.t2.small",
             "DataTiering": "disabled"
            "EngineVersion": "3.2.10",
            "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:",
            "CacheClusterCreateTime": "2018-04-25T18:19:28.241Z"
        }
    ]
}
```

如需詳細資訊，請參閱 [describe-cache-clusters](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-cache-clusters.html) 主題。

### 尋找 Valkey 或 Redis OSS 複寫群組的端點 (AWS CLI)
<a name="Endpoints.Find.CLI.ReplGroups"></a>

您可以使用 AWS CLI ，透過 `describe-replication-groups`命令探索複寫群組及其叢集的端點。此命令會傳回複寫群組的主要端點、複寫群組中所有叢集 (節點) 的清單和其端點，以及讀取器端點。

下列操作會擷取複寫群組 `myreplgroup` 的主要端點與讀取器端點。使用主要端點來進行所有寫入操作。

```
aws elasticache describe-replication-groups \
    --replication-group-id myreplgroup
```

針對 Windows：

```
aws elasticache describe-replication-groups ^
    --replication-group-id myreplgroup
```

此操作的輸出看起來應會與以下內容相似 (JSON 格式)。

```
{
   "ReplicationGroups": [
     {
       "Status": "available", 
       "Description": "test", 
       "NodeGroups": [
         {
            "Status": "available", 
               "NodeGroupMembers": [
                  {
                     "CurrentRole": "primary", 
                     "PreferredAvailabilityZone": "us-west-2a", 
                     "CacheNodeId": "0001", 
                     "ReadEndpoint": {
                        "Port": 6379, 
                        "Address": "myreplgroup-001.amazonaws.com"
                     }, 
                     "CacheClusterId": "myreplgroup-001"
                  }, 
                  {
                     "CurrentRole": "replica", 
                     "PreferredAvailabilityZone": "us-west-2b", 
                     "CacheNodeId": "0001", 
                     "ReadEndpoint": {
                        "Port": 6379, 
                        "Address": "myreplgroup-002.amazonaws.com"
                     }, 
                     "CacheClusterId": "myreplgroup-002"
                  }, 
                  {
                     "CurrentRole": "replica", 
                     "PreferredAvailabilityZone": "us-west-2c", 
                     "CacheNodeId": "0001", 
                     "ReadEndpoint": {
                        "Port": 6379, 
                        "Address": "myreplgroup-003.amazonaws.com"
                     }, 
                     "CacheClusterId": "myreplgroup-003"
                  }
               ], 
               "NodeGroupId": "0001", 
               "PrimaryEndpoint": {
                  "Port": 6379, 
                  "Address": "myreplgroup.amazonaws.com"
               },
               "ReaderEndpoint": {
                  "Port": 6379, 
                  "Address": "myreplgroup-ro.amazonaws.com"
               }
            }
         ], 
         "ReplicationGroupId": "myreplgroup", 
         "AutomaticFailover": "enabled", 
         "SnapshottingClusterId": "myreplgroup-002", 
         "MemberClusters": [
            "myreplgroup-001", 
            "myreplgroup-002", 
            "myreplgroup-003"
         ], 
         "PendingModifiedValues": {}
      }
   ]
}
```

如需詳細資訊，請參閱 *AWS CLI CLI 命令參考*中的 [describe-replication-groups](https://docs.aws.amazon.com/cli/latest/reference/elasticache/describe-replication-groups.html)。

## 尋找端點 (ElastiCache API)
<a name="Endpoints.Find.API"></a>

對於 Memcached，您可以使用 Amazon ElastiCache API 來探索節點和叢集的端點。

對於 Redis OSS，您可以使用 Amazon ElastiCache API 探索節點、叢集和複寫群組的端點。

**Topics**
+ [找節點和叢集的端點 (ElastiCache API)](#Endpoints.Find.API.Nodes)
+ [尋找 Valkey 或 Redis OSS 複寫群組的端點 (ElastiCache API)](#Endpoints.Find.API.ReplGroups)

### 找節點和叢集的端點 (ElastiCache API)
<a name="Endpoints.Find.API.Nodes"></a>

您可以使用 ElastiCache API 與 `DescribeCacheClusters` 動作，探索叢集和其節點的端點。對於 Valkey 或 Redis OSS 叢集，命令會傳回叢集端點。 若是 Memcached 叢集，則命令會傳回組態端點。如果您包含選用參數 `ShowCacheNodeInfo`，則動作也會傳回叢集中個別節點的端點。

**Example**  
對於 Memcached，下列命令會擷取 Memcached 叢集 *mycluster* 的組態端點 (`ConfigurationEndpoint`) 和個別節點端點 (`Endpoint`)。  

```
https://elasticache.us-west-2.amazonaws.com/
    ?Action=DescribeCacheClusters
    &CacheClusterId=mycluster
    &ShowCacheNodeInfo=true
    &SignatureVersion=4
    &SignatureMethod=HmacSHA256
    &Timestamp=20150202T192317Z
    &Version=2015-02-02
    &X-Amz-Credential=<credential>
```
若您選擇為 Memcached 組態端點建立 CNAME，為了讓自動探索用戶端將 CNAME 辨識為組態端點，您必須在 CNAME 中包含 `.cfg.`。例如，`session.save_path` 參數 php.ini 檔案中的 `mycluster.cfg.local`。

### 尋找 Valkey 或 Redis OSS 複寫群組的端點 (ElastiCache API)
<a name="Endpoints.Find.API.ReplGroups"></a>

您可以使用 ElastiCache API 與 `DescribeReplicationGroups` 動作，探索複寫群組和其叢集的端點。此動作會傳回複寫群組的主要端點、複寫群組中所有叢集的清單和其端點，以及讀取器端點。

下列操作會擷取複寫群組 `myreplgroup` 的主要端點 (PrimaryEndpoint)、讀取器端點 (ReaderEndpoint) 與個別節點端點 (ReadEndpoint)。使用主要端點來進行所有寫入操作。

```
https://elasticache.us-west-2.amazonaws.com/
    ?Action=DescribeReplicationGroups
    &ReplicationGroupId=myreplgroup
    &SignatureVersion=4
    &SignatureMethod=HmacSHA256
    &Timestamp=20150202T192317Z
    &Version=2015-02-02
    &X-Amz-Credential=<credential>
```

如需詳細資訊，請參閱 [DescribeReplicationGroups](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_DescribeReplicationGroups.html)。

# 在 ElastiCache 中使用碎片
<a name="Shards"></a>

碎片 (API/CLI：節點群組） 是一到六個 ElastiCache for Valkey 或 Redis OSS 節點的集合。Valkey 或 Redis OSS （停用叢集模式） 叢集絕不會有多個碎片。使用碎片，您可以將大型資料庫分成較小、更快速且更易於管理的部分，稱為資料碎片。這可以透過將操作分散到多個不同的區段來提高資料庫效率。使用碎片可以提供許多好處，包括改善效能、可擴展性和成本效益。

您可以建立具有較高數量碎片和較低數量複本的叢集，每一叢集最高總計為 90 個節點。此叢集組態的範圍可以從 90 個碎片和 0 個複本到 15 個碎片和 5 個複本，這是允許的複本最大數量。叢集的資料會分割到叢集的各個碎片中。如果一個碎片中有超過一個節點，碎片會實作複寫，其中一個節點為讀取/寫入主要節點，其他節點則為僅供讀取複本節點。

如果引擎版本為 Valkey 7.2 及更高版本，或 Redis OSS 5.0.6 至 7.1，則每個叢集的節點或碎片限制最多可增加至 500 個。例如，您可以選擇設定具有 500 個節點的叢集，並容許碎片在 83 個（每個碎片一個主要版本和 5 個複本）到 500 個（單一主要版本並且沒有複本）之間變化。請確保有足夠的可用 IP 地址來容納增加的數量。常見的缺陷包括子網路群組中的子網路的 CIDR 範圍太小，或是子網路被共用並被其他叢集大量使用。如需詳細資訊，請參閱[建立子網路群組](SubnetGroups.Creating.md)。

 對於 5.0.6 以下的版本，每個叢集的限制為 250 個。

若要請求提高配額，請參閱 [AWS 服務配額](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)，並選擇配額類型 **Nodes per cluster per instance type (每執行個體類型每叢集的節點數)**。

當您使用 ElastiCache 主控台建立 Valkey 或 Redis OSS （啟用叢集模式） 叢集時，您可以指定叢集中的碎片數量和碎片中的節點數量。如需詳細資訊，請參閱[建立 Valkey 或 Redis OSS （啟用叢集模式） 叢集 （主控台）](Clusters.Create.md#Clusters.Create.CON.RedisCluster)。如果您使用 ElastiCache API 或 AWS CLI 來建立叢集 （在 API/CLI 中稱為*複寫群組*)，您可以獨立設定碎片 (API/CLI：節點群組） 中的節點數量。如需詳細資訊，請參閱下列內容：
+ API：[CreateReplicationGroup](https://docs.aws.amazon.com/AmazonElastiCache/latest/APIReference/API_CreateReplicationGroup.html)
+ CLI：[create-replication-group](https://docs.aws.amazon.com/cli/latest/reference/elasticache/create-replication-group.html)

碎片中的每個節點都具有相同的運算、儲存體及記憶體規格。ElastiCache API 可讓您控制碎片的屬性，例如節點數、安全設定，以及系統維護時間。

![\[影像：Valkey 或 Redis OSS 碎片組態。\]](http://docs.aws.amazon.com/zh_tw/AmazonElastiCache/latest/dg/images/ElastiCacheClusters-CSN-RedisShards.png)


*Valkey 或 Redis OSS 碎片組態*

如需詳細資訊，請參閱[Valkey 或 Redis OSS 的離線重新分片 （啟用叢集模式）](scaling-redis-cluster-mode-enabled.md#redis-cluster-resharding-offline)及[Valkey 或 Redis OSS 的線上重新分片 （啟用叢集模式）](scaling-redis-cluster-mode-enabled.md#redis-cluster-resharding-online)。

## 尋找碎片的 ID
<a name="shard-find-id"></a>

您可以使用 AWS 管理主控台、 AWS CLI 或 ElastiCache API 尋找碎片的 ID。

### 使用 AWS 管理主控台
<a name="shard-find-id-con"></a>



**Topics**
+ [針對 Valkey 或 Redis OSS （停用叢集模式）](#shard-find-id-con-classic)
+ [針對 Valkey 或 Redis OSS （啟用叢集模式）](#shard-find-id-con-cluster)

#### 針對 Valkey 或 Redis OSS （停用叢集模式）
<a name="shard-find-id-con-classic"></a>

Valkey 或 Redis OSS （停用叢集模式） 複寫群組碎片 IDs 一律為 `0001`。

#### 針對 Valkey 或 Redis OSS （啟用叢集模式）
<a name="shard-find-id-con-cluster"></a>

下列程序使用 AWS 管理主控台 尋找 Valkey 或 Redis OSS （啟用叢集模式） 的複寫群組碎片 ID。

**在 Valkey 或 Redis OSS （啟用叢集模式） 複寫群組中尋找碎片 ID**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/) 的 ElastiCache 主控台。

1. 在導覽窗格中，選擇 **Valkey** 或 **Redis OSS**，然後選擇您要尋找碎片 IDs 的 Valkey 或 Redis OSS （啟用叢集模式） 複寫群組的名稱。

1. 在 **Shard Name (碎片名稱)** 欄中，碎片 ID 是碎片名稱的最後四位數。

### 使用 AWS CLI
<a name="shard-find-id-cli"></a>

若要尋找 Valkey 或 Redis OSS （停用叢集模式） 或 Valkey 或 Redis OSS （啟用叢集模式） 複寫群組的碎片 （節點群組） ID，請使用 AWS CLI 操作`describe-replication-groups`搭配下列選用參數。
+ **`--replication-group-id`** - 選用參數，使用時會將輸出限制為指定複寫群組的詳細資訊。若忽略此參數，則最多會傳回 100 個複寫群組詳細資訊。

**Example**  
此命令將傳回 `sample-repl-group` 的詳細資訊。  
若為 Linux、macOS 或 Unix：  

```
aws elasticache describe-replication-groups \
    --replication-group-id sample-repl-group
```
針對 Windows：  

```
aws elasticache describe-replication-groups ^
    --replication-group-id sample-repl-group
```
此命令的輸出看起來會與以下內容相似。碎片 (節點群組) ID 已在此 *highlighted* (反白)，可讓您更輕易地找到。  

```
{
    "ReplicationGroups": [
        {
            "Status": "available", 
            "Description": "2 shards, 2 nodes (1 + 1 replica)", 
            "NodeGroups": [
                {
                    "Status": "available", 
                    "Slots": "0-8191", 
                    "NodeGroupId": "0001", 
                    "NodeGroupMembers": [
                        {
                            "PreferredAvailabilityZone": "us-west-2c", 
                            "CacheNodeId": "0001", 
                            "CacheClusterId": "sample-repl-group-0001-001"
                        }, 
                        {
                            "PreferredAvailabilityZone": "us-west-2a", 
                            "CacheNodeId": "0001", 
                            "CacheClusterId": "sample-repl-group-0001-002"
                        }
                    ]
                }, 
                {
                    "Status": "available", 
                    "Slots": "8192-16383", 
                    "NodeGroupId": "0002", 
                    "NodeGroupMembers": [
                        {
                            "PreferredAvailabilityZone": "us-west-2b", 
                            "CacheNodeId": "0001", 
                            "CacheClusterId": "sample-repl-group-0002-001"
                        }, 
                        {
                            "PreferredAvailabilityZone": "us-west-2a", 
                            "CacheNodeId": "0001", 
                            "CacheClusterId": "sample-repl-group-0002-002"
                        }
                    ]
                }
            ], 
            "ConfigurationEndpoint": {
                "Port": 6379, 
                "Address": "sample-repl-group.9dcv5r.clustercfg.usw2.cache.amazonaws.com"
            }, 
            "ClusterEnabled": true, 
            "ReplicationGroupId": "sample-repl-group", 
            "SnapshotRetentionLimit": 1, 
            "AutomaticFailover": "enabled", 
            "SnapshotWindow": "13:00-14:00", 
            "MemberClusters": [
                "sample-repl-group-0001-001", 
                "sample-repl-group-0001-002", 
                "sample-repl-group-0002-001", 
                "sample-repl-group-0002-002"
            ], 
            "CacheNodeType": "cache.m3.medium", 
            "DataTiering": "disabled",
            "PendingModifiedValues": {}
        }
    ]
}
```

### 使用 ElastiCache API
<a name="shard-find-id-api"></a>

若要尋找 Valkey 或 Redis OSS （停用叢集模式） 或 Valkey 或 Redis OSS （啟用叢集模式） 複寫群組的碎片 （節點群組） ID，請使用 AWS CLI 操作`describe-replication-groups`搭配下列選用參數。
+ **`ReplicationGroupId`** - 選用參數，使用時會將輸出限制為指定複寫群組的詳細資訊。若忽略此參數，則最多會傳回 *xxx* 個複寫群組詳細資訊。

**Example**  
此命令將傳回 `sample-repl-group` 的詳細資訊。  
若為 Linux、macOS 或 Unix：  

```
https://elasticache.us-west-2.amazonaws.com/
   ?Action=DescribeReplicationGroup
   &ReplicationGroupId=sample-repl-group
   &Version=2015-02-02
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Timestamp=20150202T192317Z
   &X-Amz-Credential=<credential>
```