首页 > 其他分享 >[项目实战]EOS多节点部署

[项目实战]EOS多节点部署

时间:2024-09-12 17:55:15浏览次数:3  
标签:实战 -- 192.168 EOS json 区块 节点

文章总览:YuanDaiMa2048博客文章总览


EOS多节点部署

(一)环境设计

在搭建EOS区块链网络时,设置了包括一个主节点(eosiomain)和三个生产节点(producer1、producer2、producer3)。主节点的IP地址为192.168.239.155,而生产节点的IP地址分别为192.168.239.156、192.168.239.157和192.168.239.158。我们使用的虚拟机版本是Ubuntu20.04,每个虚拟机上的EOS开发环境版本为2.1,CDT版本是1.7。

  1. 主节点eosiomain:192.168.239.155
  2. 生产节点 producer1:192.168.239.156
  3. 生产节点 producer2:192.168.239.157
  4. 生产节点 producer3:192.168.239.158
  5. 虚拟机版本:Ubuntu20.04

(二)节点配置

在搭建EOS网络的过程中,首先需要在每个虚拟机上配置EOS环境。这包括创建钱包、生成密钥对、导入私钥以及启动keosd和nodeos服务。通过这些步骤,确保每个节点都具备了必要的工具和环境,以便顺利地参与到EOS网络中。

随后,在已经配置了EOS环境的四台机子上,开始设置节点。首先,设置了主节点eosiomain,确保其配置文件(config.ini)中正确设置了节点名称和网络参数,并添加了其他生产节点和主节点的对等地址,以建立网络连接。

eosiomain主节点配置文件

# 主节点eosiomain配置文件 config.ini
# Network configurations
p2p-listen-endpoint = 0.0.0.0:9876
http-server-address = 0.0.0.0:8888
# 添加其他生产节点和主节点的对等地址
# 主节点 producer1 的地址
p2p-peer-address = 192.168.239.156:9876  
# 生产节点 producer2 的地址
p2p-peer-address = 192.168.239.157:9876 
# 生产节点 producer3 的地址
p2p-peer-address = 192.168.239.158:9876 

接着,分别设置了三个生产节点producer1、producer2和producer3。在每个生产节点的配置文件中,我们设置了节点名称、签名密钥等信息,并添加了其他节点的对等地址,以确保节点之间能够互相通信和同步。这里以producer1的配置文件为例展示,其他两个节点类似,需要修改生产者名称以及密钥还有连接的节点IP地址。

其他节点配置文件

# 生产节点 producer1 配置文件 config.ini
# 设置生产者名称为 producer1
producer-name = producer1
# 指定签名提供者为 producer1 的签名密钥
signature-provider = [换成自己给producer1创建的公私钥对中的私钥]
# 允许生成过期区块,确保不会跳过 producer1 的轮次
enable-stale-production = true
# 设置生产区块的线程数量
producer-threads = 1
# Network configurations
p2p-listen-endpoint = 0.0.0.0:9876
http-server-address = 0.0.0.0:8888
# 添加其他生产节点和主节点的对等地址
# 主节点 eosiomain 的地址
p2p-peer-address = 192.168.239.155:9876  
# 生产节点 producer2 的地址
p2p-peer-address = 192.168.239.157:9876 
# 生产节点 producer3 的地址
p2p-peer-address = 192.168.239.158:9876 

(三)区块信息同步

在进行了上面两个步骤之后,开启了Nodes和Keosd服务,然后查看区块信息,虽然四个节点确实可以连接,但是发现生产的区块信息独立的,并不是同步的。为了解决这个问题,进行了相关信息查阅,发现需要将创世区块信息同步到各个节点。于是通过以下几步来同步区块信息:

  1. 生成 genesis.json 文件
    在主节点(192.168.239.155)上生成 genesis.json 文件:
    genesis.json 文件实例
nodeos --extract-genesis-json /home/eosio/genesis.json
# 内容
{
"initial_timestamp": "2018-06-01T12:00:00.000",
"initial_key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",
"initial_configuration": {
	"max_block_net_usage": 1048576,
	"target_block_net_usage_pct": 1000,
	"max_transaction_net_usage": 524288,
	"base_per_transaction_net_usage": 12,
	"net_usage_leeway": 500,
	"context_free_discount_net_usage_num": 20,
	"context_free_discount_net_usage_den": 100,
	"max_block_cpu_usage": 200000,
	"target_block_cpu_usage_pct": 1000,
	"max_transaction_cpu_usage": 150000,
	"min_transaction_cpu_usage": 100,
	"max_transaction_lifetime": 3600,
	"deferred_trx_expiration_window": 600,
	"max_transaction_delay": 3888000,
	"max_inline_action_size": 524288,
	"max_inline_action_depth": 4,
	"max_authority_depth": 6
	}
}
  1. 分发 genesis.json 文件
    将生成的 genesis.json 文件从主节点分发到其他节点,将在主节点生成的gensis.json文件复制到其余三台虚拟机上,路径为/home/eosio/genesis.json(可自定义设置不同位置)。在后续启动Nodeos时候利用参数设置确保每个节点启动时都使用相同的 genesis.json 文件路径。

