存取 ElastiCache 叢集或複寫群組 - Amazon ElastiCache

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

存取 ElastiCache 叢集或複寫群組

您的 Amazon ElastiCache 執行個體旨在透過 Amazon EC2執行個體存取。

如果您在 Amazon Virtual Private Cloud (AmazonVPC) 中啟動 ElastiCache 執行個體,您可以從相同 Amazon 中的 Amazon EC2執行個體存取執行個體 ElastiCacheVPC。或者,使用VPC對等,您可以從不同 Amazon EC2中的 Amazon 存取 ElastiCache 執行個體VPC。

如果您在 EC2 Classic 中啟動 ElastiCache 執行個體,則允許EC2執行個體透過授予與執行個體相關聯的 Amazon EC2安全群組存取快取安全群組來存取叢集。根據預設,僅有啟動叢集的帳戶才能存取該叢集。

授權存取您的叢集或複寫群組

您已將叢集啟動至 EC2-VPC

如果您將叢集啟動至 Amazon Virtual Private Cloud (Amazon VPC),您只能從在相同 Amazon 中執行的 Amazon EC2執行個體連線至叢集 ElastiCacheVPC。在此情況下,您需要授權透過網路輸入至叢集。

注意

如果您有使用 Local Zones,請確定已啟用。如需詳細資訊,請參閱啟用 Local Zones。如此一來,您的 VPC 就會延伸到該 Local Zone,您的 VPC會將子網路視為任何其他可用區域和相關閘道、路由表和其他安全群組考量中的任何子網路。 會自動調整。

將網路輸入從 Amazon VPC安全群組授予叢集
  1. 登入 AWS Management Console 並在 開啟 Amazon EC2主控台https://console.aws.amazon.com/ec2/

  2. 在導覽窗格中,在 Network & Security (網路與安全) 下,選擇 Security Groups (安全群組)

  3. 從安全群組清單中,選擇 Amazon 的安全群組VPC。除非您建立安全群組以供 ElastiCache 使用,否則此安全群組將命名為預設

  4. 選擇 Inbound (傳入) 標籤,然後執行下列動作:

    1. 選擇編輯

    2. 選擇新增規則

    3. 類型欄中,選擇自訂TCP規則

    4. Port range (連接埠範圍) 方塊中,輸入要用於叢集節點的連接埠號碼。此號碼必須與您啟動叢集時指定的號碼相同。Memcached 的預設連接埠是 11211 Valkey 的預設連接埠,而 Redis OSS是 6379

    5. 來源方塊中,選擇具有連接埠範圍 (0.0.0.0/0) 的任何地方,以便您在 Amazon 中啟動的任何 Amazon EC2執行個體VPC都可以連線至 ElastiCache 節點。

      重要

      將 ElastiCache 叢集開啟至 0.0.0.0/0 不會讓叢集暴露至網際網路,因為它沒有公有 IP 地址,因此無法從 外部存取VPC。不過,預設安全群組可以套用至客戶帳戶中的其他 Amazon EC2執行個體,而且這些執行個體可能具有公有 IP 地址。如果他們正巧在預設連接埠上執行某些項目,就可能會意外公開該服務。因此,我們建議您建立僅供 使用VPC的安全群組 ElastiCache。如需詳細資訊,請參閱自訂安全群組

    6. 選擇 Save (儲存)。

當您在 Amazon 中啟動 Amazon EC2執行個體時VPC,該執行個體將能夠連線至 ElastiCache 叢集。

從外部存取 ElastiCache 資源 AWS

Amazon ElastiCache 是一種提供雲端記憶體內金鑰值存放區的 AWS 服務。該服務的設計僅限於從 內存取 AWS。不過,如果 ElastiCache 叢集託管在 內VPC,您可以使用 Network Address Translation (NAT) 執行個體來提供外部存取。

要求

您必須滿足下列要求,才能從外部存取您的 ElastiCache 資源 AWS:

  • 叢集必須位於 內,VPC並透過 Network Address Translation (NAT) 執行個體存取。此需求沒有任何例外。

  • NAT 執行個體必須在與叢集VPC相同的 中啟動。

  • NAT 執行個體必須在與叢集分開的公有子網路中啟動。

  • 彈性 IP 地址 (EIP) 必須與該NAT執行個體相關聯。iptable 的連接埠轉送功能用於將NAT執行個體上的連接埠轉送至 內的快取節點連接埠VPC。

考量事項

從外部存取 ElastiCache 資源時,請注意下列考量事項 ElastiCache。

  • 用戶端會連線至NAT執行個體的 EIP和快取連接埠。NAT 執行個體上的連接埠轉送會將流量轉送至適當的快取叢集節點。

  • 若新增或取代叢集節點,iptable 規則便需要更新以反映此變更。

