有没有办法在Endeca中动态定义和注册新的Dgraph

时间:2016-11-17 16:35:08

标签: endeca

就我对Endeca的了解而言,只要您想在Endeca配置中添加新的dgraph定义,就必须运行initializeServices.sh以在EAC上设置更新的配置。

我想知道在没有运行initalizeServices.sh的情况下是否有任何办法可以做到这一点(因为它不仅仅是更新在EAC中注册的Dgraph列表,而且我想阻止它)。

我发现命令./runcommand.sh --update-definition允许你对已经在EAC中注册的Dgraph进行配置更改,但是如果我在config中添加一个新的dgraph并运行命令它会失败,并显示以下错误:< / p>

[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提供了500的HTTP代码,这让我相信该脚本正在尝试查找MDEXLiveHost2的当前配置,并且无法找到它。

已编辑添加配置:

新主持人:

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

新Dgraph:

<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

如果只有这个错误可以更详细,那可能会有所帮助。

2 个答案:

答案 0 :(得分:1)

您不必为每个配置更改运行initializeServices.sh。当您在control文件夹中执行其他脚本时,他们首先检查是否有任何配置更改并应用这些更改。

就错误而言,我怀疑您未在MDEXLiveHost2中指定LiveDGraphCluster.xml,或者您指定的主机无法访问。验证您的配置。

最后,您向群集中动态添加更多DGraphs的方法不是标准做法。配置环境时,应使用ENEPerf进行负载测试以模拟负载,然后根据需要创建尽可能多的DGraphs和主机。如果要动态添加更多主机和DGraphs,还需要确保将其动态添加到负载均衡器配置中。

答案 1 :(得分:0)

我的第一个猜测是,mdex主机2可能没有安装平台服务/ Mdex并且平台服务正在运行,但可能是您指定的端口不正确。

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

您的eac端口是9999而不是8888(OOB值)?如果您的ITL服务器上是9999,您需要确保它在新的Dgraph服务器上也设置为9999。