1

我在两个节点上部署了 vespa docker 镜像,运行 '/opt/vespa/bin/vespa-deploy prepare' 时出现以下错误,配置如下。如果我将 'yyy.com' 替换为 'localhost',它看起来还不错。有谁知道是什么问题?

已创建租户“默认”的会话 21。使用http://localhost:19071/application/v2/tenant/default/session/21/prepared 准备会话 21 请求失败。HTTP状态代码:400无效的应用程序包:default.default:错误加载模型:在应用程序的主机系统中找不到主机:'vespa-container'。主机系统=主机'yyy.com',主机'xxx.com'

---- hosts.xml-----

<hosts>
   <host name="yyy.com">
     <alias>admin0</alias>
   </host>
   <host name="xxx.com">
     <alias>node2</alias>
   </host>

 </hosts>

--- 服务.xml ---

  3 <services version="1.0">
  4   <admin version="2.0">
  5     <adminserver hostalias="admin0"/>
  6     <configservers>
  7       <configserver hostalias="admin0"/>
  8     </configservers>
  9   </admin>
 10   <container id="container" version="1.0">
 11     <document-api />
 12     <search />
 13     <nodes>
 14       <node hostalias="admin0" />
 15       <node hostalias="node2" />
 16     </nodes>
 17   </container>
 18 
 19   <content id="music" version="1.0">
 20     <redundancy>1</redundancy>
 21     <documents>
 22       <document type="music" mode="index" />
 23     </documents>
 24     <nodes>
 25       <node hostalias="admin0" distribution-key="0" />
 26       <node hostalias="node2" distribution-key="1" />
 27     </nodes>
 28   </content>
 29 
 30 </services>


//inside docker container, /etc/hosts
172.17.0.2      vespa-container
4

2 回答 2

3

您的问题是容器内的“localhost”是“vespa-container”,但它必须是其他节点可访问的 FQDN,例如 xxx.com/yyy.com。

如果您对细节感兴趣,解析名称 vespa-container 但必须解析为 FQDN 的确切代码是https://github.com/vespa-engine/vespa/blob/master/vespajlib/src/main中的 getPreferredHostname /java/com/yahoo/net/HostName.java

于 2018-04-04T13:41:38.947 回答
0

我想这是因为您的容器可能无法解析“yyy.com”和“xxx.com”。

你能从容器内 ping yyy.com 和 xxx.com 吗?您节点上的 2 个容器的主机名是什么?

您应该将节点 IP 和主机名放在 /etc/hosts 中,以便它们可以相互通信。

于 2018-04-03T10:18:43.050 回答