Есть ли способ динамически определять и регистрировать новые Dgraphs в Endeca?

Насколько я знаю об Endeca, каждый раз, когда вы хотите добавить новое определение dgraph в свою конфигурацию Endeca, вам нужно запустить initializeServices.sh, чтобы установить обновленную конфигурацию в EAC.

Мне было интересно, есть ли способ сделать это без запуска initalizeServices.sh (поскольку он делает гораздо больше, чем просто обновляет список Dgraph, зарегистрированных в EAC, и я хочу предотвратить это).

Я обнаружил, что команда ./runcommand.sh --update-definition позволяет вам вносить изменения в конфигурацию Dgraph, который уже был зарегистрирован в EAC, но если я добавлю новый dgraph в конфигурацию и запущу команду, произойдет сбой со следующей ошибкой:

[11.17.16 16:00:07] INFO: Setting definition for host 'MDEXLiveHost2'.
[11.17.16 16:00:07] SEVERE: Caught an exception while checking provisioning
Caused by com.endeca.soleng.eac.toolkit.exception.EacCommunicationException
com.endeca.soleng.eac.toolkit.host.Host setDefinition - Caught exception while setting host definition.
Caused by com.endeca.eac.client.ProvisioningFault
sun.reflect.NativeConstructorAccessorImpl newInstance0 - null

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

Однако я мог видеть в журнале запросов, что /eac/ProvisioningService дал HTTP-код 500, что наводит меня на мысль, что скрипт пытается найти текущую конфигурацию MDEXLiveHost2 и не может ее найти.

ИЗМЕНЕНО, ЧТОБЫ ДОБАВИТЬ Конфигурацию для:

Новый хост:

<host id="MDEXLiveHost2" hostName="${mdexLive.host2}" port="${mdexLive.eac.port}" useSsl="false" />

Новый Дграф:

<dgraph id="DgraphLive2" host-id="MDEXLiveHost2" port="${dgraphLive1.port}"
      post-startup-script="LiveDgraphPostStartup">
    <properties>
        <property name="restartGroup" value="A" />
        <property name="updateGroup" value="a" />
        <property name="DgraphContentGroup" value="Live" />
    </properties>
    <log-dir>./logs/dgraphs/DgraphLive</log-dir>
    <input-dir>./data/dgraphs/DgraphLive/dgraph_input</input-dir>
    <update-dir>./data/dgraphs/DgraphLive/dgraph_input/updates</update-dir>
</dgraph>

ИЗМЕНЕНО ДЛЯ ДОБАВЛЕНИЯ ошибок после ручного добавления хоста с помощью eaccmd.sh

Файл определения хоста:

<host host-id="MDEXLiveHost2" host-name="172.18.0.7" port="9999" useSsl="false"/>

Хост успешно добавлен (проверено через describe-app)

$./eaccmd.sh describe-app --app myapp | grep MDEXLiveHost2 <host host-name="172.18.0.7" port="9999" host-id="MDEXLiveHost2" useSsl="false">

Но при выполнении любой команды я получаю эту ошибку:

[11.18.16 11:00:58] INFO: Updating provisioning for host 'MDEXLiveHost2'.
[11.18.16 11:00:58] INFO: Host name of host 'MDEXLiveHost2' has changed from 172.18.0.7 to 172.18.0.7 . Components on this host will be re-provisioned.
[11.18.16 11:00:58] INFO: Updating definition for host 'MDEXLiveHost2'.
[11.18.16 11:00:58] SEVERE: Caught an exception while checking provisioning.

Caused by com.endeca.soleng.eac.toolkit.exception.EacCommunicationException
com.endeca.soleng.eac.toolkit.host.Host updateEacDefinition - Caught exception while updating host definition.
Caused by com.endeca.eac.client.ProvisioningFault
sun.reflect.NativeConstructorAccessorImpl newInstance0 - null

Если бы только эту ошибку можно было сделать более подробной, это могло бы помочь.


person Amit    schedule 17.11.2016    source источник


Ответы (2)


Вам не нужно запускать initializeServices.sh для каждого изменения конфигурации, которое вы вносите. Когда вы выполняете другие скрипты в папке control, они сначала проверяют, нет ли изменений в конфигурации, и применяют эти изменения.

Что касается ошибки, я подозреваю, что вы либо не указали MDEXLiveHost2 в своем LiveDGraphCluster.xml, либо указанный вами хост недоступен. Проверьте свою конфигурацию.

Наконец, ваш подход к динамическому добавлению дополнительных DGraphs в кластер не является стандартной практикой. Когда вы настраиваете свою среду, вы должны выполнить нагрузочный тест, используя ENEPerf, чтобы имитировать нагрузку, а затем создать столько DGraphs и хостов, сколько требуется. Если вы добавляете больше хостов и DGraphs динамически, вам также необходимо убедиться, что вы добавляете их динамически в конфигурацию балансировщика нагрузки.

person radimpe    schedule 18.11.2016
comment
Спасибо за ответ. Я добавил определение для нового хоста (я добавлю конфигурацию как редактирование исходного сообщения). Что касается предложения добавить новые dgraphs в балансировщик нагрузки, эта часть уже достигнута, только если бы я мог сначала правильно добавить dgraphs :) - person Amit; 18.11.2016
comment
Я предполагаю, что mdexLive.host2 — это отдельная машина, на которой уже установлены MDEX и PlatformServices, когда вы пытаетесь динамически добавить ее в кластер? Вы пытались выполнить runcommand.sh DgraphLive2 stop и runcommand.sh DgraphLive2 start, чтобы увидеть, устанавливает ли он соединение таким образом? - person radimpe; 18.11.2016
comment
Извините, нет игральных костей. У меня точно такая же ошибка. Тем временем я нашел eaccmd.sh и попробовал ./eaccmd.sh describe-app --app myapp, но для MDEXLiveHost2 нет никакого определения. Итак, я попытался добавить этот хост с помощью eaccmd.sh и получил другую ошибку (снова добавлю как редактирование) - person Amit; 18.11.2016

Мое первое предположение заключалось в том, что, возможно, на узле mdex 2 не были установлены службы платформы/Mdex и запущены службы платформы, но может случиться так, что указанный вами порт неверен.

<host host-id="MDEXLiveHost2" host-name="172.18.0.7" port="9999" useSsl="false"/>

Ваш порт eac 9999, а не 8888 (значение OOB)? Если на вашем сервере ITL это 9999, вы хотите убедиться, что оно также установлено на 9999 на вашем новом сервере Dgraph.

person Zach Quinn    schedule 17.01.2017