在应用程序的主机系统中找不到主机:'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
我在两个节点上部署了 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