【问题标题】:Docker keep hostname available even though container is not runningDocker 保持主机名可用,即使容器没有运行
【发布时间】:2020-07-11 00:26:21
【问题描述】:

我在使用 Docker 和 Varnish 时遇到了以下问题。

我的docker-compose.yml 文件定义了以下 2 个容器

varnish:
   image: varnish
   network: test
my-app:
   image: my-app-image
   network: test

我的 varnish VCL 有以下配置:

backend myApp {
    .host = "my-app";
    .port = "8080";
    .first_byte_timeout = 300s;
    .probe = {
        .url = "/percolate-health-check";
        .timeout = 1s;
        .interval = 4s;
        .window = 5;
        .threshold = 3;
    }
}

backend fallback { ...fallback backend settings }

现在我遇到的当前问题是。 容器 my-app 出现故障。网络名称my-app 也不见了。 这反过来又会导致 Varnish 崩溃,因为我的应用程序无法解析。

有没有办法让 Docker 主机名在容器关闭的情况下保持存在?
或者我应该如何使用 Varnish / Docker 处理这个问题。

谢谢!

【问题讨论】:

    标签: docker varnish


    【解决方案1】:

    当后端不再可用时,Varnish 通常不会崩溃。而是返回 HTTP 503 错误。

    宽限模式

    如果没有备用容器,您可以使用宽限模式在后端关闭时继续提供陈旧数据。查看https://varnish-cache.org/docs/6.0/users-guide/vcl-grace.html#misbehaving-servers 以查看 VCL 示例。

    董事

    如果您确实有一个后备后端,或者通常只有多个后端,您可以使用 directors 在后端之间进行负载平衡:https://varnish-cache.org/docs/6.0/users-guide/vcl-backends.html#directors

    有很多类型的导演。看 https://varnish-cache.org/docs/6.0/reference/vmod_generated.html#varnish-directors-module 概览

    【讨论】:

    • 这是正确的,但由于无法解析主机而导致 VCL 编译错误:Backend host '"my-app"' could not be resolved to an IP address: 这是由于 docker 在我的后端崩溃后删除了主机名。
    • 当我的 docker 容器崩溃时,我目前也在使用回退导向器回退到原始应用程序。但是由于 VCL 编译错误,这不起作用:(
    • @StijnBernards 我为您提供的唯一解决方案是使用 动态后端,不幸的是,这是 Varnish Enterprise 的一项功能:docs.varnish-software.com/varnish-cache-plus/vmods/goto
    • @StijnBernards 一个更重要的问题是:为什么这个容器会停机?您是在使用独立的 Docker 还是在 Kubernetes 中进行编排? Kubernetes 为您的问题提供了内置解决方案。
    • 我正在使用没有 Kubernetes 或 Docker Swarm 设置的标准 docker。我的容器几乎没有下降,但我想修复它突然出现的情况。我认为我的问题可能与 Linux/网络相关。如果 docker 覆盖 /etc/hosts,也许有一种解决方案可以通过 /etc/hosts 将主机名路由到 localhost 来保持主机名可访问?
    猜你喜欢
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多