2016-11-17 56 views
0

據我對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 

如果只有這個錯誤可能會變得更加冗長,這可能會提供一些幫助。

回答

1

對於您所做的每項配置更改,您都不必運行initializeServices.sh。在control文件夾中執行其他腳本時,他們首先檢查是否有任何配置更改並應用這些更改。

就錯誤而言,我懷疑你沒有在你的LiveDGraphCluster.xml中指定MDEXLiveHost2,或者你指定的主機無法訪問。驗證您的配置。

最後,您的方法將更多DGraphs動態添加到羣集中並不是標準做法。在配置環境時,您應該使用ENEPerf進行負載測試來模擬負載,然後根據需要創建儘可能多的DGraphs和主機。如果要動態添加更多主機和DGraphs,則還需要確保將它們動態添加到負載平衡器配置中。

+0

感謝您的回覆。我確實添加了新主機的定義(我將添加配置作爲原始帖子的編輯) 至於向負載平衡器添加新dgraph的建議,只有在可以正確添加dgraph的情況下,該部分已經實現第一個:) – Amit

+0

我假設'mdexLive.host2'是一個單獨的機器,當您嘗試將其動態添加到羣集時,已經安裝了'MDEX'和'PlatformServices'?你是否嘗試過執行'runco​​mmand.sh DgraphLive2 stop'和'runco​​mmand.sh DgraphLive2 start'來查看它是否以這種方式建立連接? – radimpe

+0

對不起,沒有骰子。我得到了完全相同的錯誤。 與此同時,我發現'eaccmd.sh'並嘗試'./eaccmd.sh describe-app --app myapp'並且沒有任何MDEXLiveHost2的定義。所以我試着用'eaccmd.sh'添加這個主機,並得到了一個不同的錯誤(將再次添加爲編輯) – Amit

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。

相關問題