【问题标题】:Invalidate Varnish cache on multiple instances使多个实例上的清漆缓存无效
【发布时间】:2015-03-16 21:27:28
【问题描述】:

我们在 AWS 上运行我们的 Magento 商店,并且我们在 ELB 后面设置了自动缩放设置。在任何时候,我们至少有 2 个 Web 服务器在运行。每个 Web 服务器实例在其前面都有自己的 Varnish Cache 服务器来处理传入的请求。

现在,问题是一旦我们更改了一些静态内容,如 CSS、图像等,我们必须通过 SSH 连接到每个前端 EC2 实例,并禁止 Varnish 缓存对象。这真的很麻烦,因为我们首先必须从 AWS 控制台手动获取实例的 IP,然后通过 SSH 进入它们,如果我们随时拥有超过 2-3 台服务器,这会花费大量时间并且效率不高。

我研究了 Phoenix Media 安装的 PageCache 扩展,但他们模块的问题是我们仍然必须在配置中手动输入我们事先不知道的 varnish 实例 IP 的静态列表。这在我们的案例中不起作用,因为自动缩放服务器来来去去。

有没有一种方法可以同时为所有正在运行的前端服务器设置缓存失效?我在默认 VCL 文件中添加了所需的代码,它允许从同一子网中的任何实例中清除/禁止。对于所有管理任务,我们有一个专用的 EC2,我计划使用它来向所有前端服务器发出缓存失效请求。

我在想,也许我可以编写一个 shell 脚本并使用 AWS API 获取所有前端实例的 IP 列表,然后向所有这些实例发出禁令命令。这行得通吗?如何设置?

另外,是否可以采取措施自动使在从存储库拉取最新代码期间更改的所有文件的缓存失效?

解决此问题的最有效方法是什么?

【问题讨论】:

    标签: amazon-ec2 magento-1.7 varnish cache-invalidation


    【解决方案1】:

    我会这样做:

    1. 获取 elb 的托管节点(describe-load-balancers)并拉取这些节点的实例 ID
    2. 将上述实例 ID 保存在数组中
    3. 遍历实例 ID 数组并提取实例的私有 IP 地址。
    4. 将这些私有 IP 地址保存在另一个数组中
    5. 循环遍历该数组,然后通过 SSH 连接到这些实例并执行缓存失效脚本/命令。

    我在下面提供了一种提取 ELB 托管节点的私有 IP 地址的简要方法。这只是为了让您熟悉您应该使用的特定 AWS API:

    我为此目的使用 AWS CLI:

    运行以下命令以提取实例 ID:

    # aws elb describe-load-balancers --load-balancer-names my-elb | jq '.LoadBalancerDescriptions[].Instances[].InstanceId'
    "i-12345678"
    "i-87654321"
    

    一旦您准备好实例 ID,请运行以下命令以提取各个实例的私有 IP 地址:

    # aws ec2 describe-instances --instance-ids i-12345678 i-87654321 | jq '.Reservations[].Instances[].PrivateIpAddress'
    "10.0.1.1"
    "10.0.1.2"
    

    现在您有了 ELB 托管节点的 IP 地址。所以,遍历这个列表,通过 ssh 进入 ode 并运行你的 varnish 命令。

    您需要在此处编写一些脚本。因此,如果您遇到任何问题,请编写一个脚本并发布另一个问题。

    我在上面使用的 AWS API 是 describe-load-balancersdescribe-instances。而且我正在使用jq json 解析器只提取我想要的信息。

    【讨论】:

    • 是的,目前这似乎是一种恰当的方法。我会试试这个并在线程上更新。感谢您的回答。
    • @JSfellow,如果您发现此答案有帮助并解决了您的问题,请考虑upvotingaccepting 的答案。这将是在 StackOverflow 上说 THANKS 的正确方式。
    猜你喜欢
    • 1970-01-01
    • 2017-07-21
    • 2012-09-20
    • 1970-01-01
    • 2012-04-03
    • 2016-01-13
    • 2021-08-25
    • 2016-05-25
    • 1970-01-01
    相关资源
    最近更新 更多