Есть ли способ динамически определять и регистрировать новые Dgraphs в Endeca?
Насколько мне известно об Endeca, каждый раз, когда вы хотите добавить новое определение dgraph в конфигурацию Endeca, вы должны запустить initializeServices.sh
установить обновленную конфигурацию на EAC.
Мне было интересно, есть ли способ сделать это без запуска initalizeServices.sh
(поскольку это намного больше, чем просто обновление списка Dgraph, зарегистрированных в EAC, и я хочу предотвратить это).
Я нашел команду ./runcommand.sh --update-definition
позволяет вам вносить изменения в конфигурацию Dgraph, который уже был зарегистрирован в EAC, но если я добавлю новый dgraph в config и выполню команду, произойдет сбой с ошибкой ниже:
[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>
EDITED TO ADD ошибки после добавления хоста вручную 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
Если бы только эту ошибку можно было сделать более многословной, это могло бы помочь.
2 ответа
Вам не нужно бежать initializeServices.sh
за каждое изменение конфигурации, которое вы делаете. Когда вы выполняете другие сценарии в control
папки, они сначала проверяют, есть ли какие-либо изменения конфигурации и применяют эти изменения.
Что касается ошибки, я подозреваю, что вы либо не указали MDEXLiveHost2
в вашем LiveDGraphCluster.xml
или указанный вами хост недоступен. Проверьте свою конфигурацию.
Наконец, ваш подход к динамическому добавлению DGraphs
в кластер не является стандартной практикой. При настройке среды вы должны выполнить нагрузочный тест, используя ENEPerf
смоделировать нагрузку, а затем создать как можно больше DGraphs
и хосты по мере необходимости. Если вы добавляете больше хостов и DGraphs
динамически, вы также должны убедиться, что вы добавляете их динамически в конфигурацию вашего балансировщика нагрузки.
Моим первым предположением было, что, возможно, на хосте 2 mdex не установлены службы Platform /Mdex и запущены службы Platform, но возможно, что указанный вами порт неверен.
<host host-id="MDEXLiveHost2" host-name="172.18.0.7" port="9999" useSsl="false"/>
Ваш eac порт 9999, а не 8888 (значение OOB)? Если это 9999 на вашем сервере ITL, вы хотите убедиться, что он также установлен на 9999 на вашем новом сервере Dgraph.