(四)启动节点并验证同步

在进行了上述三个步骤之后,重新启动四个节点的EOS服务,其中启动Nodeos命令如下所示,其中需要指明genesis.json文件的位置从而同步创世区块信息。
启动Nodeos命令

nodeos -e -p eosio \
--plugin eosio::producer_plugin \
--plugin eosio::producer_api_plugin \
--plugin eosio::chain_api_plugin \
--plugin eosio::http_plugin \
--plugin eosio::history_plugin \
--plugin eosio::history_api_plugin \
--filter-on="*" \
--access-control-allow-origin='*' \
--http-server-address=0.0.0.0:8888 \
--contracts-console \
--http-validate-host=false \
--verbose-http-errors \
--genesis-json /home/zqy/eosio/genesis.json >> nodeos.log 2>&1 &

之后,可以看到四台虚拟机成功连接并实现区块信息同步。

区块信息同步(节点连接)
在这里插入图片描述
区块信息同步(接收区块)
在这里插入图片描述

EOS单节点的环境如何配置

标签:实战,--,192.168,EOS,json,区块,节点
From: https://blog.csdn.net/2301_79288416/article/details/141936251

相关文章

  • OutBrain原生广告新赛道助力欧美流量变现优势与实战策略
    揭秘欧美流量变现新蓝海:OutBrain原生广告的优势与实战策略在数字化时代,流量即金钱的观念深入人心,尤其是对于欧美市场而言,高效、精准的流量变现策略成为了众多网站主、博主及内容创作者关注的焦点。OutBrain,作为全球领先的个性化内容推荐和原生广告平台,凭借其独特的优势,在欧美......
  • kafka原理剖析及实战演练
    一、消息系统概述 一)消息系统按消息发送模型分类1、peer-to-peer(单播)特点:一般基于pull或polling接收消息发送对队列中的消息被一个而且仅仅一个接收者所接收,即使有多个接收者在同一队列中侦听同一消息即支持异步“即发即弃”的消息传送方式,也支持同步......
  • 我的新书《C#上位机开发实战指南》出版了
    -Begin-大家好!我是付工。2022年的时候,我萌生了编写一本上位机书籍的想法,希望能给更多的上位机学习者提供一些帮助,经历了2年多的时间,今年的8月份,这本书终于出版了。 初衷十年前,我也是一名电气工程师,学习上位机的过程,完全靠自己摸索,这个过程持续了一年多,因此我深知电气工程师......
  • GIS开发从0到1|MapboxGL可视化项目实战教程(含步骤说明和代码展示)1
    通用可视化聚类代码展示<!DOCTYPEhtml><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title>聚类显示</title>&l......
  • AI实战 | 领克汽车线上营销助手:全面功能展示与效果分析
    助手介绍我就不自我介绍了,在我的智能体探索之旅中,很多人已经通过coze看过我的教程。今天,我专注于分享我所开发的一款助手——《领克汽车线上营销》。他不仅仅是一个销售顾问的替身,更是一位能在线上自动为对领克感兴趣的潜在粉丝介绍领克车系的助手。他还能提供全方位的车辆对比......
  • 【项目实战】NIO 与 直接内存 (Direct Memory),由JVM直接管理,而不是通过垃圾回收器来管
    一、技术概览1.1定义直接内存,DirectMemory。直接内存,是指位于Java堆外的一块内存区域。直接内存,由JVM直接管理,而不是通过垃圾回收器来管理。直接内存,可以通过Java的ByteBuffer.allocateDirect()方法创建。直接内存,可以提高数据传输效率,特别是当数据需要频繁地在网络......
  • 【项目实战】Redis使用场景之基于Redis实现分布式队列
    一、什么是分布式队列分布式队列,指在分布式系统中用于协调不同服务或组件之间的消息传递和任务调度的队列。分布式队列,允许多个生产者将任务放入队列,而多个消费者可以从队列中取出任务进行处理。分布式队列,在微服务架构、任务调度、消息传递等场景中非常有用。二、为什......
  • Dockerfile 实战指南:轻松掌握容器化部署!
    Dockerfile非常重要,在实际工作中,使用Docker绝不是敲敲一些常用命令即可。Dockerfile几乎贯穿微服务的全部内容,务必掌握。不要求能从头开始编写Dockerfile,至少如果有个Dockerfile的模板,我们能够修改。‍概述Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建......
  • 做TikTok:你知道节点和专线有什么区别吗?
    现在很多朋友和商家都开始涉猎TikTok做电商直播,对于网络问题:选择节点还是专线?这两者到底有什么区别呢?今天我们来简单分析一下,帮助你找到最适合的网络方案。1.什么是节点?什么是专线?节点其实是网络中的“跳板+加速器”,通过分布在不同地区的节点服务器,帮助用户绕过地理限制,提升......
  • 鸿蒙HarmonyOS Next应用开发实战学习路线
    ✍️作者简介:小北编程(专注于HarmonyOS、Android、Java、Web、TCP/IP等技术方向)......