1.5 设置集群

优质
小牛编辑
138浏览
2023-12-01

本章节将介绍如何设置本地节点群集,如何使其成为私有的,以及如何使你在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“)来监视节点。

本页README 介绍如何为(私有或公共)本地集群设置自己的监控服务。