Erlang epmd官方文檔中文翻譯


本文含epmd簡介及官方文檔之翻譯,文檔地址 http://erlang.org/doc/man/epmd.html
翻譯時的版本 R19.1html

中英文水平都不咋地,不通順處海涵,就醬。數據庫

簡介

  Erlang分佈式系統中節點是經過節點名字互相鏈接的,節點名字爲NAME@IP_ADDRESS格式。服務器

  epmd是分佈式erlang中比較重要的模塊。集羣中每臺機器都有一個epmd進程,這些進程端口號都用同一個端口號(默認4396端口)。全部節點啓動的時候都會鏈接到本機對應的epmd進程,它記錄了本機全部相關的節點。遠程節點知道IP_ADDRESS就能夠鏈接到遠程epmd,再經過epmd能夠根據節點名字NAME獲取對應節點的實際網絡地址,完成節點間互聯。網絡

翻譯

epmd - Erlang Port Mapper Daemon

命令:
epmd [-d|-debug] [DbgExtra...] [-port No] [-daemon] [-relaxed_command_check]
啓動epmd
epmd [-d|-debug] [-port No] [-names|-kill|-stop Name]
與正在運行的epmd交互

  epmd至關於存在於分佈式erlang系統中全部的主機上的一個域名服務器。每一個Erlang節點啓動的時候都會有一個節點名字,而且從宿主操做系統內核得到一個地址。節點名字和地址會發送給本地的epmd進程。在TCP/IP環境中,這個地址由ip地址和端口號組成。節點名字是一個atom,格式爲Name@Host。epmd進程的做用就是記錄節點名字對應哪一個地址並進行映射。

  TCP/IP環境的epmd進程其實只記錄節點名字的Name部分,Host(@後面的部分)在鏈接epmd進程的時候就隱含在了節點名字裏面。所以,erlang網絡須要一個穩定的不出錯的TCP名字服務才能正常運行。

啓動epmd:
  在使用erl命令啓動分佈式節點的時候,若是沒有epmd在運行,則會自動啓動一個epmd。自動啓動的話,須要用到一些環境變量來修改epmd進程的運行參數。詳見下文中的 環境變量 一段。

  若是沒有指定-daemon參數,epmd會像一個普通程序同樣運行在控制終端。通常來講,它應該做爲daemon進程啓動。

  常規的啓動參數在下文 常規參數 中詳細說明。

  DbgExtra參數在下文 DbgExtra 參數中詳細說明。

與正在運行的epmd交互:
  與運行中的epmd交互最初是用來debug的。各種請求在下文 交互參數 中詳細說明。

app

Regular 參數

  這些參數是用在啓動epmd的時候用到的。通常來講epmd是在使用erl命令時自動啓動的(若是以前沒啓動過),可是也能夠在開機的時候啓動。

-address List
  讓epmd僅監聽逗號分隔的IP地址列表和迴環地址(迴環地址是默認添加到列表後面的,若是沒有特別申明的話)。也能夠經過設置環境變量ERL_EPMD_ADDRESS來控制,詳見下文 環境變量 部分。

-port No
  讓epmd監聽指定的TCP端口,而不是默認的4369端口。也能夠經過設置環境變量ERL_EPMD_PORT來控制,詳見下文 環境變量 部分。

-d | -debug
  啓用debug輸出。-d參數指定得越多,就會有越多的debug輸出(不能超出特定上限)。這個參數在epmd不做爲daemon進程啓動的時候很是有用。

-daemon
  之後臺運行方式啓動epmd。若是支持syslog日誌且正確配置的話,日誌會寫入syslog中。若是epmd守護進程在開機的時候啓動,這個參數必定會用到。使用erl命令自動啓動epmd時也會用到。

