存取您的叢集 - Amazon ElastiCache

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

存取您的叢集

您的亞馬遜 ElastiCache 執行個體是專為透過 Amazon EC2 執行個體存取而設計的。

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

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

授權存取您的叢集

您在 EC2-VPC 中啟動了叢集

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

注意

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

授權從 Amazon VPC 安全群組透過網路輸入至叢集
  1. 登入 AWS Management Console 並開啟 Amazon EC2 主控台,網址為 https://console.aws.amazon.com/ec2/

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

  3. 從安全群組的清單中,選擇要用於 Amazon VPC 的安全群組。除非您建立了要 ElastiCache 使用的安全性群組,否則此安全性群組會命名為 default

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

    1. 選擇編輯

    2. 選擇新增規則

    3. Type (類型) 欄中,選擇 Custom TCP rule (自訂 TCP 規則)

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

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

      重要

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

    6. 選擇儲存

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

從外部存取 ElastiCache 資源 AWS

Amazon ElastiCache 是一項提供雲端式記憶體內鍵值存放區的 AWS 服務。該服務旨在專門從內部訪問 AWS。但是,如果 ElastiCache 叢集託管在 VPC 內,則可以使用網路位址轉譯 (NAT) 執行個體來提供外部存取。

要求

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

  • 叢集必須位於 VPC 內,並且必須透過網路位址轉譯 (NAT) 執行個體存取。此需求沒有任何例外。

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

  • NAT 執行個體必須在與叢集不同的公有子網路內啟動。

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

考量事項

從外部存取 ElastiCache 資源時,應牢記下列考量事項 ElastiCache。

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

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

限制

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

  • NAT 執行個體的角色是用戶端與多個叢集間的代理。增加代理會影響快取叢集的效能。隨著您透過 NAT 執行個體存取的快取叢集增加,影響也會增加。

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

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

  • NAT 執行個體會做為故障的單一窗口。如需在 VPC 上設定高可用性 NAT 方式的資訊,請參閱 Amazon VPC NAT 執行個體的高可用性:範例

如何從外部訪問 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*

  • 您信任的用戶端 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 VPC 使用者指南中的 NAT 執行個體。

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

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

    • 兩個傳入規則

      • 其中一個允許來自信任用戶端對每個從 NAT 執行個體轉送快取連接埠的 TCP 連線 (11211 - 11213)。

      • 一個次要項目,允許對信任用戶端的 SSH 存取。

      NAT 執行個體安全群組 - 傳入規則
      Type 通訊協定 連接埠範圍 來源
      自訂 TCP 規則 TCP 11211-11213 198.51.100.27/32
      SSH TCP 22 198.51.100.27/32
    • 傳出規則,允許對快取連接埠 (11211) 的 TCP 連線。

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

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

    • 確認信任的用戶端能夠透過 SSH 連線到 NAT 執行個體。

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

  4. 將 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
  5. 確認信任的用戶端能夠連線到叢集。

    信任的用戶端應會連線到與 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
  6. 儲存 iptable 組態。

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

    service iptables save

相關主題

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