如何測試連線至 Amazon ElastiCache Redis 或 Memcached 叢集?

4 分的閱讀內容
0

我想從 Linux 用戶端測試連線至 Amazon ElastiCache for Redis 或 Amazon ElastiCache for Memcached 叢集。

簡短描述

Amazon ElastiCache 支援兩個記憶體鍵值引擎、Redis 和 Memcached。當您啟動 ElastiCache 快取叢集時,請選擇偏好的引擎。

注意: 此解決方法包含測試僅適用於非計劃性使用的連線。如需支援的 Redis 用戶端清單,請參閱 Redis 網站文件

對於 Java、.NET 或 PHP 的 Memcached,最佳實務是採用具有自動探索功能的 ElastiCache 用戶端。具有自動探索功能的 ElastiCache 用戶端會在新增至快取叢集時自動識別新的 ElastiCache 節點。

解決方法

建立 ElastiCache 叢集

注意: 如果您正在連線至現有叢集,請繼續執行下一個步驟。

如需如何建立 ElastiCache Redis 叢集的詳細資訊,請參閱建立叢集 (Amazon ElastiCache for Redis 使用者指南)。

如需如何建立 Memcached 叢集的詳細資訊,請參閱建立叢集 (Amazon ElastiCache for Memcached 使用者指南)。

連線至 ElastiCache Redis 叢集

ElastiCache 同時支援停用叢集模式和啟用叢集模式的 Redis 叢集。若要測試與這些叢集的連線,請使用 redis-cli 或 redis6-cli 公用程式。redis-cli 和 redis6-cli 的最新版本支援 SSL/TLS 連線至已開啟加密和驗證的叢集。在您要連線的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上下載並編譯 redis-cli 公用程式。如需如何連線至 Amazon EC2 執行個體的指示,請參閱教學課程: 開始使用 Amazon EC2 Linux 執行個體

注意: 下列範例使用了執行 Amazon Linux、Amazon Linux 2 和 Amazon Linux 2023 的 EC2 執行個體。如需其他 Linux 發行版本的安裝及編譯 redis-cli 和 redis6-cli 相關文件,請參閱您的特定作業系統的文件。

Amazon Linux 2023

sudo yum install redis6 -y

Amazon Linux 2

$sudo amazon-linux-extras install epel -y$sudo yum install gcc jemalloc-devel openssl-devel tcl tcl-devel -y
$sudo wget http://download.redis.io/redis-stable.tar.gz
$sudo tar xvzf redis-stable.tar.gz
$cd redis-stable
$sudo make BUILD_TLS=yes

Amazon Linux

$sudo yum install gcc jemalloc-devel openssl-devel tcl tcl-devel clang wget$sudo wget http://download.redis.io/redis-stable.tar.gz
$sudo tar xvzf redis-stable.tar.gz
$cd redis-stable
$sudo CC=clang make BUILD_TLS=yes

預設情況下,當連線至 Redis 時,redis-cli 會使用未加密的 TCP 連線。當 redis-cli 編譯時,BUILD_TLS=yes 選項會開啟 SSL/TLS。如果您連接的叢集在傳輸過程中沒有加密,則不需要 Build_TLS=yes 選項。在下列步驟中,加密或未加密的叢集指的是傳輸中的加密。

注意: 安裝 redis6 套件時,您會自動安裝具有預設 SSL/TLS 支援的 redis6-cli。

如需尋找 Redis 端點的詳細資訊,請參閱尋找連線端點

連線至停用叢集模式的未加密叢集

  1. 若要連線至該叢集,請執行下列命令。在下列範例命令中,以您的叢集端點和連接埠號碼取代 change-node-type.54awdt.ng.0001.use1.cache.amazonaws.com6379

    Amazon Linux 2023

    redis6-cli -h change-node-type.54awdt.ng.0001.use1.cache.amazonaws.com -p 6379

    Amazon Linux 和 Amazon Linux 2

    src/redis-cli -h change-node-type.54awdt.ng.0001.use1.cache.amazonaws.com -p 6379

    此命令會傳回看起來類似於下列範例的 Redis 命令提示字元:

    change-node-type.54awdt.ng.0001.use1.cache.amazonaws.com:6379>
  2. 連線到叢集之後,您可以執行 Redis 命令,例如下列範例:

    set a "hello"OK
    get a
    "hello"
    quit

    如需詳細資訊,請參閱 redis.io 網站上的命令

