本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
啟用傳輸中加密時的最佳實務
啟用傳輸中加密之前:請確定您有適當的DNS記錄處理
注意
在此過程中,我們正在變更和刪除舊端點。不正確使用端點可能會導致 Valkey 或 Redis OSS用戶端使用舊的和已刪除的端點,以防止其連接至叢集。
當叢集從無TLS 遷移至TLS偏好 時,會保留舊的每個節點DNS記錄,並以不同的格式產生新的每個節點DNS記錄。TLS啟用 的叢集使用與 non-TLS-enabled叢集不同的DNS記錄格式。當叢集設定為加密模式時, ElastiCache 會保留兩個DNS記錄:偏好 ,以便應用程式和其他 Valkey 或 Redis OSS用戶端可以在它們之間切換。DNS 記錄中的下列變更會在TLS遷移程序期間發生:
說明啟用傳輸中加密時DNS記錄的變更
對於CME叢集
當叢集設定為「傳輸加密模式:偏好」時:
-
未TLS啟用叢集的原始叢集端點將保持作用中狀態。當叢集重新設定表單TLS加密模式「無」為「偏好」時,不會有停機時間。
-
當叢集設定為 TLS- 偏好模式時,將產生新的 TLS Valkey 或 Redis OSS端點。這些新端點將解析為IPs與舊端點相同的端點 (非TLS)。
-
新的 TLS Valkey 或 Redis OSS組態端點將在ElastiCache 主控台中公開,並回應
describe-replication-group
API。
當叢集設定為「傳輸加密模式:需要」時:
-
舊的TLS未啟用端點將被刪除。TLS 叢集端點不會停機。
-
您可以從
cluster-configuration-endpoint
ElastiCache 主控台或從describe-replication-group
擷取新的 API。
對於啟用自動容錯移轉或停用自動容錯移轉的CMD叢集
當複寫群組設為「傳輸加密模式:偏好」時:
-
未TLS啟用叢集的原始主要端點和讀取器端點將保持作用中。
-
當叢集設定為 TLS
Preferred
模式時,將產生新的TLS主要和讀取器端點。此新端點將解析為與舊端點 (非) 相同的 IPTLS。 -
新的主要端點和讀取器端點將在 ElastiCache 主控台中公開,並回應
describe-replication-group
API。
當複寫群組設為「傳輸加密模式:需要」時:
-
將刪除舊的非TLS主要和讀取器端點。TLS 叢集端點不會停機。
-
您可以從主控台或 ElastiCache擷取新的主要和讀取器端點
describe-replication-group
API。
DNS 記錄的建議用量
對於CME叢集
-
使用叢集組態端點,而不是應用程式程式碼中的每個節點DNS記錄。不建議直接使用每個節點DNS名稱,因為它們可能會在新增或移除碎片時變更。
-
不要在應用程式中對叢集組態端點進行硬式編碼,因為它會在此過程中發生變更。
-
在應用程式中對叢集組態端點進行硬式編碼是一種不好的做法,因為它可能在此過程中變更。傳輸中加密完成後,請使用 查詢叢集組態端點
describe-replication-group
API (如上所示 (粗體)),並使用DNS您在此時間點收到回應的 。
對於已啟用自動容錯移轉的CMD叢集
-
使用主要端點和讀取器端點,而不是應用程式程式碼中的每個節點DNS名稱,因為刪除舊的每個節點名稱,並在將叢集從不TLS偏好遷移到TLS偏好時產生新的節點DNS名稱。不建議直接使用每個節點DNS名稱,因為您可能會在未來將複本新增至叢集。此外,啟用自動容錯移轉時, ElastiCache 服務會自動變更主要叢集和複本的角色,建議使用主要端點和讀取器端點來協助您追蹤這些變更。最後,使用讀取器端點可協助您在叢集中的複本之間平均分配複本的讀取。
-
在應用程式中硬式編碼主要端點和讀取器端點是不良做法,因為它可以在TLS遷移過程中變更。遷移變更為 TLS- 偏好完成後,使用 describe-replication-group查詢主要端點和讀取器端點,API並使用DNS您從此時間點開始收到的 作為回應。如此,您將能夠以動態方式追踪端點中的變更。
對於停用自動容錯移轉的CMD叢集
-
使用主要端點和讀取器端點,而不是應用程式程式碼中的每個節點DNS名稱。停用自動容錯移轉時,您改為完成擴展、修補、容錯移轉,以及啟用自動容錯移轉時由 ElastiCache 服務自動管理的其他程序。這可讓您更輕易地手動追蹤不同端點。由於刪除舊的每個節點DNS名稱,並在將叢集從不TLS偏好遷移至不TLS偏好時產生新的節點名稱,因此請勿直接使用每個節點DNS名稱。這是強制性的,以便用戶端可以在 TLS遷移期間連線到叢集。此外,使用讀取器端點時,您將受益於在複本之間平均分散讀取,並在從叢集新增或刪除複本時追蹤 DNS記錄。
-
在應用程式中硬式編碼叢集組態端點是不良做法,因為它可以在TLS遷移過程中變更。
在傳輸過程中加密:注意遷移過程何時完成
傳輸加密模式的變更不是立即的,可能需要一些時間。大型叢集尤其如此。只有當叢集完成遷移至 TLS- 偏好時,它才能接受並同時提供 TCP 和 TLS連線。因此,在傳輸中加密完成之前,您不應建立會嘗試建立叢集TLS連線的用戶端。
在傳輸中加密成功完成或失敗時,有幾種方法可以得到通知:(未顯示於上面的程式碼範例中):
-
加密完成後,使用 SNS服務取得通知
-
使用
describe-events
API會在加密完成時發出事件 -
在 ElastiCache 主控台中看到已完成加密的訊息
您也可以在應用程式中實作邏輯,以瞭解加密是否完成。在上面的範例中,我們看到了幾種確保叢集完成遷移的方法:
-
等待遷移程序開始 (叢集狀態變更為「修改」),並等待修改完成 (叢集狀態會變回「可用」)
-
透過查詢 ,確認叢集已
transit_encryption_enabled
設定為 Truedescribe-replication-group
API。
啟用傳輸中加密之後:確定您使用的用戶端設定正確
當叢集處於 TLS偏好模式時,您的應用程式應開啟叢集的TLS連線,並僅使用這些連線。如此一來,您的應用程式在啟用傳輸中加密時就不會遇到停機時間。您可以使用 SSL區段下的資訊命令,確保沒有更明確的 Valkey 或 Redis OSS引擎TCP連線。
# SSL ssl_enabled:yes ssl_current_certificate_not_before_date:Mar 20 23:27:07 2017 GMT ssl_current_certificate_not_after_date:Feb 24 23:27:07 2117 GMT ssl_current_certificate_serial:D8C7DEA91E684163 tls_mode_connected_tcp_clients:0 (should be zero) tls_mode_connected_tls_clients:100