Топология IBM Worklight 6.2 Analytics Cluster

Окружающая среда детали: Worklight: 6.2

Сервер приложений:Liberty 8.5.5.0

ОС: Windows Server 2008 r2

Я пытаюсь достичь кластерной топологии операционной аналитики в Worklight 6.2. Ниже приведены шаги

  1. Созданы два экземпляра сервера liberty analytics1 и analytics2.

  2. Скопировал файл analytics.war в папку apps на обоих серверах.

  3. В файле server.xml сервера analytis1 я настроен как главный узел.

    jndiEntry jndiName = "analytics / nodetype" value = "master"
    jndiEntry jndiName = "аналитика / осколки" значение = "2"
    jndiEntry jndiName = "analytics / replicas_per_shard" value = "2"

  4. В файле server.xml 0f на сервере analytics2 я настроил узел данных.

    jndiEntry jndiName = "analytics / nodetype" value = "data"
    jndiEntry jndiName = "analytics / masternodes" value = "XX.XX.XX.XX: 9600"

Данные не заполняются в этой топологии.

Если он используется как отдельный узел, то есть без указания типа узла в качестве основного или данных, он показывает результат аналитики.

Ниже приведены мои следы журнала

    [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 ответ

Решение

Проблема заключается в том, что главный узел не может отображать данные без узла данных, а узел данных не будет работать без предварительного подключения к главному узлу. Я представляю, что это не работает, потому что ваши два узла не взаимодействуют с самого начала.

Комментарий Karikalan правильный, почему для свойства JNDI "masterterndes" на вашем узле данных установлено значение localhost? Это означает, что когда узел данных запущен, он попытается найти главный узел в "localhost:9600", который не будет работать, поскольку он просто указывает на него самого. Попробуйте изменить "localhost:9600" на IP-адрес сервера, который имеет мастер-узел.

Кроме того, если вы планируете использовать только два узла, я не рекомендую использовать отдельные основные узлы и узлы данных. Главный узел помог бы, если бы было несколько других узлов, которыми нужно было управлять (несколько я имею в виду 5+ узлов). Имея только 2 узла, один из которых является главным, а другой - данными, что является пустой тратой ресурсов. Вы должны установить оба узла в качестве узлов "master и data" (это можно сделать, просто не задав свойство JNDI "analytics / nodetype"). Затем установите свойство JNDI "masternodes" на каждом сервере так, чтобы оно указывало на другой сервер.

РЕДАКТИРОВАТЬ:

Можете ли вы попробовать следующее:

  1. Остановите оба сервера
  2. Удалите папку данных "analyticsData" для каждого сервера (она находится в той же папке, что и ваш server.xml)
  3. Чтобы быть в безопасности, временно установите значение реплики на осколок равным 1
  4. Сначала запустите главный узел и посетите консоль для главного узла
  5. Запустите узел данных и посетите консоль для узла данных.
  6. Попробуйте отправить данные в аналитический кластер
Другие вопросы по тегам