-relaxed_command_check
  啓用relaxed command checking(一般是爲了向後兼容)。會有以下影響:
    若是啓用該參數,epmd進程能在本地被相似epmd -kill參數殺死,無論有沒有活躍的節點註冊。而正常來講,epmd -kill命令只能殺死節點數據庫爲空的進程。
    epmd -stop命令(以及能經過erl_interface/ei指定的其餘信號)正常來講是被無視的,由於它可能致使兩個同名節點同時存在。節點只須要關閉與epmd的鏈接就能註銷,因此stop命令僅僅debug的時候被用到。
啓用relaxed command checking能夠強制註銷活躍的節點。
Relaxed command checking參數也能經過在啓動前修改環境變量ERL_EPMD_RELAXED_COMMAND_CHECK控制。

分佈式

DbgExtra 參數

  這些參數僅用於debug或測試環境下的epmd客戶端。他們不能在正常環境中使用。
-packet_timeout Seconds
  設置epmd超時關閉鏈接的超時時間。默認60秒。

-delay_accept Seconds
  能夠在epmd收到鏈接請求和接受鏈接中間插入延時,來模擬繁忙的服務器。

-delay_write Seconds
  在回覆消息發送前插入延時,一樣也能夠模擬繁忙的服務器。

測試

交互參數

  這些參數讓epmd命令在交互模式下運行,發送查詢到運行中的epmd實例並顯示結果。交互的epmd都運行在本地節點上,參數-port能夠用來選擇不一樣的epmd實例,若是在多個端口上有epmd運行的話。

-port No
  與在指定TCP端口號(默認4369)監聽的epmd通信。能夠經過ERL_EPMD_PORT環境變量設置,詳見 環境變量 部分。

-names
  列出當前epmd上註冊的節點名字。

-kill
  殺掉當前epmd。
  只有在epmd -names顯示一個空數據庫或者-relaxed_command_check啓用的時候kill纔會生效。
  要注意,-relaxed_command_check是在啓動epmd進程的時候指定的,它能讓進程在有活躍節點鏈接的時候接收kill指令。在互動模式下使用epmd命令-relaxed_command_check參數是無效的。沒指定這個參數的話,在有活躍節點註冊的狀況下,只能經過信號或其餘操做系統層面的方式去殺死它。

-stop Name
  從epmd數據庫中強制註銷一個活躍節點。
  這個命令只能在-relaxed_command_check參數指定的狀況下才能生效。
  互動模式下沒法設置-relaxed_command_check。

atom

環境變量

ERL_EPMD_ADDRESS
  能被設置成逗號分隔的ip地址列表,若是設置了,epmd進程只會監聽指定的ip地址和迴環地址(沒指定的話迴環地址默認添加到列表後面)。默認的行爲是監聽全部ip地址。

ERL_EPMD_PORT
  能指定epmd使用的端口號。默認端口號在大多數狀況下都適用。不一樣的端口號可使一臺機器上有多個epmd實例。集羣上的全部節點必須使用相同的epmd端口號。

ERL_EPMD_RELAXED_COMMAND_CHECK
  若是在啓動以前設置了,epmd啓動時會指定-relaxed_command_check參數。所以,若是這個參數在啓動Erlang虛擬機以前設置,自動啓動的epmd能沒限制地接收-kill和-stop命令。

spa

日誌

  在一些操做系統中,若是epmd做爲守護進程運行,錯誤日誌會用syslog記錄。要編輯/etc/syslog.conf文件並增長一條記錄:
操作系統

  !epmd
  *.*<TABs>/var/log/epmd.log

  <TABs>處需有至少一個製表符。空白格默認無視。

訪問限制

  epmd進程能夠接收本地消息,也能夠接收來自遠程主機的消息。不過若是消息來自遠程主機,只有查詢命令會起做用並回復。若是收到遠程主機發送過來的節點名字註冊消息,會引起錯誤。這類消息會被認爲是不懷好意的,鏈接會立刻斷開。
 
  下面這些遠程查詢能夠被接收:
    端口查詢,查詢指定名字的節點監聽的是哪一個端口。
    名字列表,查詢在進程上註冊的全部節點名字。
 
  要更嚴格地限制訪問權限的話,須要用到防火牆軟件。
相關文章
相關標籤/搜索