在应用程序的主机系统中找不到主机:'vespa-container'

Could not find host in the application's host system: 'vespa-container'

我在两个节点上部署了 vespa docker 映像,在 运行 '/opt/vespa/bin/vespa-deploy 准备' 时出现以下错误,配置如下。如果我用 'localhost' 替换 'yyy.com',它看起来不错。任何人都知道这是什么问题?

租户 'default' 的会话 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>

--- services.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

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

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

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

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

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

中的 getPreferredHostname