从所有Elastic Beanstalk实例访问文件

时间:2015-12-13 15:29:52

标签: caching amazon-web-services elastic-beanstalk amazon-elastic-beanstalk

假设我在Elastic Beanstalk上运行了5个实例。 这些实例创建缓存文件,例如/app/cache/{client}/data.cache,以减少数据库查询。

当缓存自身过期时(通过ttl),没问题。 但有时我需要强制刷新,当某些事件发生时(用户更新他的数据)。 由于这在app中发生,它只会影响触发请求的当前实例,其他4个实例将保持过时的缓存。

现在不能选择像redis或memcached这样的缓存机制。

1 个答案:

答案 0 :(得分:1)

这是一个难题,因为实例并不知道其他人存在'。您可以尝试以下方法:

首先,在刷新缓存的应用程序上创建一个端点。这需要从bean bean外部访问(如http端点)。当用户操作刷新缓存时,您需要触发以下脚本:

1:查询beanstalk上的所有活动实例
2:触发'刷新缓存' http端点上的脚本,用于返回的所有实例

您可以在应用程序中执行此操作。 AWS开发工具包具有API调用,可返回beanstalk中的所有活动实例。您需要找到与beanstalk实例对应的负载均衡器,然后执行describeLoadBalancers API调用。然后,您将获得实例ID,然后您可以使用这些实例ID通过EC2 API中的其他API调用获取其IP地址。