Erlang如何限制节点对集群的访问之net_kernel:allow

问题描述

默认情况下Erlang的集群访问是全授权的,只要cookie认证过了后,新加入的节点可以访问集群里面的任何机器,这给运维带来很大风险。目前erlang有二种方法可以限制 1. IP网段限制,参看这里 2. 节点名称限制。这个是通过net_kernel:allow来实现的,参看: allow/1 Limits access to the specified set of nodes. Any access attempts made from (or to) nodes not in Nodes will be rejected. Returns error if any element in Nodes is not an atom.我们假设集群有节点x,y,z, foo:1. 有个节点叫foo, 它只允许来自x,y节点的请求,其他的节点访问被拒;2. z只能访问x,其他拒我们来试验下:1$ erl -name foo@127.0.0.12Erlang R14B04 (erts-5.8.5) 1 3 4Eshell V5.8.5 (abort with ^G)5(foo@127.0.0.1)1> net_kernel:allow().6ok7(foo@127.0.0.1)2>在其他终端运行:$ erl -name x@127.0.0.102 03Erlang R14B04 (erts-5.8.5) 1 04 05 06 07Eshell V5.8.5 (abort with ^G)08 09(x@127.0.0.1)1> net_adm:ping('foo@127.0.0.1').10 11pong12 13(x@127.0.0.1)2>14 15 16 17$ erl -name y@127.0.0.118 19Erlang R14B04 (erts-5.8.5) 1 20 21 22 23Eshell V5.8.5 (abort with ^G)24 25(y@127.0.0.1)1> net_adm:ping('foo@127.0.0.1').26 27pong28 29(y@127.0.0.1)2>30 31 32 33$ erl -name z@127.0.0.134 35Erlang R14B04 (erts-5.8.5) 1 36 37 38 39Eshell V5.8.5 (abort with ^G)40 41(z@127.0.0.1)1> net_adm:ping('foo@127.0.0.1').42 43pang44 45(z@127.0.0.1)2> net_adm:ping('y@127.0.0.1').46 47pong48 49(z@127.0.0.1)3> net_kernel:disconnect('y@127.0.0.1').50 51true52 53(z@127.0.0.1)4> net_kernel:allow().54 55ok56 57(z@127.0.0.1)5> net_adm:ping('y@127.0.0.1'). 58 59 60 61=ERROR REPORT==== 24-Oct-2011::01:23:34 ===62 63** Connection attempt with disallowed node 'y@127.0.0.1' **64 65pang同时我们会在foo的终端上看到:=ERROR REPORT==== 24-Oct-2011::01:08:20 ===2 3** Connection attempt from disallowed node 'z@127.0.0.1' **4 5(foo@127.0.0.1)2>看代码:...02 03%% dist_util.erl04 05%% 06 07%% check if connecting node is allowed to connect 08 09%% with allow-node-scheme 10 11%% 12 13is_allowed(#hs_data{other_node = Node,14 15 allowed = Allowed} = HSData) ->16 17 case lists:member(Node, Allowed) of18 19 false when Allowed =/= [] ->20 21 send_status(HSData, not_allowed),22 23 error_msg("** Connection attempt from "24 25 "disallowed node ~w ** ~n", ),26 27 ?shutdown(Node);28 29 _ -> true30 31 end.32 33...可以知道如果Allowed空的话,代表不做任何限制,否则net_kernel:allow限制主动和被动连接的节点。祝玩得开心!

时间: 2024-10-29 22:49:25

Erlang如何限制节点对集群的访问之net_kernel:allow的相关文章

编写一段简单的C语言程序对由1000个同构节点的集群进行模拟定义

问题描述 编写一段简单的C语言程序对由1000个同构节点的集群进行模拟定义 解决方案

服务器-关于NLB集群公网访问问题

问题描述 关于NLB集群公网访问问题 现应用服务器两台,做NLB集群,集群IP为一个内网地址.然后对该集群IP进行了公网映射.外部应用通过公网IP进行访问. 情况如下:两台服务器A,B.入过AB都开启,内外访问政策,外网访问时,出现不稳定现象. 只开A服务器,则内网外网均访问正常: 只开B服务器,则内网访问正常,外网访问无法连接. 问题:出现上述原因主要是哪块造成的?初次接触集群环境的建设,不了解怎么下手解决,求赐教.

管理节点 mysql集群-mysq集群维护问题,搭建集群需要注意的情况

问题描述 mysq集群维护问题,搭建集群需要注意的情况 管理节点作用,数据节点能不能直接插入数据:在其中一个节点当机的时候,如何使集群不受影响 解决方案 http://server.it168.com/a2009/1019/767/000000767215.shtml无非就是配置一个容错的群集 解决方案二: http://blog.csdn.net/wzy0623/article/details/6554274

如何在IBM AIX上构建一个双节点的IBM GPFS集群

概述 本文的目的是为在 AIX 上安装和配置一个简单的双节点 GPFS 集群提供一个分步指南.下图提供了集群配置的可视化表示形式. 图 1. 集群配置的可视化表示形式 GPFS GPFS 提供了一个真正的 "共享文件系统" 功能,具有卓越的性能和可伸缩性.GPFS 允许一组计算机通过一个公共的存储区域网络(SAN)基础架构.一个网络或混合连接类型来同时访问一组公共的文件数据.GPFS 提供了存储管理.信息生命周期管理工具和集中式管理,还允许从提供了一个全局命名空间的远程 GPFS 集群

给你5000个节点的计算机集群,你最想做什么?

问题描述 亲爱的大神们:你是否体验过利用5000台服务器(物理机,不是虚拟服务器)进行大规模分布计算的超爽感觉?除非你有特殊的环境或强大的经济实力,否则对于一个开发者来说,此种机遇往往是可遇不可求的.现在,这个机会即将到来啦!阿里云为中国的开发者们提供了由5000台物理服务器组成的强大计算环境.如果你想体验此环境上做应用开发,那就赶快去参加的活动.你可以提交创意与想法,将你希望利用此环境达到的开发目的和解决方案表述清晰.符合以上条件者,我们将赠送10个CSDN下载积分,你还有机会参加后续的体验之

走近伏羲,谈5000节点集群调度与性能优化

5K项目是飞天平台的里程碑,系统在规模.性能和容错方面都得到了飞跃式的发展,达到世界领先水平.伏羲作为飞天平台的分布式调度系统,能支持单集群5000节点,并发运行10000作业,30分钟完成100TB数据Terasort,性能是当时Yahoo ! 在Sort Benchmark上世界纪录的两倍. 伏羲介绍 "飞天"是阿里巴巴的云计算平台,其中的分布式调度系统被命名为"伏羲"(代码名称Fuxi),名字来自我国古代神话人物.伏羲主要负责管理集群的机器资源和调度并发的计算

走近伏羲,谈5000节点集群调度与 性能优化

5K项目是飞天平台的里程碑,系统在规模.性能和容错方面都得到了飞跃式的发展,达到世界领先水平.伏羲作为飞天平台的分布式调度系统,能支持单集群5000节点,并发运行10000作业,30分钟完成100TB数据Terasort,性能是当时Yahoo!在SortBenchmark上世界纪录的两倍. 伏羲介绍 "飞天"是阿里巴巴的云计算平台,其中的分布式调度系统被命名为"伏羲"(代码名称Fuxi),名字来自我国古代神话人物.伏羲主要负责管理集群的机器资源和调度并发的计算任务,

高性能linux web集群搭建详细步骤 可达每秒百万请求

本文教程比较详细,可以说是手把手,所以如果你有这个需求而无从下手,请放点耐心阅读 如何生成每秒百万级别的 HTTP 请求? 负载生成工具(Load-Generating Tools) 在进行负责测试时要牢记一件重要的事:你能在 Linux 上建立多少个 socket 连接.这个限制是硬编码在内核里的,最典型的就是临时 W 端口的限制.(在某种程度上)你可以在 /etc/sysctl.conf 里扩展它.但是基本上,一台 Linux 机器只能同时打开大约 64,000 个 socket .因此在负

RabbitMQ学习系列(六): RabbitMQ 高可用集群

前面讲过一些RabbitMQ的安装和用法,也说了说RabbitMQ在一般的业务场景下如何使用.不知道的可以看我前面的博客,http://www.cnblogs.com/zhangweizhong/category/855479.html 本来一直想写一个介绍RabbitMQ高可用的集群的文章.不过,后来发现园子里,有个已经RabbitMQ大牛写了,关于高可用集群的文章了.特别巧合的是,还是以前公司的同事.所以,这里就不啰嗦.直接引用过来吧.原文地址:http://www.cnblogs.com/