环境详情: 工作灯:6.2
应用程序服务器:Liberty 8.5.5.0
操作系统:Windows Server 2008 r2
我正在尝试在Worklight 6.2中实现Operational Analytics的集群拓扑。以下是步骤
创建了两个自由服务器实例analytics1和analytics2。
将analytics.war文件复制到两台服务器的apps文件夹中。
在analytis1服务器的server.xml中,我已将其配置为主节点。
jndiEntry jndiName =" analytics / nodetype"值="主"
jndiEntry jndiName =" analytics / shards"值=" 2"
jndiEntry jndiName =" analytics / replicas_per_shard"值=" 2"
在analytics2服务器的server.xml中,我已将其配置为数据节点。
jndiEntry jndiName =" analytics / nodetype"值="数据"
jndiEntry jndiName =" analytics / masternodes"
值=" XX.XX.XX.XX:9600"
此拓扑中未填充数据。
如果尝试将其作为单个节点尝试,即未将nodetype设置为master或data,则显示分析结果。
以下是我的日志跟踪
[10/11/14 23:23:30:351 GST] 00000021 com.ibm.ws.webcontainer.servlet I SRVE0242I: [analytics] [/analytics] [data]: Initialization successful.
[10/11/14 23:24:11:920 GST] 00000021 org.apache.wink.server.internal.RequestProcessor E An unhandled exception occurred which will be propagated to the container.
[10/11/14 23:24:11:955 GST] 00000021 com.ibm.ws.webcontainer.util.ApplicationErrorUtils E SRVE0777E: Exception thrown by application class 'org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.onFirstPhaseResult:276'
org.elasticsearch.action.search.SearchPhaseExecutionException: Failed to execute phase [query], all shards failed
at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.onFirstPhaseResult(TransportSearchTypeAction.java:276)
at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.start(TransportSearchTypeAction.java:147)
at org.elasticsearch.action.search.type.TransportSearchQueryThenFetchAction.doExecute(TransportSearchQueryThenFetchAction.java:59)
at org.elasticsearch.action.search.type.TransportSearchQueryThenFetchAction.doExecute(TransportSearchQueryThenFetchAction.java:49)
at org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:63)
at org.elasticsearch.action.search.TransportSearchAction.doExecute(TransportSearchAction.java:108)
at org.elasticsearch.action.search.TransportSearchAction.doExecute(TransportSearchAction.java:43)
at org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:63)
at org.elasticsearch.client.node.NodeClient.execute(NodeClient.java:92)
at org.elasticsearch.client.support.AbstractClient.search(AbstractClient.java:212)
at org.elasticsearch.action.search.SearchRequestBuilder.doExecute(SearchRequestBuilder.java:1043)
at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:85)
at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:59)
at com.ibm.elasticsearch.util.ESUtility.genericFacet(ESUtility.java:155)
at com.ibm.elasticsearch.util.ESUtility.genericFacet(ESUtility.java:139)
at com.ibm.elasticsearch.util.ESUtility.genericFacet(ESUtility.java:210)
at com.ibm.elasticsearch.rest.Common.getGadgets(Common.java:51)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
答案 0 :(得分:0)
问题是主节点在没有数据节点的情况下无法显示数据,如果没有首先连接到主节点,数据节点将无法运行。我认为这不起作用,因为你的两个节点一开始就没有通信。
Karikalan的评论是正确的,为什么" masternodes"您的数据节点上的JNDI属性设置为localhost?这意味着当数据节点启动时,它将尝试在" localhost:9600"中寻找主节点。自从它指向自身以来,它不会起作用。尝试更改" localhost:9600"到具有masternode的服务器的IP地址。
此外,如果您只计划拥有两个节点,那么我建议您不要使用单独的主节点和数据节点。如果有几个其他节点需要管理(主要是我的意思是5个以上的节点),主节点会有所帮助。只有2个节点,一个作为主节点,一个作为数据,将浪费资源。您应该将两个节点设置为" master和data"节点(这可以通过简单地不设置" analytics / nodetype" JNDI属性来实现)。然后设置" masternodes"每台服务器上的JNDI属性指向其他服务器。
修改强>
您可以尝试以下方法: