Топология IBM Worklight 6.2 Analytics Cluster
Окружающая среда детали: Worklight: 6.2
Сервер приложений:Liberty 8.5.5.0
ОС: Windows Server 2008 r2
Я пытаюсь достичь кластерной топологии операционной аналитики в Worklight 6.2. Ниже приведены шаги
Созданы два экземпляра сервера liberty analytics1 и analytics2.
Скопировал файл analytics.war в папку apps на обоих серверах.
В файле server.xml сервера analytis1 я настроен как главный узел.
jndiEntry jndiName = "analytics / nodetype" value = "master"
jndiEntry jndiName = "аналитика / осколки" значение = "2"
jndiEntry jndiName = "analytics / replicas_per_shard" value = "2"В файле 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" на каждом сервере так, чтобы оно указывало на другой сервер.
РЕДАКТИРОВАТЬ:
Можете ли вы попробовать следующее:
- Остановите оба сервера
- Удалите папку данных "analyticsData" для каждого сервера (она находится в той же папке, что и ваш server.xml)
- Чтобы быть в безопасности, временно установите значение реплики на осколок равным 1
- Сначала запустите главный узел и посетите консоль для главного узла
- Запустите узел данных и посетите консоль для узла данных.
- Попробуйте отправить данные в аналитический кластер