我目前在Rails 3应用程序中使用Heroku的Memcached,并希望转移到Elasticache,因为价格更优惠。这可能吗?配置相对简单吗?关于表现,我应该注意什么?
答案 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上的指南。不同的步骤如下:
允许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
使用群集的主机名设置生产应用的Heroku配置值:
heroku config:set MEMCACHE_SERVERS=elasticachehostname.amazonaws.com
之后,请按照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猴子业务才能使其正常工作。