在用于配置服务器和服务的单独容器中运行vespa

时间:2019-06-27 14:59:00

标签: docker vespa

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

我有一台机器,尝试在其上为configserver(一个容器)和服务(一个容器)运行单独的容器

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

我正在运行的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服务

我在 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上。

请帮助。

2 个答案:

答案 0 :(得分:2)

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

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

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

当系统正常运行时,您应该在上述配置中的http://localhost:7080上收到响应

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

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

答案 1 :(得分: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>

我还建议使用here

中的最新版本的Vespa Docker映像