使用複本擴展 Redis OSS 叢集 - Amazon ElastiCache (雷迪OSS斯)

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

使用複本擴展 Redis OSS 叢集

Amazon ElastiCache 提供主控台、CLI 和 API 支援,以擴展 Redis OSS (叢集模式已停用) 複寫群組。

啟動擴展程序時, ElastiCache 請執行下列動作:

  1. 使用新節點類型啟動複寫群組。

  2. 將所有資料從目前的主要節點複製到新的主要節點。

  3. 將新的僅供讀取複本與新主要節點同步。

  4. 更新 DNS 項目,使得它們指向新節點。因此,您不需在應用程式中更新端點。對於 Redis OSS 5.0.5 及更新版本,您可以擴展啟用 auto 容錯移轉的叢集,同時叢集繼續保持在線狀態並提供傳入的要求。在 4.0.10 和以下版本中,您會注意到,DNS 項目更新的同時,前幾版來自主節點的讀取和寫入發生短暫中斷。

  5. 刪除舊節點 (CLI/API:複寫群組)。您會注意到來自舊節點的讀取和寫入發生短暫中斷 (幾秒鐘),因為與舊節點的連線將會中斷。

此程序需要的時間與您的節點類型以及叢集中的資料量有關。

如下表所示,如果您已為叢集的下一個維護時段排定引擎升級,則會封鎖 Redis OSS 向上擴充作業。

封鎖的雷迪斯 OSS 作業
擱置中操作 封鎖的操作
向上擴展 立即升級引擎
引擎升級 立即向上擴展
向上擴展與升級引擎 立即向上擴展
立即升級引擎

如果您有正封鎖您的擱置中操作,您可以執行下列其中一項。

  • 清除 [立即套用] 核取方塊 (CLI 使用:--no-apply-immediately, API 使用:),排程 Redis OSS 向上擴充作業的下一個維護時段。ApplyImmediately=false

  • 請等到下一個維護時段 (或之後),以執行 Redis OSS 向上擴充作業。

  • 將 Redis OSS 引擎升級新增至此快取叢集修改,並選取 [立即套用] 核取方塊 (CLI 使用:--apply-immediately, API 使用:ApplyImmediately=true)。這樣會透過讓引擎升級立即執行,來解除封鎖您的向上擴展操作。

下列各節說明如何使用 ElastiCache 主控台、和 API 擴展具有複本的 Redis OSS 叢集。 AWS CLI ElastiCache

重要

如果您的參數群組使用reserved-memory為 Redis OSS 額外負荷預留記憶體,在開始調整規模之前,請確定您有一個自訂參數群組,為新節點類型保留正確的記憶體數量。或者,您可以修改自訂參數群組,使得它會對您的新叢集使用 reserved-memory-percent 並使用該參數群組。

如果您使用 reserved-memory-percent,則不需執行此動作。

如需詳細資訊,請參閱 管理預留記憶體

向上擴展至較大的節點類型所需的時間可能不同,取決於節點類型和您目前叢集中的資料量。

下列程序會使用 ElastiCache 主控台將叢集的複本從目前的節點類型擴展到新的較大節點類型。在此過程中,更新 DNS 項目時,其他版本的主節點可能會發生讀取和寫入短暫中斷的情況。在 5.0.6 和更新版本上執行的節點,停機時間可能不到 1 秒,而在較舊版本上則可達數秒。

若要使用複本 (主控台) 擴充 Redis OSS 叢集
  1. 請登入 AWS Management Console 並開啟 ElastiCache 主控台,網址為 https://console.aws.amazon.com/elasticache/

  2. 在瀏覽窗格中,選擇 Redis 的 OSS 叢

  3. 從叢集的清單,選擇您要向上擴展的叢集。此叢集必須執行 Redis 的 OSS 引擎,而不是叢集 Redis 的 OSS 引擎。

  4. 選擇 Modify (修改)。

  5. Modify Cluster (修改叢集) 精靈中:

    1. Node type (節點類型) 清單選擇您要擴展的節點類型。請注意,並非所有節點類型都可縮減規模。

    2. 如果您使用 reserved-memory 來管理記憶體,請從 Parameter Group (參數群組) 清單中,選擇會為新節點類型保留正確記憶體數量的自訂參數群組。

  6. 如果您要立即執行向上擴展程序,請選擇 Apply immediately (立即套用) 核取方塊。如果將 Apply immediately (立即套用) 核取方塊保留未選擇,在此叢集的下一個維護時段期間,會執行向上擴展程序。

  7. 選擇 Modify (修改)。

  8. 當叢集的狀態從 modifying (修改中) 變更為 available (可用),您的叢集即已擴展為新節點類型。不需要在應用程式中更新端點。

