據我對Endeca的瞭解,任何時候你想在你的Endeca配置中添加一個新的dgraph定義,你必須運行initializeServices.sh
來設置更新後的配置在EAC上。有沒有辦法在Endeca中動態定義和註冊新的Dgraphs
我想知道是否有任何方法可以做到這一點,而不運行initalizeServices.sh
(因爲它不僅僅是更新在EAC中註冊的Dgraph列表,而且我想阻止它)。
我找到了命令./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
給了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
如果只有這個錯誤可能會變得更加冗長,這可能會提供一些幫助。
感謝您的回覆。我確實添加了新主機的定義(我將添加配置作爲原始帖子的編輯) 至於向負載平衡器添加新dgraph的建議,只有在可以正確添加dgraph的情況下,該部分已經實現第一個:) – Amit
我假設'mdexLive.host2'是一個單獨的機器,當您嘗試將其動態添加到羣集時,已經安裝了'MDEX'和'PlatformServices'?你是否嘗試過執行'runcommand.sh DgraphLive2 stop'和'runcommand.sh DgraphLive2 start'來查看它是否以這種方式建立連接? – radimpe
對不起,沒有骰子。我得到了完全相同的錯誤。 與此同時,我發現'eaccmd.sh'並嘗試'./eaccmd.sh describe-app --app myapp'並且沒有任何MDEXLiveHost2的定義。所以我試着用'eaccmd.sh'添加這個主機,並得到了一個不同的錯誤(將再次添加爲編輯) – Amit