如何測試與 ElastiCache Redis OSS 或 Memcached 叢集的連線?

4 分的閱讀內容
0

我想從 Linux 用戶端測試與 Amazon ElastiCache Redis OSS 或 Amazon ElastiCache Memcached 叢集的連線。

解決方法

**注意事項:**此解決方案僅針對非計劃性使用測試連線。如需支援的 Redis 用戶端清單,請參閱 Redis 網站上的與 Redis 用戶端連線

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

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

建立 ElastiCache 叢集

若要建立 ElastiCache Redis OSS 叢集,請參閱為 Valkey 或 Redis OSS 建立叢集

若要建立 Memcached 叢集,請參閱為 Memcached 建立叢集

連線至 ElastiCache Redis OSS 叢集

ElastiCache 同時支援已停用的叢集模式 (CMD) 和已啟用叢集模式 (CME) 的 Redis OSS 叢集。若要測試與這些叢集的連線,請使用 redis-cli 或 redis6-cli 公用程式。redis-cli 和 redis6-cli 的最新版本支援 SSL/TLS 連線至已開啟加密或驗證的叢集。

在您要連線的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上下載並編譯 redis-cli 公用程式。如需詳細資訊,請參閱開始使用 Amazon EC2

**注意事項:**下列範例使用了執行 Amazon Linux、Amazon Linux 2 和 Amazon Linux 2023 的 Amazon EC2 執行個體。若要使用其他 Linux 發行版本來安裝和編譯 redis-cli 和 redis6-cli,請參閱作業系統的文件。

若要連線到 ElastiCache Redis OSS 叢集,請針對您的作業系統執行下列其中一個命令。

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-CLI 連線到 Redis 時,會使用未加密的 TCP 連線。redis-cli 編譯時,BUILD_TLS=yes 選項會開啟 SSL/TLS。如果您連接的叢集在傳輸過程中沒有加密,則不需要 Build_TLS=yes 選項。

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

如需如何尋找 Redis 端點的相關資訊,請參閱在 ElastiCache 中尋找連線端點

在下列步驟中,加密或未加密的叢集指的是傳輸中的加密。

連線至未經 CMD 加密的叢集

**注意事項:**在下列命令中,請將 change-node-type.54awdt.ng.0001.use1.cache.amazonaws.com 取代為您叢集的端點,並將 6379 取代為您的連接埠號碼。

針對您的作業系統執行下列其中一個命令。

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>

連線到叢集之後,您可以執行 Redis 命令。

命令範例:

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

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

連線至未經 CME 加密的叢集

**注意事項:**在下列命令中,請將 cluster-disable-rediscli.54awdt.clustercfg.use1.cache.amazonaws.com 取代為您叢集的組態端點,並將 6379 取代為您的連接埠號碼。

針對您的作業系統執行下列其中一個命令。

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 重新導向後開啟叢集模式。如果您沒有開啟重新導向,該命令就會傳回 MOVED 錯誤。如需詳細資訊,請參閱 Redis 叢集通訊協定中的用戶端和伺服器角色,以及 Redis 網站上的 Redis 叢集規格

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

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

Redis 命令範例:

set x Hi-> Redirected to slot [16287] located at 172.31.28.122:6379OK
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,您還必須開啟傳輸中加密。如需詳細資訊,請參閱 ElastiCache 傳輸中加密 (TLS)

若要連線到 CME 和叢集 CMD 加密的叢集,請使用 redis-cli 中的 --tls 選項。如果叢集具備 AUTH 權杖集,請使用選項 -a 來提供 AUTH 密碼。

**注意事項:**在 Redis 第 7 版及更新版本中,現有的 ElastiCache 叢集已開啟傳輸中加密。您不需要重建或重新佈建叢集,即可變更 Redis OSS 叢集的 TLS 組態。而且應用程式可用性不會受到影響。

開啟傳輸中加密時,請更新用戶端組態以使用新的 TLS 專用端點

連線至 CMD 加密的叢集

**注意事項:**在下列命令中,請將 master.rediscli-cluster-disabled.54awdt.use1.cache.amazonaws.com 取代為您叢集的端點組態,並將 6379 取代為您的連接埠號碼。

若要連線至已開啟加密和驗證的 CMD 叢集,請針對您的作業系統執行下列其中一個命令。

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

若要連線到僅開啟加密的 CMD 叢集,請針對您的作業系統執行下列其中一個命令:

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

連線到 CME 加密的叢集

若要連線至已開啟加密和驗證的 CME 叢集,請針對您的作業系統執行下列其中一個命令:

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

若要連線到僅開啟加密的 CME 叢集,請針對您的作業系統執行下列其中一個命令:

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-cli 替代產品

若要在沒有 redis-cli 編譯的情況下執行簡短測試,請使用 telnet 或 openssl 連線到 CMD 叢集。

連線後,您可以執行 Redis 命令。

下列範例命令會連線到已加密或經驗證的 CMD 叢集:

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

如果您為叢集設定密碼,請先連線到叢集。連線之後,請使用下列命令驗證該叢集,然後按一下 Enter

Auth Password

**注意事項:**在下列命令範例中,請將 Password 取代為您的叢集密碼

下列命令範例會連線至未開啟加密或驗證的 CMD 叢集:

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

連線至 ElastiCache Memcached 叢集

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

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

請完成下列步驟:

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

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

    sudo yum install telnet

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

    sudo apt-get install telnet

    若要連線到執行個體,請參閱連線至 EC2 執行個體

  2. 若要連線至端點,請執行下列命令:

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

    **注意事項:**請將 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 命令。

    Memcached 命令範例:

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

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

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

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

若要連線至端點,請執行下列命令:

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

**注意事項:**請將 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 命令。

Memcached 命令範例:

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