IBM Worklight 6.2 Analytics Cluster拓扑

时间:2014-10-11 07:14:26

标签: ibm-mobilefirst worklight-server worklight-analytics

环境详情: 工作灯:6.2

应用程序服务器:Liberty 8.5.5.0

操作系统:Windows Server 2008 r2

我正在尝试在Worklight 6.2中实现Operational Analytics的集群拓扑。以下是步骤

  1. 创建了两个自由服务器实例analytics1和analytics2。

  2. 将analytics.war文件复制到两台服务器的apps文件夹中。

  3. 在analytis1服务器的server.xml中,我已将其配置为主节点。

    jndiEntry jndiName =" analytics / nodetype"值="主"
    jndiEntry jndiName =" analytics / shards"值=" 2"
    jndiEntry jndiName =" analytics / replicas_per_shard"值=" 2"

  4. 在analytics2服务器的server.xml中,我已将其配置为数据节点。

    jndiEntry jndiName =" analytics / nodetype"值="数据"
     jndiEntry jndiName =" analytics / masternodes"        值=" XX.XX.XX.XX:9600"

  5. 此拓扑中未填充数据。

    如果尝试将其作为单个节点尝试,即未将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)
    

1 个答案:

答案 0 :(得分:0)

问题是主节点在没有数据节点的情况下无法显示数据,如果没有首先连接到主节点,数据节点将无法运行。我认为这不起作用,因为你的两个节点一开始就没有通信。

Karikalan的评论是正确的,为什么" masternodes"您的数据节点上的JNDI属性设置为localhost?这意味着当数据节点启动时,它将尝试在" localhost:9600"中寻找主节点。自从它指向自身以来,它不会起作用。尝试更改" localhost:9600"到具有masternode的服务器的IP地址。

此外,如果您只计划拥有两个节点,那么我建议您不要使用单独的主节点和数据节点。如果有几个其他节点需要管理(主要是我的意思是5个以上的节点),主节点会有所帮助。只有2个节点,一个作为主节点,一个作为数据,将浪费资源。您应该将两个节点设置为" master和data"节点(这可以通过简单地不设置" analytics / nodetype" JNDI属性来实现)。然后设置" masternodes"每台服务器上的JNDI属性指向其他服务器。

修改

您可以尝试以下方法:

  1. 停止两台服务器
  2. 删除" analyticsData"每个服务器的数据文件夹(与server.xml位于同一文件夹中)
  3. 为安全起见,请将每个分片值的副本暂时设置为1
  4. 首先启动主节点并访问主节点的控制台
  5. 启动数据节点并访问数据节点的控制台
  6. 尝试将数据发送到分析群集