下列程序會使用 AWS CLI,將複寫群組從其目前的節點類型擴展至新的、較大的節點類型。在此過程中, ElastiCache (Redis 的 OSS) 會更新 DNS 項目,以便它們指向新的節點。因此,您不需在應用程式中更新端點。對於 Redis OSS 5.0.5 及更新版本,您可以擴展啟用 auto 容錯移轉的叢集,同時叢集繼續保持在線狀態並提供傳入的要求。在 4.0.10 和以下版本中,您會注意到,DNS 項目更新的同時,前幾版來自主節點的讀取和寫入發生短暫中斷。

向上擴展至較大的節點類型所需的時間可能不同,取決於節點類型和您目前快取叢集中的資料量。

若要擴充 Redis 的 OSS 複寫群組 ()AWS CLI
  1. 透過使用下列參數執行 AWS CLI list-allowed-node-type-modifications命令,決定您可以擴展到哪些節點類型。

    • --replication-group-id - 複寫群組的名稱。使用此參數來描述特定複寫群組 (而非所有複寫群組)。

    若為 Linux、macOS 或 Unix:

    aws elasticache list-allowed-node-type-modifications \ --replication-group-id my-repl-group

    針對 Windows:

    aws elasticache list-allowed-node-type-modifications ^ --replication-group-id my-repl-group

    此操作的輸出看起來會類似這個 (JSON 格式)。

    { "ScaleUpModifications": [ "cache.m3.2xlarge", "cache.m3.large", "cache.m3.xlarge", "cache.m4.10xlarge", "cache.m4.2xlarge", "cache.m4.4xlarge", "cache.m4.large", "cache.m4.xlarge", "cache.r3.2xlarge", "cache.r3.4xlarge", "cache.r3.8xlarge", "cache.r3.large", "cache.r3.xlarge" ] }

    如需詳細資訊,請參閱 AWS CLI 參考中的「list-allowed-node-type-modifications」。

  2. 使用具有下列參數的 AWS CLI modify-replication-group命令,將目前的複寫群組擴展到新節點類型。

    • --replication-group-id - 複寫群組的名稱。

    • --cache-node-type - 此複寫群組中較大的新快取叢集節點類型。此值必須是步驟 1 中 list-allowed-node-type-modifications 命令傳回的其中一個執行個體類型。

    • --cache-parameter-group-name - [選用] 如果您使用 reserved-memory 來管理叢集的保留記憶體,請使用此參數。指定自訂快取參數群組,其會為您的新節點類型保留正確的記憶體數量。如果您要使用 reserved-memory-percent,則可以忽略此參數。

    • --apply-immediately - 會造成立即套用擴充規模程序。若要將向上擴展操作延期至下一個維護時段,請使用 --no-apply-immediately

    若為 Linux、macOS 或 Unix:

    aws elasticache modify-replication-group \ --replication-group-id my-repl-group \ --cache-node-type cache.m3.xlarge \ --cache-parameter-group-name redis32-m3-2xl \ --apply-immediately

    針對 Windows:

    aws elasticache modify-replication-group ^ --replication-group-id my-repl-group ^ --cache-node-type cache.m3.xlarge ^ --cache-parameter-group-name redis32-m3-2xl \ --apply-immediately

    此命令的輸出看起來會類似這個 (JSON 格式)。

    { "ReplicationGroup": { "Status": "available", "Description": "Some description", "NodeGroups": [{ "Status": "available", "NodeGroupMembers": [{ "CurrentRole": "primary", "PreferredAvailabilityZone": "us-west-2b", "CacheNodeId": "0001", "ReadEndpoint": { "Port": 6379, "Address": "my-repl-group-001.8fdx4s.0001.usw2.cache.amazonaws.com" }, "CacheClusterId": "my-repl-group-001" }, { "CurrentRole": "replica", "PreferredAvailabilityZone": "us-west-2c", "CacheNodeId": "0001", "ReadEndpoint": { "Port": 6379, "Address": "my-repl-group-002.8fdx4s.0001.usw2.cache.amazonaws.com" }, "CacheClusterId": "my-repl-group-002" } ], "NodeGroupId": "0001", "PrimaryEndpoint": { "Port": 6379, "Address": "my-repl-group.8fdx4s.ng.0001.usw2.cache.amazonaws.com" } }], "ReplicationGroupId": "my-repl-group", "SnapshotRetentionLimit": 1, "AutomaticFailover": "disabled", "SnapshotWindow": "12:00-13:00", "SnapshottingClusterId": "my-repl-group-002", "MemberClusters": [ "my-repl-group-001", "my-repl-group-002" ], "PendingModifiedValues": {} } }

    如需詳細資訊,請參閱 AWS CLI 參考中的「modify-replication-group」。

  3. 如果您使用此--apply-immediately參數,請使用具有下列參數的 AWS CLI describe-replication-group命令來監視複寫群組的狀態。如果狀態仍是修改中,更新 DNS 項目時,在 5.0.6 和更新版本上執行的節點,停機時間可能不到 1 秒,而在較舊版本上,主節點的讀取和寫入則會短暫中斷。

    • --replication-group-id - 複寫群組的名稱。使用此參數來描述特定複寫群組 (而非所有複寫群組)。

    若為 Linux、macOS 或 Unix:

    aws elasticache describe-replication-groups \ --replication-group-id my-replication-group

    針對 Windows:

    aws elasticache describe-replication-groups ^ --replication-group-id my-replication-group

    如需詳細資訊,請參閱〈AWS CLI 參考describe-replication-groups中的〈〉。

下列程序會使用 ElastiCache API 將您的複寫群組從目前的節點類型調整為新的較大節點類型。對於 Redis OSS 5.0.5 及更新版本,您可以擴展啟用 auto 容錯移轉的叢集,同時叢集繼續保持在線狀態並提供傳入的要求。在 4.0.10 和以下版本中,您會注意到,DNS 項目更新的同時,前幾版來自主節點的讀取和寫入發生短暫中斷。

向上擴展至較大的節點類型所需的時間可能不同,取決於節點類型和您目前快取叢集中的資料量。

若要擴充 Redis 的 OSS 複寫群組 (API) ElastiCache
  1. 使用具有下列參數的 ElastiCache API ListAllowedNodeTypeModifications 動作,判斷可擴展成哪些節點類型。

    • ReplicationGroupId - 複寫群組的名稱。使用此參數來描述特定複寫群組 (而非所有複寫群組)。

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

    如需詳細資訊,請ListAllowedNodeTypeModifications參閱 Amazon ElastiCache API 參考中的。

  2. 使用 ModifyRedplicationGroup ElastiCache API 動作並使用下列參數,將目前的複寫群組擴展到新節點類型。

    • ReplicationGroupId - 複寫群組的名稱。

    • CacheNodeType - 此複寫群組中較大的新快取叢集節點類型。此值必須是步驟 1 中 ListAllowedNodeTypeModifications 動作傳回的其中一個執行個體類型。

    • CacheParameterGroupName - [選用] 如果您使用 reserved-memory 來管理叢集的保留記憶體,請使用此參數。指定自訂快取參數群組,其會為您的新節點類型保留正確的記憶體數量。如果您要使用 reserved-memory-percent,則可以忽略此參數。

    • ApplyImmediately - 設定為 true 會立即套用擴充規模程序。若要將向上擴展程序延期至下一個維護時段,請使用 ApplyImmediately=false

    https://elasticache.us-west-2.amazonaws.com/ ?Action=ModifyReplicationGroup &ApplyImmediately=true &CacheNodeType=cache.m3.2xlarge &CacheParameterGroupName=redis32-m3-2xl &ReplicationGroupId=myReplGroup &SignatureVersion=4 &SignatureMethod=HmacSHA256 &Timestamp=20141201T220302Z &Version=2014-12-01 &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>

    如需詳細資訊,請ModifyReplicationGroup參閱 Amazon ElastiCache API 參考中的。

  3. 如果已使用 ApplyImmediately=true,請使用具有下列參數的 ElastiCache API DescribeReplicationGroups 動作監視複寫群組的狀態。當狀態從 modifying (修改中) 變更為 available (可用),您即可以開始寫入新的、已向上擴展的複寫群組。

    • ReplicationGroupId - 複寫群組的名稱。使用此參數來描述特定複寫群組 (而非所有複寫群組)。

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

    如需詳細資訊,請DescribeReplicationGroups參閱 Amazon ElastiCache API 參考中的。