連線至啟用叢集模式的未加密叢集

若要連線至該叢集,請執行下列命令。在下列範例命令中,以叢集的組態端點和連接埠號碼取代 cluster-disable-rediscli.54awdt.clustercfg.use1.cache.amazonaws.com6379

Amazon Linux 2023

redis6-cli -h cluster-disabled-rediscli.54awdt.clustercfg.use1.cache.amazonaws.com -c -p 6379

Amazon Linux 和 Amazon Linux 2

src/redis-cli -h cluster-disabled-rediscli.54awdt.clustercfg.use1.cache.amazonaws.com -c -p 6379

注意: 在這些命令中,選項 -c 會在 -ASK 和 -MOVED 重新導向後開啟叢集模式。如需詳細資訊,請參閱 redis.io 網站上的 Redis 叢集通訊協定中的用戶端和伺服器角色

Redis 命令提示字元中的結果看起來類似於下列範例:

cluster-disabled-rediscli.54awdt.clustercfg.use1.cache.amazonaws.com:>

您現在可以執行 Redis 命令。因為 -c 選項的緣故,會發生重新導向。如果您沒有開啟重新導向,則該命令會傳回 MOVED 錯誤。如需有關 MOVED 錯誤的詳細資訊,請參閱 Redis 網站上的 Redis 叢集規格

以下是 Redis 命令的一些範例:

set x Hi-> Redirected to slot [16287] located at 172.31.28.122:6379
OK
set y Hello
OK
get y
"Hello"
set z Bye
-> Redirected to slot [8157] located at 172.31.9.201:6379
OK
get z
"Bye"
get x
-> Redirected to slot [16287] located at 172.31.28.122:6379
"Hi"

連線至已開啟加密和驗證的叢集

您可以選擇開啟 AUTH。但是,若要開啟 AUTH,您必須開啟傳輸中加密。如需 ElastiCache 加密和驗證的詳細資訊,請參閱 ElastiCache 傳輸中加密 (TLS)

若要連線至啟用叢集模式和停用叢集模式的加密叢集,請使用具備 redis-cli 的 --tls 選項。如果叢集具備 AUTH 權杖集,則可以使用選項 -a 來提供 AUTH 密碼。

