在建立 Elasticache Redis 时需要注意的事项

首先

这次在工作中有机会构建AWS Elasticache Redis,但在构建过程中遇到了几个问题,为了方便大家参考,我将它们记录下来作为备忘录。

主要注意事项

    • クラスターモード

 

    パスワード認証

集群模式是什么?

在介绍集群模式之前,有一些前提知识。

用語説明Redisクラスター単一または複数のシャードで構成されるグループ。Redisにアクセスする際のエンドポイントを提供する。シャードプライマリノード(1個) + レプリカノード(0-5個)で構成されるノードグループ。Redisクラスター内に、最低1つ以上存在する。プリライマリノード読み取り/書き込み両方可能なノード。シャード1つにつき、必ず1個作成される。レプリカノード読み取りのみ可能なノード。シャード1つにつき、0-5個のいずれかで作成可能。マルチAZを有効化する場合、最低1個以上作成する必要がある。

在这里,集群模式意味着可以拥有多个分片。也就是说,通过拥有多个主节点可以实现可扩展性。接下来我们将确认集群模式与没有集群模式之间的差异。

群集模式的有无差异 (There is a difference in the presence or absence of cluster mode.)

如果将集群模式禁用,那么只能拥有一个分片。换句话说,只能拥有一个主节点,因此当写入/读取负载增加时,只能进行扩展(增加主模式实例类型)以应对。此外,如果主节点由于AZ故障而宕机,由于没有备用主节点,我们将通过将同一分片内的副本节点提升为主节点来恢复。然而,在此恢复期间,由于主节点为0,无法进行写入操作。

如果启用集群模式,当由于AZ故障导致主节点宕机时,可以确保另一个分片内的主节点仍然存活,从而确保存在至少一个主节点。这就是集群模式的优势所在。

请输入密码进行验证

在这里,我们将记录有关设置密码验证时的注意事项等。首先,关于Redis的认证方式有密码验证和认证令牌,但今天我想重点介绍密码验证。

密码认证是指使用自己创建的用户可以登录到Redis。在创建该用户时,需要进行以下步骤:在”用户管理”中创建用户→在”用户组管理”中使用创建的用户创建用户组→将Redis和用户组关联。接下来对每个步骤逐一进行说明。

用户管理 hù lǐ)

在创建用户时需要注意的要点是用户名和访问字符串。
首先,对于用户名,需要注意的是,在创建用户组后,选择多个用户时,必须确保至少选择一个用户名为“default”的用户。这个限制需要考虑到后续提到的基于认证的安全性。
此外,访问字符串可以定义用户可以执行的命令和用户可以操作的键。

用户组

在这里需要注意的一点就是,一定要选择一个用户名为”默认”的用户,正如之前提到的。

基于认证的安全性

登录方式

首先,我想描述一下登录方法。作为登录路径,我在公共子网上放了一个跳板,然后从那里登录到Redis。具体的命令如下所示。

sudo -iu ec2-user
# ログインにはredis-cliが必要なためurlを参考にインストールしてください(https://penpen-dev.com/blog/ec2-redis/)
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

#ログイン
src/redis-cli -u "redis://ユーザー名:パスワード@redisエンドポイント:6379/0" --tls

创建两个用户,并加强安全性。

用户创建了两个账户,一个是“default”,另一个是“普通用户”。
“default”账户没有密码验证,而“普通用户”账户需要密码验证。
原因是,首先,在创建用户组时,必须有一个用户名为default的用户。
其次,当进行跳板连接确认时,如果使用了端点、用户名和密码进行连接,但密码错误,如果端点正确,则使用用户名为default的用户也可以登录。因此,我们通过限制default账户的权限,以防止在万一情况下使用default用户登录后进行数据库操作。

[ec2-user@ip-10-0-xx-xx redis-stable]$ src/redis-cli -u "redis://ユーザー名:パスワード@redisエンドポイント:6379/0" --tls
Warning: Using a password with
'-u' option on the command line interface may not be safe
AUTH failed: WRONGPASS invalid username-password pair or user is disabled. 
redisエンドポイント:6379>ACLWHOAMI
(error) NOPERM this user has no permissions to run the 'aci|whoami' command
redisエンドポイント:6379>

如果密码错误,可以使用默认用户登录,但没有命令权限。

[ec2-user@ip-10-0-34-66 redis-stable]$ src/redis-cli -u "redis://ユーザー名:パスワード@redisエンドポイント:6379/0" --tls
Warning: Using a password with
'_a' or '-u' option on the command line interface may
clustercg.test-backend2-redisエンドポイント:6379>ACLWHOAMI
"ユーザー名"

如果输入正确的密码,就可以使用ACL命令,并且已经使用test-redis-user登录成功。

总结

我在这篇文章中记述了构建Redis时需要注意的事项。由于我的描述可能存在一些不完善的地方,希望您能给予指教。谢谢!

广告
将在 10 秒后关闭
bannerAds