我可以在Heroku上使用Amazon Elasticache吗?

时间:2012-06-14 23:34:31

标签: ruby-on-rails heroku memcached amazon-elasticache

我目前在Rails 3应用程序中使用Heroku的Memcached,并希望转移到Elasticache,因为价格更优惠。这可能吗?配置相对简单吗?关于表现,我应该注意什么?

4 个答案:

答案 0 :(得分:6)

不,不建议您使用Elasticache,因为它没有认证机制。因此,任何人都可以访问您的缓存!这通常很好,因为您将使用AWS安全规则来限制哪些计算机可以访问您的计算机。但是,这显然不适用于Heroku,因为您的应用程序是在随机选择的Herokus机器上运行的。

您可以在EC2计算机上使用SASL身份验证自行部署memcache。 ElastiCache实际上并没有为你提供任何预装了memcache的EC2机器。

还有另一种选择:MemCachier

(完全免责声明,我为MemCachier工作)。

Heroku上有另一个memcache提供程序,比提供的提供程序便宜得多。它叫MemCachier,插件主页是here

它的价格与ElasticCache相当,具体取决于您的缓存大小以及是否使用保留实例(在非常大的缓存大小下,ElatiCache更便宜)。

更新(2013年6月):membase memcache插件已关闭,因此MemCachier是Heroku上唯一的Memcache提供程序。

如果您需要任何帮助,请与我联系,即使您使用ElastiCache。

答案 1 :(得分:4)

注意:虽然这确实有效,但@btucker指出它允许任何Heroku托管的应用程序访问您的ElastiCache群集。我不建议使用此解决方案。

是的,你可以。该设置类似于Heroku在Amazon RDS上的指南。不同的步骤如下:

  1. 按照“Get Started with Amazon ElastiCache”指南创建缓存群集和节点
  2. 安装ElastiCache Command Line Toolkit
  3. 允许Heroku的服务器进入您的ElastiCache群集,如RDS指南所述,但将rds-命令替换为elasticache-个:

    elasticache-authorize-cache-security-group-ingress \
      --cache-security-group-name default \ 
      --ec2-security-group-name default \
      --ec2-security-group-owner-id 098166147350 \
    
      # If your AWS_CREDENTIAL_FILE environment setting is configured,
      # this option is not necessary.
      --aws-credential-file ../credential-file-path.template
    
  4. 使用群集的主机名设置生产应用的Heroku配置值:

    heroku config:set MEMCACHE_SERVERS=elasticachehostname.amazonaws.com
    
  5. 之后,请按照Memcache Rails setup进行设置。

答案 2 :(得分:3)

值得注意的是,尽管上面的@sosonn答案将按照描述运行,但它也允许 ANY heroku部署的应用程序访问您的memcached服务器。因此,如果您将所有内容保密,或者您担心其他人使用您的ElatiCache群集,请不要这样做。在RDS的上下文中,您具有内置于数据库中的访问控制,但是memcached没有ElastiCache支持的此类身份验证。因此,向所有Heroku开放安全组是一个非常大的风险。

答案 3 :(得分:0)

有几个Heroku插件可以解决这个问题。它们为SOCKS5代理提供了可以列入白名单的静态IP地址。

您也可以通过在ec2上设置自己的SOCKS5代理来自行完成。

请注意这里的注意事项: http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Access.Outside.html

速度较慢,未加密,并且需要一些NAT猴子业务才能使其正常工作。