我正在尝试将我在 Opsworks 中运行的 Rails 应用程序连接到 Elasticache Redis 层。 我只是无法让它工作。
我当前的配置:
1 个堆栈(2 个实例)
图层
- rails 应用服务器
- MySQL
Rails 应用程序在 AWS-OpsWorks-Rails-App-Server
中安全组。
1 个 ElasticCache 集群
ES集群在default security sg-ff58559a (VPC)(active)
安全组。
我正在使用“主端点”尝试连接。
这个值是可见的
ElastiCache>复制组
仪表板。
它看起来类似于:
<name>.oveuui.ng.0001.use1.cache.amazonaws.com:6379
在我的 rails 控制台中(在 SSH 进入 rails 层之后)我尝试:
>r = Redis.new(:url => 'redis://<name>.oveuui.ng.0001.use1.cache.amazonaws.com:6379')
>r.connected
结果是:
Redis::CannotConnectError: Timed out connecting to Redis on...
最佳答案
如果您将集群启动到 Amazon Virtual Private Cloud (Amazon VPC),则只能从在同一 Amazon VPC 中运行的 Amazon EC2 实例连接到 ElastiCache 集群。在这种情况下,您需要将网络入口授予集群。 授予从 Amazon VPC 安全组到集群的网络入口:
1.登录 AWS 管理控制台并打开 Amazon EC2 控制台 https://console.aws.amazon.com/ec2/ .
2.在左侧导航 Pane 中的“网络与安全”下,单击“安全组”。
3.在安全组列表中,单击您的 Amazon VPC 的安全组。如果您是新的 ElastiCache 用户,此安全组将被命名为 default。
4.点击 Inbound 选项卡,然后执行以下操作:
一个。单击编辑。
单击添加规则。
在类型列中,选择自定义 TCP 规则。
在“端口范围”框中,键入缓存集群节点的端口号。此编号必须与您在启动集群时指定的编号相同。默认端口如下:
Memcached: port 11211
Redis: port 6379
在源框中,选择具有端口范围 (0.0.0.0/0) 的任意位置,以便您在 Amazon VPC 中启动的任何 Amazon EC2 实例都可以连接到您的 ElastiCache 节点。
单击保存。
http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/GettingStarted.AuthorizeAccess.html
关于ruby-on-rails - 操作系统 : Rails Layer connect to Elasticache : Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26723176/