Erlang epmd官方文档中文翻译
本文含epmd简介及官方文档之翻译,文档地址 http://erlang.org/doc/man/epmd.html
翻译时的版本 R19.1
中英文水平都不咋地,不通顺处海涵,就酱。
简介
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的。各类请求在下文 交互参数 中详细说明。
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>处需有至少一个制表符。空白格默认无视。
访问限制
Erlang epmd官方文档中文翻译的更多相关文章
- Spark官方文档 - 中文翻译
Spark官方文档 - 中文翻译 Spark版本:1.6.0 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 引入Spark(Linki ...
- Spark SQL 官方文档-中文翻译
Spark SQL 官方文档-中文翻译 Spark版本:Spark 1.5.2 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 Data ...
- Dapr 官方文档中文翻译 v1.5 版本正式发布
作者:敖小剑 - Dapr Approver 经过 Dapr 中国社区十余位贡献者一个多月的努力,Dapr 官方文档中文翻译 v1.5 版本完成翻译和审校,正式发布并上线 Dapr 官网. 访问方式 ...
- Spring boot 1.3.5 RELEASE 官方文档中文翻译--目录
说明: 打算利用闲暇时候翻译一下Spring boot的官方文档,翻译的版本是1.3.5 RELEASE. 做这件事的目的呢有四: 国内中文的Spring boot资料实在不多,希望能给后来人一点小小 ...
- Kryo官方文档-中文翻译
Kryo作为一个优秀的Java序列化方案,在网上能找到不少测评,但未见系统的中文入门或说明文档.官方文档是最好的学习文档.虽然英文不差,但啃下来毕竟没母语来的舒服.这里抽出时间做些翻译,以方便大家查阅 ...
- Matlab最新的官方文档中文翻译
文章翻译的是Matlab最新的官方文档R2016b,可能后续如果我还有时间会继续翻译,希望能够帮到大家,翻译的不好请大家不要吐槽. Matlab官方文档地址:http://cn.mathworks.c ...
- Sencha Cmd 6 和 Ext JS 6 指南文档(部分官方文档中文翻译)
近期组织了几个程序员网友,正在翻译一部分官方的Sencha Cmd 6 和 Ext JS 6 指南文档. 眼下还没翻译完,大家能够先看看 Sencha Cmd 6 和 Ext JS 6 指南文档 ( ...
- OAuth2.0官方文档中文翻译
http://page.renren.com/699032478/note/708597990 (一)背景知识 OAuth 2.0很可能是下一代的“用户验证和授权”标准,目前在国内还没有很靠谱的技术资 ...
- spark api之一:Spark官方文档 - 中文翻译
转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 引入Spark(Linking with Spark) 3 初始化Spark(Initi ...
随机推荐
- android 分享一个处理BaseAdapter,getView()多次加载的方法
一:BaseAdapter介绍 BaseAdapter是listview,gridview等列表,使用的数据适配器,它的主要用途是将一组数据传到ListView.Spinner.Gallery及Gri ...
- Java之路上,让我们Stand Up Again
在开始之前,先发表一下个人想法吧. 在读书的时候每天忙的不可开交,也就没有了所谓的自由,突然参加工作,传统的朝八晚五,标准的八小时工作制,每天都是两点一线,工作中涉及商业机密,公司的东西也不能带回家, ...
- springboot整合mq接收消息队列
继上篇springboot整合mq发送消息队列 本篇主要在上篇基础上进行activiemq消息队列的接收springboot整合mq发送消息队列 第一步:新建marven项目,配置pom文件 < ...
- 对Java中堆栈的解析
Java把内存分为两种:一种是栈内存,一种是堆内存 栈内存:在函数中定义的一些基本类型的变量和对象的引用变量,当超过变量的作用域之后,Java自动释放该变量内存 堆内存:存放new创建的对象和数组,由 ...
- HTML基础教程-段落
HTML 段落 段落是通过 <p> 标签定义的. <p>This is a paragraph</p> <p>This is another parag ...
- Thinkphp开启调试模式
3.0版本的调试模式开启,必须在项目入口文件中添加常量APP_DEBUG定义,如下: define('APP_DEBUG',True); // 开启调试模式 开启调试模式后,你可能感觉不到什么变化,不 ...
- Java之路第一步——第一行Java代码
main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法. 名字必须是main: 必须是public static void 类型的: 必须接收一 ...
- inode 详解
1.inode 解析: 存储文件元信息(文件创建者,创建日期,大小等)的区域叫做inode即 索引节点. 2.inode 内容: 文件字节数.拥有者UserID,GroupID,读写执行权限,时间戳, ...
- Python安装和开发环境搭建
1.官网:http://www.python.org/download/下载安装包,目前最新版本为3.6,安装包很多地方可以下,也可以在360软件管家上下载安装 特别要注意勾选:Add Python ...
- jingtai ip
BOOTPROTO=staticONBOOT=yesIPADDR=192.168.1.109NETMASK=255.255.255.0GATEWAY=192.168.1.1 HWADDR=00:e0: ...