13

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

4

4 回答 4

8

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

您可以在 EC2 机器上使用 SASL 身份验证自行部署 memcache。无论如何,ElastiCache 只为您提供了一台预装了 memcache 的 EC2 机器。

还有另一种选择:MemCachier

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

Heroku 上还有另一个 memcache 提供商,它比 membase 提供的便宜得多。它叫做MemCachier,插件主页在这里

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

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

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

于 2012-06-15T19:26:23.550 回答
5

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

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

  1. 按照“ Amazon ElastiCache 入门”指南创建缓存集群和节点
  2. 安装ElastiCache 命令行工具包
  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
    

之后,按照Memcache Rails setup进行操作,一切就绪。

于 2012-11-20T08:49:41.717 回答
4

值得注意的是,虽然@ssorallen 的上述回答将按描述工作,但它还允许任何部署 heroku 的应用程序访问您的 memcached 服务器。因此,如果您存储任何机密信息,或者您担心其他人会使用您的 ElatiCache 集群,请不要这样做。在 RDS 的上下文中,您在数据库中内置了访问控制,但 memcached 没有 ElastiCache 支持的此类身份验证。因此,向所有 Heroku 开放安全组是一个相当大的风险。

于 2012-11-30T14:00:26.310 回答
0

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

您也可以通过在 ec2 上设置自己的 SOCKS5 代理来自己执行此操作。

请注意此处的警告:http: //docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Access.Outside.html

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

于 2017-04-28T00:51:48.787 回答