自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Erlang節(jié)點(diǎn)間ping失敗原因分析

運(yùn)維 系統(tǒng)運(yùn)維
今天和項(xiàng)仲在部署新系統(tǒng)的時候發(fā)現(xiàn)節(jié)點(diǎn)間ping不成功的情況,類似 1> net_adm:ping(‘xx@ip1′). pang 這個問題比較普遍,我就記錄下一步步的排除步驟.

 今天和項(xiàng)仲在部署新系統(tǒng)的時候發(fā)現(xiàn)節(jié)點(diǎn)間ping不成功的情況,類似

    1> net_adm:ping(‘xx@ip1′).

     pang

     這個問題比較普遍,我就記錄下一步步的排除步驟.

    首先從原理上分析下!由于erlang節(jié)點(diǎn)間通訊是透過tcp來進(jìn)行的,所以我們確保以下幾點(diǎn):

     1. 確保網(wǎng)絡(luò)連接是通的,可以透過ping來查看。

     2. 確保網(wǎng)絡(luò)連接上tcp是可以通的,可以透過netcat在二個節(jié)點(diǎn)所在的機(jī)器上分別開個服務(wù)器端和客戶端進(jìn)行驗(yàn)證。

     3. 確保端口是防火墻友好的。erlang的節(jié)點(diǎn)是登記在epmd服務(wù)上的,所以4369端口要能訪問,其次節(jié)點(diǎn)的動態(tài)端口是可以訪問的。

    epmd -names

     epmd: up and running on port 4369 with data:

     name xx at port 46627

     …

    同樣可以用netcat來驗(yàn)證。

     4. erlang節(jié)點(diǎn)的cookie是一樣的,可以透過setcookie來解決。

    這幾點(diǎn)確認(rèn)無誤后,就可以開始排查問題了。

     交代下環(huán)境,二臺機(jī)器IP分別是10.1.150.12,10.232.31.89, 上面分別運(yùn)行Erlang版本R16B和R14B04,cookie統(tǒng)一設(shè)置為456789。

    我們來演習(xí)下,首先我們10.1.150.12在節(jié)點(diǎn)A上起個節(jié)點(diǎn)’xx@10.1.150.12′,如下:

    

# erl -name xx@`hostname -i` --setcookie 456789
Erlang R16B (erts-5.10) 1 [64-bit] [smp:24:24] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.10  (abort with ^G)
(xx@10.1.150.12)1>
=ERROR REPORT==== 28-Mar-2012::13:25:42 ===
** Connection attempt from disallowed node \'yy@10.232.31.89\' **

    同時我們在10.232.31.89上運(yùn)行另外一個節(jié)點(diǎn)’yy@10.232.31.89′進(jìn)行節(jié)點(diǎn)間連接,如下:

$erl -name yy@`hostname -i` --setcookie 456789
Erlang R14B04 (erts-5.8.5) 1 [64-bit] [smp:16:16] [rq:16] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.8.5  (abort with ^G)
(yy@10.232.31.89)1>  net_adm:ping(\'xx@10.1.150.12\').
pang

    我們看到節(jié)點(diǎn)無法互通,出錯的原因是”** Connection attempt from disallowed node ‘yy@10.232.31.89′ ** “.

    在otp源碼目錄下簡單的運(yùn)行:

# grep -rin "disallowed node" .
./lib/kernel/src/dist_util.erl:154:                   "disallowed node ~w ** ~n", [Node]),
./lib/kernel/src/dist_util.erl:603:                           "disallowed node ~w ** ~n", [NodeB]),
./lib/kernel/src/dist_util.erl:623:                           "disallowed node ~w ** ~n", [NodeB]),
./lib/kernel/src/net_kernel.erl:1149:                 "disallowed node ~w ** ~n", [Node]),

    我們可以看到有3個函數(shù)有可能打印這個語句,分別是:

     1. is_allowed %% check if connecting node is allowed to connect with allow-node-scheme

     2 .recv_challenge_reply %% wait for challenge response after send_challenge

     3. recv_challenge_ack

    節(jié)點(diǎn)間allow相關(guān)的東西可以參考這篇文章:Erlang如何限制節(jié)點(diǎn)對集群的訪問之net_kernel:allow

    我們來排除下allow導(dǎo)致問題的原因,把a(bǔ)llow設(shè)成[],允許任意節(jié)點(diǎn)訪問:

    2> net_kernel:allow([]).

     ok

     (xx@10.1.150.12)2>

     =ERROR REPORT==== 28-Mar-2012::13:36:09 ===

     ** Connection attempt from disallowed node ‘yy@10.232.31.89′ **

    沒有解決問題。那就可以肯定是第2,3個原因了,回頭來看下我們的版本號:

     R14B04 和 R16B, 差了二個大版本, 這個是核心原因。

     換成同樣的版本的erlang問題解決!如下:

 

    小結(jié): Erlang版本不混用,即使混用最好不超過2個版本。

【編輯推薦】

  1. 獵豹瀏覽器初體驗(yàn)
  2. Windows安全最高境界
  3. IE8安全新功能實(shí)測,到底給不給力?
責(zé)任編輯:趙寧寧
相關(guān)推薦

2011-06-30 09:25:22

軟件項(xiàng)目

2016-12-12 12:55:24

模塊分析解決

2017-11-15 08:54:00

2009-07-31 09:14:01

WinCE啟動失敗

2019-10-17 21:14:08

Kubernetes節(jié)點(diǎn)Python

2024-05-23 08:40:46

Kubernetes預(yù)過濾調(diào)度

2023-01-14 17:45:28

數(shù)據(jù)分析項(xiàng)目

2012-08-16 09:07:57

Erlang

2009-04-03 09:06:00

瀏覽器W3C標(biāo)準(zhǔn)

2023-01-29 16:38:19

人工智能項(xiàng)目數(shù)據(jù)倉庫

2020-11-10 09:21:29

MySQL數(shù)據(jù)庫SQL

2021-06-18 10:03:37

變革管理首席信息官CIO

2024-10-30 14:50:31

2019-11-05 15:11:55

CIOERPP失敗

2020-07-09 10:26:28

軟件項(xiàng)目軟件開發(fā)CIO

2023-03-09 07:13:40

數(shù)字化轉(zhuǎn)型交付

2021-05-10 09:35:58

Kubernetes節(jié)點(diǎn)Join

2013-04-26 09:26:56

軟路由升級失敗

2013-05-02 09:55:08

局域網(wǎng)遠(yuǎn)程連接失敗

2012-05-08 13:42:24

Erlang
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號