限制

此方法應僅用於測試及開發用途。基於下列限制,不建議用於生產用途:

  • NAT 執行個體正在用戶端和多個叢集之間充當代理。增加代理會影響快取叢集的效能。影響會隨著您透過NAT執行個體存取的快取叢集數量而增加。

  • 從用戶端到NAT執行個體的流量未加密。因此,您應避免透過NAT執行個體傳送敏感資料。

  • NAT 執行個體會新增維護另一個執行個體的額外負荷。

  • NAT 執行個體做為單一失敗點。如需如何在 NAT上設定高可用性的詳細資訊VPC,請參閱 Amazon VPCNAT執行個體的高可用性:範例

如何從外部存取 ElastiCache 資源 AWS

下列程序示範如何使用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

    • 安全群組 - *10\.0\.0\.55*

  • 您正在使用下列方式存取 Valkey 或 Redis OSS叢集:

    • IP 地址 - 10.0.1.230

    • 預設連接埠 – 6379

    • 安全群組 - sg-bd56b7da

    • AWS 執行個體 IP 地址 – sg-bd56b7da

  • 您信任的用戶端 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 才能 ElastiCache 從外部存取 AWS。

    如需建立NAT執行個體的相關資訊,請參閱 使用者指南中的 AWS VPCNAT執行個體

  2. 建立快取叢集和NAT執行個體的安全群組規則。

    NAT 執行個體安全群組和叢集執行個體應具有下列規則:

    • 兩個傳入規則

      • 使用 Memcached 時,第一個規則是允許TCP從受信任用戶端連線至從NAT執行個體轉送的每個快取連接埠 (11211 - 11213)。

      • 使用 Valkey 和 Redis OSS,第一個規則是允許TCP從受信任用戶端連線至從NAT執行個體轉送的每個快取連接埠 (6379 - 6381)。

      • 允許SSH存取信任用戶端的第二個規則。

      NAT 執行個體安全群組 - 使用 Memcached 的傳入規則
      Type 通訊協定 連接埠範圍 來源
      自訂TCP規則 TCP 11211-11213 198.51.100.27/32
      SSH TCP 22 198.51.100.27/32
      NAT 執行個體安全群組 - 使用 Valkey 或 Redis 的傳入規則 OSS
      Type 通訊協定 連接埠範圍 來源
      自訂TCP規則 TCP 6379-6380 198.51.100.27/32
      SSH TCP 22 203.0.113.73/32
    • 使用 Memcached 時,允許TCP連線至快取連接埠 (11211) 的傳出規則。

      NAT 執行個體安全群組 - 傳出規則
      Type 通訊協定 連接埠範圍 目的地
      自訂TCP規則 TCP 11211 sg-ce56b7a9 (叢集執行個體安全群組)
    • 使用 Valkey 或 Redis 時OSS,允許TCP連線至快取連接埠的傳出規則 (6379)。

      NAT 執行個體安全群組 - 傳出規則
      Type 通訊協定 連接埠範圍 目的地
      自訂TCP規則 TCP 6379 sg-ce56b7a9 (叢集執行個體安全群組)
    • 使用 Memcached 時,叢集安全群組的傳入規則,允許從NAT執行個體TCP連線到快取連接埠 (11211)。

      叢集執行個體安全群組 - 傳入規則
      Type 通訊協定 連接埠範圍 來源
      自訂TCP規則 TCP 11211 sg-bd56b7da (NAT安全群組)
    • 使用 Valkey 或 Redis OSS,這是叢集安全群組的傳入規則,允許從NAT執行個體TCP連線到快取連接埠 (6379)。

      叢集執行個體安全群組 - 傳入規則
      Type 通訊協定 連接埠範圍 來源
      自訂TCP規則 TCP 6379 sg-bd56b7da (叢集安全群組)
  3. 驗證規則。

    • 確認受信任的用戶端能夠SSH存取NAT執行個體。

    • 確認受信任的用戶端能夠從NAT執行個體連線至叢集。

  4. Memcached

    將 iptables 規則新增至NAT執行個體。

    必須將 iptables 規則新增至叢集中每個節點的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

    將 iptables 規則新增至NAT執行個體。

    必須將 iptables 規則新增至叢集中每個節點的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
  5. 儲存 iptable 組態。

    在測試及驗證過後儲存規則。如果您使用的是 Redhat 類型 Linux 發行版本 (例如 Amazon Linux),我們建議使用以下命令:

    service iptables save

相關主題

下列主題可能可以提供額外的資訊。