Opsworks:Rails Layer连接到Elasticache:Redis

mco*_*lin 2 ruby-on-rails amazon-web-services redis aws-opsworks

我正在尝试将在Opsworks中运行的Rails应用程序连接到Elasticache Redis层.我无法让它发挥作用.

我目前的配置:

1个堆栈(2个实例)

- Rails App Server - MySQL

rails应用程序位于AWS-OpsWorks-Rails-App-Server安全组中.

1 ElasticCache群集ES群集位于default security sg-ff58559a (VPC)(active)安全组中.

我正在使用' Primary Endpoint '尝试连接.

可以从
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
Run Code Online (Sandbox Code Playgroud)

结果是:

Redis::CannotConnectError: Timed out connecting to Redis on...
Run Code Online (Sandbox Code Playgroud)

小智 6

如果您将群集启动到Amazon Virtual Private Cloud(Amazon VPC),则只能从在同一Amazon VPC中运行的Amazon EC2实例连接到ElastiCache群集.在这种情况下,您需要向群集授予网络入口.要将Amazon VPC安全组的网络入口授予群集:

1.登录AWS管理控制台并通过以下网址打开Amazon EC2控制台:https: //console.aws.amazon.com/ec2/ .

2.在左侧导航窗格的"网络和安全性"下,单击"安全组".

3.在安全组列表中,单击Amazon VPC的安全组.如果您是新的ElastiCache用户,则此安全组将被命名为default.

4.单击"入站"选项卡,然后执行以下操作:

一个.单击编辑.

湾 单击添加规则.

C.在"类型"列中,选择"自定义TCP规则".

d.在"端口范围"框中,键入缓存群集节点的端口号.此编号必须与启动群集时指定的编号相同.默认端口如下:

 Memcached: port 11211

 Redis: port 6379
Run Code Online (Sandbox Code Playgroud)

即 在"源"框中,选择具有端口范围(0.0.0.0/0)的Anywhere,以便在Amazon VPC中启动的任何Amazon EC2实例都可以连接到ElastiCache节点.

F.单击保存.

http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/GettingStarted.AuthorizeAccess.html