首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在分别用于configserver和services的容器中运行vespa

在分别用于configserver和services的容器中运行vespa
EN

Stack Overflow用户
提问于 2019-06-27 14:59:00
回答 2查看 255关注 0票数 2

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

我有一台机器,试图运行分别用于configserver(一个容器)和服务(一个容器)的容器。

但是,我无法理解服务容器的用途,因为我仍然能够在只运行配置服务器容器的情况下工作。

我正在运行的Docker命令:

码头运行--主机名vespa-cfg --特权-e vespa_CONFIGSERVERS=vespa -p 19071:19071 -p 7070:8080 -d vespaengine/vespa:6.330.51 configserver

码头运行--主机名vespa-ssrv - -e VESPA_CONFIGSERVERS=vespa-cfg -p 7080:8080 -d vespaengine/vespa:6.330.51服务

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

代码语言:javascript
复制
<hosts>
  <host name="vespa-cfg">
    <alias>server01</alias>
  </host>
  <host name="vespa-ssrv">
    <alias>service01</alias>
  </host>
</hosts>

services.xml

代码语言:javascript
复制
<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。

拜托救救我。

EN

回答 2

Stack Overflow用户

发布于 2019-06-27 20:05:55

简而言之,configserver配置服务节点。处理和存储用于服务的数据的是服务节点。在大型系统中,您有1或3个configserver和10‘s/100的服务节点。

参考文献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是当前的主要版本。

票数 2
EN

Stack Overflow用户

发布于 2019-08-05 12:17:30

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

代码语言:javascript
复制
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

代码语言:javascript
复制
<hosts>
  <host name="vespa-cfg.vespa-net">
    <alias>server01</alias>
  </host>
  <host name="vespa-ssrv.vespa-net">
    <alias>service01</alias>
  </host>
</hosts>

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56793859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档