Hyperledger Fabric 1.0 从零开始(八)——Fabric多节点集群生产部署
6.1、平台特定使用的二进制文件配置
该方案与Hyperledger Fabric 1.0 从零开始(五)——运行测试e2e类似,根据企业需要,可以控制各节点的域名,及联盟链的统一域名。可以指定单独节点的访问,生成指定的公私钥、证书等文件。具体的参数配置可以参考generateArtifacts.sh文件,可执行自动化生成,也可以按照该脚本里的命令手动生成。
参照3.1、运行fabric-samples的问题说明,首先我们在/opt/gopath/src/github.com/hyperledger/fabric下创建一个自定义目录,该目录名称应与实际生产环境中组织节点的名称一致,如:example。
我们计划将在orderer服务器中生成必要的证书等文件,因此在example下将继续创建一个orderer目录,我们将下载好的bin目录上传至/opt/gopath/src/github.com/hyperledger/fabric/example/orderer目录下,具体效果如下视图:
正如3.1小节所述,在bin目录中是Fabric平台特定使用的二进制文件cryptogen,configtxgen,configtxlator, 以及peer。
我们可以通过configtxgen和cryptogen手动生成证书/密钥以及各项配置文件。
(注:英文阅读能力好的同学可以直接参考官方文档)
在正式使用上述两个文件之前,我们需要在bin目录下先创建两个yaml文件,分别是crypto-config.yaml和configtx.yaml,这两个文件具体可以在/opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli这个目录下找到对应的官方示例,以官方示例为基础进行修改,改成我们生产上所需的具体内容。
6.2、生成组织证书与私钥
我们假定要组建一个名为example的联盟,且我们自己的组织名称为Demo,我们会创建一个Orderer排序服务节点,同时还会创建一个peer节点。
那么修改后的crypto-config.yaml如下:
1 OrdererOrgs: 2 - Name: Orderer 3 Domain: example.com 4 Specs: 5 - Hostname: orderer 6 PeerOrgs: 7 - Name: Demo 8 Domain: demo.example.com 9 Template: 10 Count: 1 11 Users: 12 Count: 1
这里我们使用crytogen工具给我们不同的网络实体(peer/client)生成加密证书(X509 certs)。这些证书代表了身份,当我们的网络实体在进行通信以及transact的时候进行签名与验证身份。
crypto-config.yaml配置文件将被crytogen工具调用,文件中包括了网络拓扑,同时允许我们给organization(Demo)以及component(隶属于organization的组件)生成一个证书与私钥的集合。每一个organization(Demo)被分配一个唯一的根证书(绑定了隶属于organization(Demo)的具体的component,包括peers与orderers)。Hyperledger Fabric的transaction与通信均被节点的私钥(keystore)进行签名,截止被公钥进行验证(signcerts)。 这个配置文件中有一个计数(count)的变量,我们使用其定义organization(Demo)中peer的数量,在本例中我们定义Demo组织有一个peer。
在crypto-config.yaml配置文件中,我们可以看到在ordererOrgs头下面的“Name”, “Domain” 以及 “Specs”这三个参数,命名规则约定如下:“{{.Hostname}}.{{.Domain}}”。使用官方提供的的crypto-config.yaml中的ordering node作为参考,我们能看到一个名称为 - orderer.example.com的ordering node,该node与Orderer的MSP ID关联。
接下来开始使用crytogen工具执行crypto-config.yaml配置文件,crytogen工具在bin目录下,我们需要先进入该目录,并执行crypto-config.yaml配置文件,具体命令如下:
cd /opt/gopath/src/github.com/hyperledger/fabric/example/orderer/bin ./bin/cryptogen generate --config=./crypto-config.yaml
根据上述命令,可以看出crypto-config.yaml被上传至bin目录下,执行结果如下视图:
此过程中可能会提示权限不足,如下视图:
这里使用chmod +x来赋权即可,不做详细说明。
完成之后会在bin目录下生成一个新的目录crypto-config,其中会有ordererOrganizations和peerOrganizations两个目录,具体结果视图如下:
6.3、定义configtx.yaml配置文件
接下来,我们需要使用configtxgen工具来执行configtx.yaml文件创建orderer Genesis block,在此之前需要为configtxgen工具指定configtx.yaml文件的路径,我们需要设置一个环境变量,执行如下命令:
export FABRIC_CFG_PATH=$PWD
随后可以打印查看该目录是否正确,具体执行命令如下:
echo $PWD
结果如下视图:
在bin目录下创建channel-artifacts目录,用来存放各种渠道的源文件。
编辑configtx.yaml文件,结果如下:
1 Profiles: 2 3 ExampleOrdererGenesis: 4 Orderer: 5 <<: *OrdererExample 6 Organizations: 7 - *OrdererDemo 8 Consortiums: 9 ExampleConsortium: 10 Organizations: 11 - *Demo12 ExampleChannel: 13 Consortium: ExampleConsortium 14 Application: 15 <<: *ApplicationExample 16 Organizations: 17 - *Demo18 Organizations: 19 20 - &OrdererDemo 21 Name: OrdererDemo 22 ID: OrdererMSP 23 MSPDir: crypto-config/ordererOrganizations/example.com/msp 24 25 - &Demo26 Name: DemoMSP 27 ID: DemoMSP 28 MSPDir: crypto-config/peerOrganizations/demo.example.com/msp 29 AnchorPeers: 30 - Host: peer0.demo.anti-moth.com 31 Port: 7051 32 33 Orderer: &OrdererExample 34 35 OrdererType: solo 36 37 Addresses: 38 - orderer.example.com:7050 39 40 BatchTimeout: 2s 41 BatchSize: 42 MaxMessageCount: 10 43 AbsoluteMaxBytes: 99 MB 44 PreferredMaxBytes: 512 KB 45 46 Kafka: 47 Brokers: 48 - 127.0.0.1:9092 49 Organizations: 50 51 Application: &ApplicationExample 52 53 Organizations:
在该文件中,我们定义了组织名称、组织排序服务名称、组织渠道名称、应用渠道名称、应用联盟名称等。
6.4、生成orderer源文件
根据6.3中配置文件的描述,我们将生成的orderer源为ExampleOrdererGenesis。
本步骤将生成genesis.block文件,具体执行命令如下:
./bin/configtxgen -profile ExampleOrdererGenesis -outputBlock ./channel-artifacts/example_genesis.block
该命令会在/opt/gopath/src/tk/bin/channel-artifacts目录下生成一个genesis.block文件,根据官方demo中的configtx.yaml文件描述,该文件名由于未知原因,不得命名为order.genesis.block。
完成命令后的视图如下:
具体官方指定方案截图如下,可参考官网实现:
6.5、生成channel源文件
根据6.3中配置文件的描述,我们将生成的channel源为ExampleChannel。
本步骤将生成channel.tx文件,具体执行命令如下:
./bin/configtxgen -profile ExampleChannel -outputCreateChannelTx ./channel-artifacts/example_channel.tx -channelID channel01
完成命令后的视图如下:
按照官方给定的方案,执行该方法前可以先指定channel的环境变量,如下视图:
上图官方描述的具体执行命令如下:
1 export CHANNEL_NAME=mychannel 2 3 # this file contains the definitions for our sample channel 4 ../bin/configtxgen -profile ExampleChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAME
该步骤最终执行结果视图如下:
6.6、生成channel下节点集合认证文件
根据6.3中配置文件的描述,我们将生成的channel源为ExampleChannel。
本步骤将生成channel.tx文件,具体执行命令如下:
./bin/configtxgen -profile ExampleChannel -outputAnchorPeersUpdate ./channel-artifacts/DEMOMSPanchors.tx -channelID channel01 -asOrg DemoMSP
完成命令后的视图如下:
具体官方指定方案截图如下,可参考官网实现:
最终我们可以在channel-artifacts目录下看到成功创建了TKMSPanchors.tx文件,如下视图:
【注:请无视这其中目录等名称的一些小细节,这一章主要是讲述如何通过官方给定的二进制文件来生成我们需要的生产证书等配置资源】
Hyperledger Fabric 1.0 从零开始(八)——Fabric多节点集群生产部署相关推荐
- 超级账本Fabric 1.0多节点集群的部署(2)
上期文章阐述了超级账本 Fabric 1.0多节点部署的方法概述,得到广大读者的关注,笔者们连夜赶工,今天发布连载之二,介绍具体搭建 Fabric 1.0 集群的步骤. 注:部署过程中大量使用了doc ...
- 生产环境elasticsearch5.0.1和6.3.2集群的部署配置详解
线上环境elasticsearch5.0.1集群的配置部署 es集群的规划: 硬件: 7台8核.64G内存.2T ssd硬盘加1台8核16G的阿里云服务器 其中一台作为kibana+kafka连接查询 ...
- Hyperledger Fabric 1.0 从零开始(十二)——fabric-sdk-java应用
Hyperledger Fabric 1.0 从零开始(十)--智能合约(参阅:Hyperledger Fabric Chaincode for Operators--实操智能合约) Hyperled ...
- Hyperledger Fabric 1.0 从零开始(十二)——fabric-sdk-java应用【补充】
在 Hyperledger Fabric 1.0 从零开始(十二)--fabric-sdk-java应用 中我已经把官方sdk具体改良办法,即使用办法发出来了,所有的类及文件都是完整的,在文章的结尾也 ...
- Hyperledger Fabric 1.0 从零开始(七)——启动Fabric多节点集群
5:启动Fabric多节点集群 5.1.启动orderer节点服务 上述操作完成后,此时各节点的compose配置文件及证书验证目录都已经准备完成,可以开始尝试启动多机Fabric集群. 首先启动or ...
- redis 4.0.8 源码包安装集群
系统:centos 6.9 软件版本:redis-4.0.8,rubygems-2.7.7,gcc version 4.4.7 20120313,openssl-1.1.0h,zlib-1.2.11 ...
- mysql mgr简介_mysql8.0初探:(二)MySQL Group Replication-MGR集群简介
mysql8.0初探:(二)MySQL Group Replication-MGR集群简介 发布时间:2020-06-12 23:59:17 来源:51CTO 阅读:49832 作者:arthur37 ...
- CentOS 7上搭建Spark3.0.1+ Hadoop3.2.1分布式集群
CentOS 7上搭建Spark3.0.1+ Hadoop3.2.1分布式集群 VMWare 安装CentOS 7 使用Xshell连接虚拟机 集群设置 安装JDK 1.8 SSH 免密登陆 安装ha ...
- Spark2.1.0 + CarbonData1.0.0集群模式部署及使用入门
1 引言 Apache CarbonData是一个面向大数据平台的基于索引的列式数据格式,由华为大数据团队贡献给Apache社区,目前最新版本是1.0.0版.介于目前主流大数据组件应用场景的局限性,C ...
最新文章
- 将null转换成数组_Javscript数组快速填充数据的8种方法
- python闭包怎么理解_Python:闭包的理解
- 给数据库减负的八个思路
- X大佬:建议被降级降薪员工主动辞职,网友炸了
- 自由在博客里插入广告,有钱你不赚吗???
- linux中一些特殊的权限(setuid/setgid/sticky)
- python是什么类型的编程语言-python是什么编程语言
- ZABBIX各版本之间的兼容性​
- 服务器被攻击ip显示美国,大神:服务器疑是被攻击,netstat命令看到连接有很多国外IP...
- SPSS modeler for mac安装教程
- matlab中阶跃函数算卷积,与冲激函数、阶跃函数的卷积.ppt
- 加密的PDF文件如何解密?教你使用手机就能解密的方法
- 丽江旅游线路规划丽江游玩小贴士丽江游玩攻略花费
- 2018 ICPC焦作站 F题 Honeycomb【bfs】
- 2013款Mac Pro“神秘”主机详解
- C语言输入年份显示日历,输入年份并输出当年的日历
- 基于GPS的公交车站点播报调试第四天
- idea双击打不开我的解决方法
- 郁闷的时候看下,心情也许会好一些(转自CSDN)
- Android 字体库
热门文章
- 蓄电池容量和环境温度的关系
- hibernate---一对一单项外键关联
- Firefox下div层被Flash遮住的解决方法
- 对typedef void (*sighandler_t)(int)的理解(声明了一种类型:sighandler_t)
- 英语单词 voltage simulation synthesize junction asynchronous mega optimize
- 安装汇编环境,写一个最简单的窗口程序
- 静态程序分析chapter2 - IR(Jimple) 和 CFG
- RabbitMQ之消息确认机制(事务+Confirm)
- IT运维管理人员轻松管理桌面终端
- 用ASP.NET AJAX 开发Web程序 — UpdatePanel篇