Erlang epmd官方文档中文翻译

本文含epmd简介及官方文档之翻译,文档地址 http://erlang.org/doc/man/epmd.html
翻译时的版本 R19.1

中英文水平都不咋地,不通顺处海涵,就酱。

简介

Erlang分布式系统中节点是通过节点名字互相连接的,节点名字为[email protected]_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,格式为[email protected]。epmd进程的作用就是记录节点名字对应哪个地址并进行映射。

TCP/IP环境的epmd进程其实只记录节点名字的Name部分,Host(@后面的部分)在连接epmd进程的时候就隐含在了节点名字里面。因此,erlang网络需要一个稳定的不出错的TCP名字服务才能正常运行。

启动epmd:
  在使用erl命令启动分布式节点的时候,如果没有epmd在运行,则会自动启动一个epmd。自动启动的话,需要用到一些环境变量来修改epmd进程的运行参数。详见下文中的 环境变量 一段。

如果没有指定-daemon参数,epmd会像一个普通程序一样运行在控制终端。一般来说,它应该作为daemon进程启动。

常规的启动参数在下文 常规参数 中详细说明。

DbgExtra参数在下文 DbgExtra 参数中详细说明。

与正在运行的epmd交互:
  与运行中的epmd交互最初是用来debug的。各类请求在下文 交互参数 中详细说明。

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。

环境变量

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命令。

日志

在一些操作系统中,如果epmd作为守护进程运行,错误日志会用syslog记录。要编辑/etc/syslog.conf文件并增加一条记录:

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

<TABs>处需有至少一个制表符。空白格默认无视。

访问限制

epmd进程可以接收本地消息,也可以接收来自远程主机的消息。不过如果消息来自远程主机,只有查询命令会起作用并回复。如果收到远程主机发送过来的节点名字注册消息,会引发错误。这类消息会被认为是不怀好意的,连接会马上断开。

下面这些远程查询可以被接收:

端口查询,查询指定名字的节点监听的是哪个端口。

名字列表,查询在进程上注册的所有节点名字。

要更严格地限制访问权限的话,需要用到防火墙软件。

时间: 2024-10-01 05:02:12

Erlang epmd官方文档中文翻译的相关文章

Matlab最新的官方文档中文翻译

文章翻译的是Matlab最新的官方文档R2016b,可能后续如果我还有时间会继续翻译,希望能够帮到大家,翻译的不好请大家不要吐槽. Matlab官方文档地址:http://cn.mathworks.com/help/pdf_doc/matlab/getstart.pdf Desktop Basics  当您启动MATLAB时,桌面以其默认布局显示如下: 说明:请大家对照着英文原版看,我没有截图,因为实在太麻烦 桌面包括以下面板: ?当前文件夹 - 访问您的文件. ?命令窗口 - 在命令行中输入命

Cloudera Impala官方文档中文翻译-2(Using Impala to Query HBase Tables)

Using Impala to QueryHBase Tables(利用impala查询HBase Tables) 默认情况下,impalatable使用存储在HDFS中的数据文件,这种存储方式适用于批量数据加载和查询(bulk loads and query).相反,HBase可以对用于OLTP风格的负载的数据进行高效率查询,比如查找单个row或者一个range的values. 对于impala用户来说,HBase是key-value存储形式的数据库,value包含多个fields.Key在i

SparkSql官方文档中文翻译(java版本)

1 概述(Overview) 2 DataFrames 2.1 入口:SQLContext(Starting Point: SQLContext) 2.2 创建DataFrames(Creating DataFrames) 2.3 DataFrame操作(DataFrame Operations) 2.4 运行SQL查询程序(Running SQL Queries Programmatically) 2.5 DataFrames与RDDs的相互转换(Interoperating with RDD

[Documentation]UIImageView官方文档中文翻译

An image view object provides a view-based container for displaying either a single image or for animating a series of images. For animating the images, the UIImageView class provides controls to set the duration and frequency of the animation. You c

Bootstrap-datepicker3官方文档中文翻译---Markup/标记(原版翻译 http://bootstrap-datepicker.readthedocs.io/en/latest/index.html)

Markup/标记 下面是已经支持的标签的例子.这些标签本身不会提供DatePicker控件:你需要在标签上实例化Datepicker. input/输入框 最简单的例子: input获得焦点 (使用鼠标点击或者tab按钮跳入) 都会出现该控件. <input type="text" class="form-control" value="02-16-2012"> component/组件 在一个类名为.input-group的boo

Django 2.0官方文档中文 渣翻 总索引(个人学习,欢迎指正)

Django 2.0官方文档中文 渣翻 总索引(个人学习,欢迎指正) 置顶 2017年12月08日 11:19:11 阅读数:20277 官方原文: https://docs.djangoproject.com/en/2.0/ 当前翻译版本: v2.0 Python版本要求: v3.4+ (译者注:本人目前在南京一家互联网公司工作,职位是测试开发工程师.因为测试工作中经常会用到编码语言,如Python.Java.Shell等,所以几年前萌生了对Python语法的学习.Django作为Python

别开心太早,Python 官方文档的翻译差远了

近几天,很多公众号发布了 Python 官方文档的消息.然而,一个特别奇怪的现象就发生了,让人啼笑皆非. Python 文档的中文翻译工作一直是“默默无闻”,几个月前,我还吐槽过这件事<再聊聊Python中文社区的翻译>,当时我们的进度是 10.3%,远远落后于日本和法国,甚至落后于巴西! 这次所谓的中文版,当然是未完成翻译的残品.刚查了下,整体进度是 19.7%. 翻译进度不足20% 有的公众号在发布消息的时候,说明了这不是官宣.不是正式发布版,还指出了中文版的访问地址是隐藏入口.这都是忠于

uFrame 1.6 官方文档随意翻译(一)

前言: 建议直接看官方英文文档,下面都是一些简单的翻译. The Kernel The Kernel是uFrame的本质,负责处理加载场景,系统和服务. Subsystems 作为一个容器,组成许多Nodes. Subsystems允许你分离项目中的逻辑部分和可复用部分. System Loaders System Loaders常用语初始化信息. Node Elements 主要负责ViewModel(Unity中uFrame框架附带了Controller)部分 For example, Pl

Jinja2学习笔记暨官方文档的翻译

http://blog.csdn.net/lgg201/article/details/4647471 呵呵, 刚刚看完Python模板引擎Jinja2的文档, 感觉很好, 觉得动态语言真是很好.  模板引擎竟然可以做的如此灵活....真是不错.... 下面直接把看文档过程的笔记发布出来, 呵呵, 基本上就是翻译, 加了不多的一点自己的解释......希望可以帮到大家 补充: 1. 在模板中设置自定义变量: {% set variable_name = value %} 比如设置{% set u