1.5 设置集群
本章节将介绍如何设置本地节点群集,如何使其成为私有的,以及如何使你在eth-netstat网络上的节点协同工作来监控应用程序。作为网络集成测试(与网络/blockchain同步/消息传播等相关的问题,DAPP开发人员测试多块和多用户场景)的后端,完全可供你的ethereum网络是非常有用的。
我们假设您可以通过安装指南构建geth
设置多个节点
为了在本地运行多个ethereum节点,您必须确保:
- 每个实例都有一个单独的数据目录(
--datadir
) - 每个实例运行在不同的端口(eth和rpc)(
--port
和--rpcport
) - 在集群的情况下,实例必须清楚对方的存在
- ipc端点是唯一的,或ipc接口被禁用(
--ipcpath
或者--ipcdisable
)
启动第一个节点(端口暴露出来和禁用ipc接口)
geth --datadir="/tmp/eth/60/01" -verbosity 6 --ipcdisable --port 30301 --rpcport 8101 console 2>> /tmp/eth/60/01.log
我们使用console启动节点,以便我们可以获取enode url,例如:
> admin.nodeInfo.NodeUrl
enode://8c544b4a07da02a9ee024def6f3ba24b2747272b64e16ec5dd6b17b55992f8980b77938155169d9d33807e501729ecb42f5c0a61018898c32799ced152e9f0d7@9[::]:30301
[::]
将被解析为localhost(127.0.0.1
)。如果您的节点在本地网络上,请检查每台主机,并使用ifconfig
(在Linux和MacOS上)找到您的ip :
$ ifconfig|grep netmask|awk '{print $2}'
127.0.0.1
192.168.1.97
如果你的peers不在本地网络上,则需要知道你的外部IP地址(使用服务)来构造enode url。
现在可以启动第二个节点:
geth --datadir="/tmp/eth/60/02" --verbosity 6 --ipcdisable --port 30302 --rpcport 8102 console 2>> /tmp/eth/60/02.log
如果要将此实例连接到先前启动的节点,则可以从console使用admin.addPeer(enodeUrlOfFirstInstance)
将其添加为peer。
您可以在geth控制台来测试连接:
> net.listening
true
> net.peerCount
1
> admin.peers
...
Local cluster
本地集群
作为上述的扩展,您可以轻松地生成本地的节点群集。它也可以被构建成脚本,包括挖掘所需的帐户创建。请参阅gethcluster.sh脚本以及README中的用法和示例。
私有网络
如果其节点没有连接到主网络节点,那么ethereum网络就是私有网络。在这种情况下,私有只意味着保守或隔离,而不是保护或安全。由于节点之间的连接仅在peers具有相同协议版本和网络ID的情况下才有效,因此可以通过将其中的任何一个设置为非默认值来有效地隔离网络。我们建议为此使用networkid
命令行选项。它的参数是整数,主网络的id为1(默认值)。因此,如果您提供与主网络不同的自定义网络ID,您的节点将不会连接到其他节点并形成私有网络。
监控节点
本页介绍如何使用Ethereum(集中式)网络状态监视器(有时称为”eth-netstats“)来监视节点。