我在两个节点上部署了vespa docker镜像,在运行'/ opt / vespa / bin / vespa-deploy prepare'时遇到以下错误,配置如下。如果我用'localhost'替换'yyy.com',它看起来很好。有谁知道这是什么问题?
创建了租户'默认'的会话21。 使用http://localhost:19071/application/v2/tenant/default/session/21/prepared准备会话21 请求失败。 HTTP状态代码:400 无效的应用程序包:default.default:加载模型时出错:无法在应用程序的主机系统中找到主机:'vespa-container'。 Hostsystem =主机'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
答案 0 :(得分:3)
你的问题是&#39; localhost&#39;容器内部是&#39; vespa-container&#39;,但它必须是其他节点可以访问的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
答案 1 :(得分:0)
我想这是因为你的容器可能无法解决&#34; yyy.com&#34;和&#34; xxx.com&#34;。
你可以从容器里面ping yyy.com和xxx.com吗?您节点上的2个容器的主机名是什么?
您应该将您的节点IP和主机名放在/ etc / hosts中,以便它们可以相互通信。