偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

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

     pang

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

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

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

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

     3. 確保端口是防火墻友好的。erlang的節(jié)點(diǎn)是登記在epmd服務(wù)上的,所以4369端口要能訪問,其次節(jié)點(diǎn)的動(dòng)態(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)境,二臺(tái)機(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上起個(gè)節(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\' **

    同時(shí)我們?cè)?0.232.31.89上運(yùn)行另外一個(gè)節(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)無法互通,出錯(cuò)的原因是”** Connection attempt from disallowed node ‘yy@10.232.31.89′ ** “.

    在otp源碼目錄下簡(jiǎn)單的運(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個(gè)函數(shù)有可能打印這個(gè)語(yǔ)句,分別是:

     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)對(duì)集群的訪問之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個(gè)原因了,回頭來看下我們的版本號(hào):

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

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

 

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

【編輯推薦】

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

2011-06-30 09:25:22

軟件項(xiàng)目

2016-12-12 12:55:24

模塊分析解決

2024-05-23 08:40:46

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

2009-07-31 09:14:01

WinCE啟動(dòng)失敗

2017-11-15 08:54:00

2019-10-17 21:14:08

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

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ù)倉(cāng)庫(kù)

2020-11-10 09:21:29

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

2019-11-05 15:11:55

CIOERPP失敗

2020-07-09 10:26:28

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

2024-10-30 14:50:31

2021-06-18 10:03:37

變革管理首席信息官CIO

2013-04-26 09:26:56

軟路由升級(jí)失敗

2013-05-02 09:55:08

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

2023-03-09 07:13:40

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

2012-05-08 13:42:24

Erlang

2010-09-17 14:13:20

SIP業(yè)務(wù)Erlang
點(diǎn)贊
收藏

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