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进程能够接收本地消息,也能够接收来自远程主机的消息。不过若是消息来自远程主机,只有查询命令会起做用并回复。若是收到远程主机发送过来的节点名字注册消息,会引起错误。这类消息会被认为是不怀好意的,链接会立刻断开。
 
  下面这些远程查询能够被接收:
    端口查询,查询指定名字的节点监听的是哪一个端口。
    名字列表,查询在进程上注册的全部节点名字。
 
  要更严格地限制访问权限的话,须要用到防火墙软件。
相关文章
相关标签/搜索