FISCO-BCOS环境搭建(三)创建普通节点
2018-04-03 09:09
447 查看
普通节点是区块链中除创世节点外的其它节点。同一条链中的所有节点共用相同的genesis.json和相同的根证书ca.crt。创建普通节点的步骤与创建创世节点的步骤类似。普通节点不需要再修改genesis.json和ca.crt,直接复制创世节点的genesis.json和ca.crt到节点的相应路径下即可。
节点配置文件:config.json
日志配置文件:log.conf
网络连接相关:listenip、rpcport、p2pport、channelPort
目录相关:wallet、keystoredir、datadir、logconf
节点身份相关:NodeextraInfo中的Nodeid、Nodedesc、Agencyinfo、Peerip、Identitytype、Port、Idx(与网络连接相关对应上)
config.json其它字段说明请参看附录:11.4 config.json说明配置好的config.json如下:
配置文件(/mydata/nodedata-2/):genesis.json、config.json、log.conf
启动普通节点,此时普通节点未被注册到区块链中,启动时只能看到进程,不能刷出打包信息。要让此节点正确的运行,请进入环境搭建(四)多节点组网 。
5.1 创建节点环境
假定节点目录为/mydata/nodedata-2/,创建节点环境如下:#创建目录结构 mkdir -p /mydata/nodedata-2/ mkdir -p /mydata/nodedata-2/data/ #存放节点的各种文件 mkdir -p /mydata/nodedata-2/log/ #存放日志 mkdir -p /mydata/nodedata-2/keystore/ #存放账户秘钥 #拷贝创世节点相关文件 cd /mydata/nodedata-1/ cp genesis.json config.json log.conf start.sh stop.sh /mydata/nodedata-2/
5.2 配置节点身份NodeId
同样需要为普通节点分配NodeId。NodeId唯一标识了区块链中的某个节点,在节点启动前必须进行配置。5.2.1 配置cryptomod.json文件
在cryptomod.json文件中配置NodeId生成路径:cd /mydata/FISCO-BCOS/ vim cryptomod.json此处将rlpcreatepath配置为/mydata/nodedata-2/data/network.rlp。配置后的cryptomod.json如下:
{ "cryptomod":"0", "rlpcreatepath":"/mydata/nodedata-2/data/network.rlp", "datakeycreatepath":"", "keycenterurl":"", "superkey":"" }cryptomod.json其它字段说明请参看附录:11.2 cryptomod.json说明
5.2.2 生成节点身份文件
用上述修改好的cryptomod.json文件生成节点身份文件,生成路径为cryptomod.json中配置的路径。fisco-bcos --gennetworkrlp cryptomod.json #需要一段时间 ls /mydata/nodedata-2/data/可看到节点身份文件(network.rlp和network.rlp.pub)生成到了/mydata/nodedata-2/data/下。其中network.rlp是节点身份的私钥二进制文件。network.rlp.pub是节点身份的NodeId文件。
network.rlp network.rlp.pub
5.2.3 配置节点NodeId
(1)查看NodeIdcd /mydata/nodedata-2/data/ cat network.rlp.pub得到如下类似的NodeId
b5adf6440bb0fe7c337eccfda9259985ee42c1c94e0d357e813f905b6c0fa2049d45170b78367649dd0b8b5954ee919bf50c1398a373ca777e6329bd0c4b82e8(2)修改config.json在NodeextraInfo字段中追加新的节点信息。
vim /mydata/nodedata-2/config.json追加后,config.json中的NodeextraInfo字段如下。新追加的内容要与现有的内容有区别,Nodeid为刚生成的NodeId,Port是p2pport端口,Idx为上一条记录加1。注意,若新部署的节点在另外一台机器上,则需要将NodeextraInfo中其它节点的Peerip改成其它节点对应的机器IP,让新部署的节点能够找到其它机器上的节点。
"NodeextraInfo":[ { "Nodeid":"24b98c6532ff05c2e9e637b3362ee4328c228fb4f6262c1c751f51952012cd68da2cbd8655de5072e49b950a503326942297cfaa9ca919b369be4359b4dccd56", "Nodedesc": "node1", "Agencyinfo": "node1", "Peerip": "0.0.0.0", "Identitytype": 1, "Port":30303, "Idx":0 }, { "Nodeid":"b5adf6440bb0fe7c337eccfda9259985ee42c1c94e0d357e813f905b6c0fa2049d45170b78367649dd0b8b5954ee919bf50c1398a373ca777e6329bd0c4b82e8", "Nodedesc": "node2", "Agencyinfo": "node2", "Peerip": "0.0.0.0", "Identitytype": 1, "Port":30403, "Idx":1 } ]
5.3 配置证书
区块链节点间的通信需要证书的认证。在节点运行前,需要为节点配置证书。其中ca.crt是整个区块链的根证书公钥,所有节点共用。5.3.1 配置根证书
一条链上的所有区块链节点都共用一个根证书ca.crt。直接从创世节点目录拷贝。cp /mydata/nodedata-1/data/ca.crt /mydata/nodedata-2/data/
5.3.2 生成节点证书
生成普通节点证书(server.key、server.crt)的步骤与创世节点相同。在生成前,需要把生成脚本和根证书私钥(ca.key)配置到data目录下。cd /mydata/nodedata-2/data/ cp /mydata/nodedata-1/data/ca.key . #假设根证书私钥放在node1的data目录下 cp /mydata/nodedata-1/data/genkey.sh .用根证书公私钥生成节点证书公私钥(server.key、server.crt)
./genkey.sh server ./ca.key ./ca.crt 365 #生成server证书有效期为365天生成后,此时目录下应存在下述文件:
ca.crt network.rlp network.rlp.pub server.crt server.key注意,ca.key在生成了节点证书后,应立即删除。
5.4 配置相关配置文件
普通节点的启动依赖三个配置文件:创世块文件:genesis.json(与创世节点相同,直接复制,无需修改)节点配置文件:config.json
日志配置文件:log.conf
5.4.1 配置config.json(节点配置文件)
config.json中可配置节点的各种信息,包括网络地址,文件目录,节点身份等。vim /mydata/nodedata-2/config.json配置本节点的信息,主要修改字段,注意与NodeextraInfo中的内容对应:
网络连接相关:listenip、rpcport、p2pport、channelPort
目录相关:wallet、keystoredir、datadir、logconf
节点身份相关:NodeextraInfo中的Nodeid、Nodedesc、Agencyinfo、Peerip、Identitytype、Port、Idx(与网络连接相关对应上)
config.json其它字段说明请参看附录:11.4 config.json说明配置好的config.json如下:
{
"sealEngine": "PBFT",
"systemproxyaddress":"0x919868496524eedc26dbb81915fa1547a20f8998",
"listenip":"0.0.0.0",
"cryptomod":"0",
"ssl":"0",
"rpcport": "8546",
"p2pport": "30403",
"channelPort": "30404",
"wallet":"/mydata/nodedata-2/keys.info",
"keystoredir":"/mydata/nodedata-2/keystore/",
"datadir":"/mydata/nodedata-2/data/",
"vm":"interpreter",
"networkid":"12345",
"logverbosity":"4",
"coverlog":"OFF",
"eventlog":"ON",
"statlog":"OFF",
"logconf":"/mydata/nodedata-2/log.conf",
"params": {
"accountStartNonce": "0x0",
"maximumExtraDataSize": "0x0",
"tieBreakingGas": false,
"blockReward": "0x0",
"networkID" : "0x0"
},
"NodeextraInfo":[ { "Nodeid":"24b98c6532ff05c2e9e637b3362ee4328c228fb4f6262c1c751f51952012cd68da2cbd8655de5072e49b950a503326942297cfaa9ca919b369be4359b4dccd56", "Nodedesc": "node1", "Agencyinfo": "node1", "Peerip": "0.0.0.0", "Identitytype": 1, "Port":30303, "Idx":0 }, { "Nodeid":"b5adf6440bb0fe7c337eccfda9259985ee42c1c94e0d357e813f905b6c0fa2049d45170b78367649dd0b8b5954ee919bf50c1398a373ca777e6329bd0c4b82e8", "Nodedesc": "node2", "Agencyinfo": "node2", "Peerip": "0.0.0.0", "Identitytype": 1, "Port":30403, "Idx":1 } ]}
5.4.2 配置log.conf(日志配置文件)
log.conf中配置节点日志生成的格式和路径。vim /mydata/nodedata-2/log.conf主要配置日志文件的生成路径,配置好的log.conf 如下:
* GLOBAL: ENABLED = true TO_FILE = true TO_STANDARD_OUTPUT = false FORMAT = "%level|%datetime{%Y-%M-%d %H:%m:%s:%g}|%msg" FILENAME = "/mydata/nodedata-2/log/log_%datetime{%Y%M%d%H}.log" MILLISECONDS_WIDTH = 3 PERFORMANCE_TRACKING = false MAX_LOG_FILE_SIZE = 209715200 ## 200MB - Comment starts with two hashes (##) LOG_FLUSH_THRESHOLD = 100 ## Flush after every 100 logs * TRACE: ENABLED = true FILENAME = "/mydata/nodedata-2/log/trace_log_%datetime{%Y%M%d%H}.log" * DEBUG: ENABLED = true FILENAME = "/mydata/nodedata-2/log/debug_log_%datetime{%Y%M%d%H}.log" * FATAL: ENABLED = true FILENAME = "/mydata/nodedata-2/log/fatal_log_%datetime{%Y%M%d%H}.log" * ERROR: ENABLED = true FILENAME = "/mydata/nodedata-2/log/error_log_%datetime{%Y%M%d%H}.log" * WARNING: ENABLED = true FILENAME = "/mydata/nodedata-2/log/warn_log_%datetime{%Y%M%d%H}.log" * INFO: ENABLED = true FILENAME = "/mydata/nodedata-2/log/info_log_%datetime{%Y%M%d%H}.log" * VERBOSE: ENABLED = true FILENAME = "/mydata/nodedata-2/log/verbose_log_%datetime{%Y%M%d%H}.log"log.conf其它字段说明请参看附录:11.5 log.conf说明
5.5 启动节点
节点的启动依赖下列文件,在启动前,请确认文件已经正确的配置:证书文件(/mydata/nodedata-2/data):ca.crt、network.rlp、network.rlp.pub、server.crt、server.key配置文件(/mydata/nodedata-2/):genesis.json、config.json、log.conf
启动普通节点,此时普通节点未被注册到区块链中,启动时只能看到进程,不能刷出打包信息。要让此节点正确的运行,请进入环境搭建(四)多节点组网 。
cd /mydata/nodedata-2/ chmod +x *.sh ./start.sh #此时节点未被注册到区块链中,等待10秒,不会刷出打包信息 ctrl-c 退出 ps -ef |grep fisco-bcos #可查看到节点进程存在可看到进程已经在运行
app 9656 1 4 16:10 ? 00:00:01 fisco-bcos --genesis /mydata/nodedata-2/genesis.json --config /mydata/nodedata-2/config.json关闭节点,待注册后再重启
./stop.sh
相关文章推荐
- FISCO-BCOS环境搭建(一)创世节点配置与启动
- FISCO-BCOS环境搭建(四)多节点组网
- FISCO-BCOS环境搭建(五)机构证书准入
- FISCO-BCOS环境搭建(二)部署系统合约
- android 开发环境搭建的创建AVD
- [ExtJs6] 环境搭建及创建项目
- iBatis环境搭建示例:创建一个最简单的iBatis应用
- 创建个人开发者站(二):开发环境搭建
- vue开发环境搭建以及项目创建
- vue.js在windows本地下搭建环境和创建项目。
- Ionic:环境搭建和创建一个项目
- 转: 使用Jmeter创建ActiveMQ JMS POINT TO POINT请求,环境搭建、请求创建、插件安装、监听服务器资源等
- RabbitMQ概念及环境搭建(一)单节点安装与配置
- 02 Cocos2D-x引擎win7环境搭建及创建项目
- Maven环境搭建以及在myeclipse中创建Maven项目
- activiti工程环境搭建和流程图创建
- devstack搭建双节点openstack环境
- Linux多节点下MPI集群环境搭建
- 使用Jmeter创建ActiveMQ JMS POINT TO POINT请求,环境搭建、请求创建、插件安装、监听服务器资源等