2

我引用了链接https://docs.vespa.ai/documentation/docker-containers-in-production.html来控制两个不同 docker 容器中的配置服务器和服务。

我有一台机器,我正在尝试为配置服务器(一个容器)和服务(一个容器)运行单独的容器

但是,我无法理解服务容器的用途是什么,因为我仍然能够仅使用运行的配置服务器容器。

我正在运行的 Docker 命令:

docker run --hostname vespa-cfg --name vcfg --privileged -e VESPA_CONFIGSERVERS=vespa-cfg -p 19071:19071 -p 7070:8080 -d vespaengine/vespa:6.330.51 configserver

docker run --hostname vespa-ssrv --name vsrv --privileged -e VESPA_CONFIGSERVERS=vespa-cfg -p 7080:8080 -d vespaengine/vespa:6.330.51 services

我在hosts.xml中添加了以下内容

<hosts>
  <host name="vespa-cfg">
    <alias>server01</alias>
  </host>
  <host name="vespa-ssrv">
    <alias>service01</alias>
  </host>
</hosts>

services.xml中

<services version="1.0">
    <admin version="1.0">
    <adminserver hostalias="server01"/>
    <configservers>
        <configserver hostalias="server01"/>
    </configservers>
    </admin>

    <container id="default-container" version="1.0">
        ...
        <nodes>
            <node hostalias="service01" />
        </nodes>
        ...
    </container>

    <content id="default-content" version="1.0">
        ...
        <nodes>
            <node hostalias="service01" distribution-key="0" />
        </nodes>
        ...
    </content>
</services>

我还尝试将两个容器上的数据保留在不同的卷点上,但所有数据仍保留在 configserver 卷点目录中。

查询 API 也在端口 7070 上使用 configserver,而不是在服务的 7080 上使用。

请帮忙。

4

2 回答 2

2

简而言之,configserver(s) 配置服务节点。服务节点处理和存储服务数据。在大型系统中,您有 1 或 3 个配置服务器,以及 10/100 个服务节点

参考https://docs.vespa.ai/documentation/overview.html

我在其他地方看到,有些配置服务器节点上的 slobrok(服务位置代理)存在问题 - 通过在 configserver 容器中运行 vespa-start-services 得到纠正(只需登录容器并运行启动命令,然后检查 7080 ) - https://docs.vespa.ai/documentation/reference/files-processes-and-ports.html

当系统正常工作时,您应该在上面的配置中得到http://localhost:7080的响应

vespa-logfmt 应该给出一些关于问题所在的想法

我还建议您使用最新版本,而不是 6.330.51 - Vespa 7 是当前的主要版本

于 2019-06-27T20:05:55.140 回答
0

为了能够像您想要的那样使用多个容器,您需要使用内部 Docker DNS,以便 Vespa 可以查找所有容器和配置服务器的名称。这可以通过创建一个单独的网络并遵循主机名和容器名称的约定来完成。如果您以这种方式启动容器,则上面的示例将起作用:

docker network create --driver bridge vespa-net
docker run --network=vespa-net --hostname vespa-cfg.vespa-net --name vespa-cfg --privileged -e VESPA_CONFIGSERVERS=vespa-cfg.vespa-net -p 19071:19071 -p 7070:8080 -d vespaengine/vespa:6.330.51 configserver
docker run --network=vespa-net --hostname vespa-ssrv.vespa-net --name vespa-ssrv --privileged -e VESPA_CONFIGSERVERS=vespa-cfg.vespa-net -p 7080:8080 -d vespaengine/vespa:6.330.51 services

记得更新你的hosts.xml

<hosts>
  <host name="vespa-cfg.vespa-net">
    <alias>server01</alias>
  </host>
  <host name="vespa-ssrv.vespa-net">
    <alias>service01</alias>
  </host>
</hosts>

我还建议从这里使用最新版本的 Vespa Docker 映像

于 2019-08-05T12:17:30.387 回答