2015-07-21 56 views
0

我正在Arch Linux ARM(在Raspberry Pi集羣上,更具體)中使用mpi4py(1.3.1)和openmpi(1.8.6-1)構建MPI應用程序。我在3個節點(4個流程)成功運行我的程序,並嘗試添加一個新的節點時,這裏發生了什麼:主機密鑰驗證失敗使用mpi4py

Host key verification failed. 
-------------------------------------------------------------------------- 
ORTE was unable to reliably start one or more daemons. 
This usually is caused by: 

* not finding the required libraries and/or binaries on 
    one or more nodes. Please check your PATH and LD_LIBRARY_PATH 
    settings, or configure OMPI with --enable-orterun-prefix-by-default 

* lack of authority to execute on one or more specified nodes. 
    Please verify your allocation and authorities. 

* the inability to write startup files into /tmp (--tmpdir/orte_tmpdir_base). 
Please check with your sys admin to determine the correct location to use. 

* compilation of the orted with dynamic libraries when static are required 
    (e.g., on Cray). Please check your configure cmd line and consider using 
    one of the contrib/platform definitions for your system type. 

* an inability to create a connection back to mpirun due to a 
    lack of common network interfaces and/or no route found between 
    them. Please check network connectivity (including firewalls 
    and network routing requirements). 

有趣的是,SSH密鑰都很好,因爲我使用相同的節點(我可以刪除主機文件的任何條目,添加新節點,它會工作,所以我很確定問題不在於配置錯誤的ssh設置,只發生在我使用5個進程時) 。

這可能是某種庫中的錯誤嗎?

這是我的主機文件

192.168.1.26 slots=2 
192.168.1.188 slots=1 
#192.168.1.202 slots=1 If uncommented and run with -np 5, it will raise the error 
192.168.1.100 slots=1 

提前感謝!

+0

您是否嘗試過使用裸露的ssh連接?錯誤聽起來像這樣:http://stackoverflow.com/questions/19018385/host-key-verification-failed – Jakuje

+0

是的。 ssh在任何主機上都能正常工作。如果使用不超過3個節點,MPI也可以正常工作。哪一個並不重要。我一直在嘗試檢查特定節點配置中的潛在錯誤:/ – martinarroyo

回答

5

我在運行Fedora 22和OpenMPI 1.8的Linux x86_64迷你集羣上遇到同樣的問題。我可以從我的啓動機器連接到我的5臺機器中的任何一臺,但是當我嘗試啓動具有3個或更多節點的MPI時,它會給我一個認證錯誤。像你一樣,它看起來像3是一個神奇的數字,事實證明它是。 OpenMPI使用基於樹的啓動,所以當你有兩個以上的節點時,一個或多箇中間節點正在執行一個ssh。在我的情況下,我沒有使用無密碼設置。我在我的鑰匙鏈中添加了啓動機器上的SSH身份。它能夠啓動前兩個節點,因爲我在我的鑰匙鏈中擁有經過身份驗證的身份。然後,每個節點都嘗試啓動更多節點,並且這些節點沒有通過身份驗證(我需要將它們添加到每個節點上)。

因此,該解決方案似乎轉移到無密碼的SSH身份設置,但您顯然必須小心如何做到這一點。我在我的啓動機器上創建了一個特定的身份(密鑰對)。我將密鑰添加到我想要使用的節點上的授權密鑰(這很容易,因爲它們都使用NFS,但如果需要,您可以手動分發密鑰)。然後,我修改了我的SSH配置,以便在嘗試訪問我的節點機器時使用無密碼標識。我的〜/ .ssh/config看起來像:

Host node0 
    HostName node0 
    IdentityFile ~/.ssh/passwordless_rsa 
Host node1 
    HostName node1 
    IdentityFile ~/.ssh/passwordless_rsa 
... 

我敢肯定,有一些方法來擴展N個節點的通配符。或者您可以考慮在系統級別的ssh配置文件中更改系統級別的默認身份文件(我敢打賭,那裏有類似的選項)。

而且做到了這一點。現在我可以旋轉所有5個節點,而不需要任何身份驗證問題我的想法中的缺陷是啓動節點會啓動所有其他節點,但這種基於樹的啓動意味着您需要鏈接登錄名,這是您無法通過驗證身份的密碼進行的,因爲您從來沒有機會驗證它。

讓一個無密碼的密鑰仍然讓我大吃一驚,爲了在連接到開放網絡的這些節點上保持事情的安全,我更改了sshd config(系統級別)以限制登錄到除我之外的任何人節點。

+0

哇!我無法想出!最終我決定用3個節點來執行這個程序,但這讓我非常瘋狂!非常感謝,下次這會非常有用。 – martinarroyo

相關問題