【发布时间】:2017-10-17 10:52:06
【问题描述】:
我目前在 Sails.js 项目中使用 connect-redis 来利用本地安装的 redis 实例。将来,我想为多个服务器实例(在负载均衡器后面)使用一个通用的 redis 实例,所以我一直在研究 AWS Elasticache。不过,我的配置有问题。
sails-project\config\session.js:
adapter: 'connect-redis',
host: 'primary-endpoint.xxxxxx.ng.0001.apse1.cache.amazonaws.com',
port: 6379,
ttl: <redis session TTL in seconds>,
db: 0,
pass: <redis auth password>,
prefix: 'sess:',
TTL 值应该是多少? pass 属性是否应该以某种方式指向 IAM?
我尝试在 IAM 中创建具有 AmazonElastiCacheFullAccess 权限的用户并将其访问密钥 ID 放入 pass 属性中,但我在服务器控制台中收到此错误(在我的 Windows 机器上测试):
C:\repos\sails-project\node_modules\connect-redis\lib\connect-redis.js:83
throw err;
^
AbortError: Redis connection lost and command aborted. It might have been processed.
at RedisClient.flush_and_error (C:\repos\sails-project\node_modules\redis\index.js:362:23)
...
有什么改变的想法吗?
【问题讨论】:
-
我猜 TTL 是您认为适合您的应用程序的任何值,具体取决于您希望会话处于活动状态的时间。至于 IAM 的东西。 1) 我认为 IAM 用户不会在这里工作?它要求您提供 Elasticache 用户名和密码,而不是 AWS 用户名/密码。 2) Redis 默认是打开的,所以你不需要进行身份验证(这并不是说你不应该,但你应该看看 Redis 原生的方式来做到这一点)。
-
是的,当我在与服务器相同的实例上运行 redis 时,我没有在配置中提供任何凭据。不过,我认为在指向不同的服务器时需要进行身份验证。但据我所知,似乎没有任何“Elasticache 用户名”,所以我很困惑如何将它们拼凑在一起(或者是否有可能)。
-
是的,这有点奇怪。我最后听到的是 elasticache redis 服务应该被安全组锁定,仅此而已。如果您需要进一步控制,请在 EC2 上生成 redis。
标签: redis sails.js amazon-elasticache