注意: 在 Redis 第 7 版及更新版本中,現有的 ElastiCache 叢集已開啟傳輸中加密。您可以變更 Redis 叢集的 TLS 組態,而無需重新建置或重新佈建,也不會影響應用程式可用性。開啟傳輸中加密時,請更新用戶端組態以使用新的 TLS 專用端點。如需詳細資訊,請參閱](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/in-transit-encryption-enable-python.html#enable-python-best-practices)啟用傳輸中加密之前、期間和之後建立連線的最佳做法[。

在下列範例中,請替換您的叢集端點和連接埠。

連線至停用叢集模式的加密叢集

下列範例命令連線至已開啟加密和驗證的叢集:

Amazon Linux 2023

redis6-cli -h master.rediscli-cluster-disabled.54awdt.use1.cache.amazonaws.com --tls -a PASSWORD -p 6379

Amazon Linux 和 Amazon Linux 2

src/redis-cli -h master.rediscli-cluster-disabled.54awdt.use1.cache.amazonaws.com --tls -a PASSWORD -p 6379

下列範例命令會連線至僅開啟加密的叢集:

Amazon Linux 2023

redis6-cli -h master.cluster-disabled-noauth.54awdt.use1.cache.amazonaws.com --tls -p 6379

Amazon Linux 和 Amazon Linux 2

src/redis-cli -h master.cluster-disabled-noauth.54awdt.use1.cache.amazonaws.com --tls -p 6379

連線至啟用叢集模式的加密叢集

下列範例命令連線至已開啟加密和驗證的叢集:

Amazon Linux 2023

redis6-cli -h clustercfg.tlswithauth.54awdt.use1.cache.amazonaws.com --tls -c -a PASSWORD -p 6379

Amazon Linux 和 Amazon Linux 2

src/redis-cli -h clustercfg.tlswithauth.54awdt.use1.cache.amazonaws.com --tls -c -a PASSWORD -p 6379

下列範例命令會連線至僅開啟加密的叢集:

Amazon Linux 2023

redis6-cli -h clustercfg.tlswithoutauth.54awdt.use1.cache.amazonaws.com --tls -c -p 6379

Amazon Linux 和 Amazon Linux 2

src/redis-cli -h clustercfg.tlswithoutauth.54awdt.use1.cache.amazonaws.com --tls -c -p 6379

連線至叢集之後,您可以執行 Redis 命令,如前述未加密叢集的範例中所示。

Redis-cli 替代產品

對於未透過 redis-cli 編譯的簡短測試,您可以連接至非啟用叢集模式的叢集。為此,使用 telnet 或 openssl。在下列範例命令中,請替換您的叢集端點和連接埠。

注意: 若要安裝 Telnet 公用程式,請參閱下一節連線至沒有傳輸中加密的 Memcached 叢集

連線之後,您可以執行 Redis 命令,如前述範例中所示。

下列範例命令會連線至已停用加密或驗證叢集模式的叢集:

openssl s_client -connect master.rediscli-cluster-disabled.54awdt.use1.cache.amazonaws.com:6379

如果該叢集已設定密碼,請先連線至該叢集。連線之後,請使用下列命令驗證該叢集,然後使用 Enter 鍵。在下列範例命令中,以您的叢集密碼取代 Password

Auth Password

下列範例命令會連線至沒有已開啟加密或驗證的停用叢集模式的叢集:

telnet change-node-type.54awdt.ng.0001.use1.cache.amazonaws.com 6379

連接至 ElastiCache Memcached 叢集

若要連線至 Memcached 叢集,請使用 Telnet 公用程式。

連線至沒有傳輸中加密的 Memcached 叢集

  1. 在您要測試連線的 EC2 執行個體上安裝 Telnet 公用程式。

    若是 CentOS 系統,請執行以下命令:

    $sudo yum install telnet

    若是 Debian 系統 (Ubuntu),請執行以下命令:

    $sudo apt-get install telnet

    如需如何連線至 Amazon EC2 執行個體的指示,請參閱教學課程: 開始使用 Amazon EC2 Linux 執行個體

  2. 若要連線至端點,請執行下列範例命令。以您的端點取代 mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com,並以您的節點連接埠取代 11211

    telnet mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com 11211

    輸出看起來類似於下列範例:

    Trying 128.0.0.1...Connected to mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com.
    Escape character is '^]'.
    >

您現在已連線至節點。您可以執行 Memcached 命令,如下列範例輸出中所示:

set a 0 0 5hello
STORED
get a
VALUE a 0 5
hello
END

連線至具有傳輸中加密的 MemCached 叢集

執行 Memcached 1.6.12 版及更新版本的叢集支援傳輸中加密。Telnet 不使用加密。若要連線至已啟用加密的 MemCached 叢集,請使用 Openssl 用戶端。

注意: 只有在建立叢集時,您才能在叢集上啟用傳輸中加密。您無法修改該叢集來切換開啟和關閉傳輸中加密。如需詳細資訊,請參閱ElastiCache 傳輸中加密 (TLS)

若要連線至端點,請執行下列範例命令。以您的端點取代 testwithtls.qtyxq7.cfg.apse2.cache.amazonaws.com,並以您的節點連接埠取代 11211

openssl s_client -quiet -crlf -connect testwithtls.qtyxq7.cfg.apse2.cache.amazonaws.com:11211

以下是輸出範例:

depth=2 C = US, O = Amazon, CN = Amazon Root CA 1  verify return:1  
depth=1 C = US, O = Amazon, CN = Amazon RSA 2048 M02  
verify return:1  
depth=0 CN = *.testwithtls.qtyxq7.apse2.cache.amazonaws.com  
verify return:1

您現在已連線至節點。您可以執行 Memcached 命令,如下列範例輸出中所示:

set a 0 0 5hello
STORED
get a
VALUE a 0 5
hello
END
AWS 官方
AWS 官方已更新 7 個月前