技术篇

搭建第一个网络(一)

2019-03-29  本文已影响383人  花爬满篱笆

搭建第一个网络(一)

接上周工作,在已经建好的fabric环境中搭建第一个网络。

一、首先从GitHub克隆fabric-samples

$ git clone https://github.com/hyperledger/fabric-samples.git

然后关闭网络,这是防止有开启的网络,影响本次测试的结果。

关闭服务:

$ ./byfn.sh -m down

此时还没有产生创世区块,执行以下命令,产生创世区块:

$ ./byfn.sh -m generate

出现错误:cryptogen tool not found. exiting

这是由于上周在搭建环境的时候没有下载一个二进制文件,也就是在fabric-samples文件夹下需要有一个bin文件夹。查了一下解决方案:

    ① 第一种解决办法,在fabric-samples目录下面执行以下命令,下载所需要的二进制文件:

curl -sSL http://bit.ly/2ysbOFE | bash -s -- 1.4.0

注意:要与自己镜像的版本相同,这里我用的是1.0.0版本,直接更改版本就可以。

    ② 按照第一种方法,执行命令时,可能会出现ubuntu访问不到该网站的情况,这时候可以尝试第二种方法下载bin文件。

在真机中打开https://goo.gl/eYdRbX网站,其实他是一个.sh文件。

把这个内容全部拷贝下来,在fabric-sampls目录下面新建一个文件,把拷贝的内容全部放进去,文件名:bootstrap-1.0.1.sh

然后执行:

$ chmod +x bootstrap-1.0.1.sh

这样该文件具有可执行能力了,然后执行:

$ ./bootstrap-1.0.1.sh

出现下载页面,等待它完成,会发现该目录下面有一个bin目录,里面有需要的二进制文件。

用上述两种方法都没有成功,第一种方法显示连接超时,第二种方法失败,开始自动下载镜像文件(就是这个自动下载镜像为后来的有又一个错误埋下了雷。。。。)

    ③ 前面两种方法我用都出现了错误,最后决定用官网直接手动下载,(就是非常非常慢)

https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/linux-amd64-1.0.0/

版本要选择和自己相同的版本,比如我的是linux-amd64-1.0.0

下载好之后直接将压缩包拖到虚拟机,在虚拟机中双击打开,将其中的bin文件拖进fabric-samples文件夹下。

二、安装完二进制文件之后,重新尝试

关闭服务:

$ ./byfn.sh -m down

生产创世区块

$ ./byfn.sh -m generate

出现新的错误:


* '' has invalid keys: capabilities, channel

* 'Application' has invalid keys: Capabilities, Policies

* 'Orderer' has invalid keys: Policies

* 'Organizations[0]' has invalid keys: Policies

* 'Organizations[1]' has invalid keys: Policies

* 'Organizations[2]' has invalid keys: Policies

* 'Profiles[SampleDevModeKafka]' has invalid keys: Capabilities, Policies

* 'Profiles[SampleDevModeKafka].Application' has invalid keys: Capabilities, Policies

* 'Profiles[SampleDevModeKafka].Application.Organizations[0]' has invalid keys: Policies

* 'Profiles[SampleDevModeKafka].Consortiums[SampleConsortium].Organizations[0]' has invalid keys: Policies

* 'Profiles[SampleDevModeKafka].Consortiums[SampleConsortium].Organizations[1]' has invalid keys: Policies

* 'Profiles[SampleDevModeKafka].Orderer' has invalid keys: Capabilities, Policies

* 'Profiles[SampleDevModeKafka].Orderer.Organizations[0]' has invalid keys: Policies

* 'Profiles[TwoOrgsChannel].Application' has invalid keys: Capabilities, Policies

* 'Profiles[TwoOrgsChannel].Application.Organizations[0]' has invalid keys: Policies

* 'Profiles[TwoOrgsChannel].Application.Organizations[1]' has invalid keys: Policies

* 'Profiles[TwoOrgsOrdererGenesis]' has invalid keys: Capabilities, Policies

* 'Profiles[TwoOrgsOrdererGenesis].Consortiums[SampleConsortium].Organizations[0]' has invalid keys: Policies

* 'Profiles[TwoOrgsOrdererGenesis].Consortiums[SampleConsortium].Organizations[1]' has invalid keys: Policies

* 'Profiles[TwoOrgsOrdererGenesis].Orderer' has invalid keys: Capabilities, Policies

* 'Profiles[TwoOrgsOrdererGenesis].Orderer.Organizations[0]' has invalid keys: Policies

+ res=1

+ set +x

Failed to generate orderer genesis block...


这是因为我们当时下载的fabric-samples 是1.4版本的,但是bin用的是1.0的,所以切换fabric-samples为1.0的即可。

lqr@lqr-VirtualBox:~$ cd fabric-samples

lqr@lqr-VirtualBox:~/fabric-samples$ git checkout release-1.0

分支release-1.0 设置为跟踪来自 origin 的远程分支 release-1.0。

切换到一个新分支'release-1.0'

lqr@lqr-VirtualBox:~/fabric-samples$ cd first-network

lqr@lqr-VirtualBox:~/fabric-samples/first-network$ ./byfn.sh -m generate

三、启动整个网络:

$ ./byfn.sh -m up

出现错误:


Error: Got unexpected status: BAD_REQUEST

Usage:

  peer channel create [flags]

Flags:

  -c, --channelID string   In case of a newChain command, the channel ID to create.

  -f, --file string        Configuration transaction file generated by a tool such as configtxgen for submitting to orderer

  -t, --timeout int        Channel creation timeout (default 5)

Global Flags:

      --cafile string              Path to file containing PEM-encoded trusted certificate(s) for the ordering endpoint

      --logging-level string       Default logging level and overrides, see core.yaml for full syntax

  -o, --orderer string             Ordering service endpoint

      --test.coverprofile string   Done (default "coverage.cov")

      --tls                        Use TLS when communicating with the orderer endpoint

  -v, --version                    Display current version of fabric peer server

!!!!!!!!!!!!!!! Channel creation failed !!!!!!!!!!!!!!!!

========= ERROR !!! FAILED to execute End-2-End Scenario ===========


查了网上的方法的解决办法:

输入指令: ./byfn.sh -m restart -c mychannel

这种方法可以解决存在mychannel情况下导致的错误。但是我的产生这个错误原因不同,所以错误仍然存在。

最后发现是因为镜像版本不统一,前面提到的最开始下载二进制文件的时候,自动下载了镜像引起的!Orderer、peer是1.0.6的,而二进制文件及例子都是1.0.0的,所以通道建立不起来!

解决办法:要删除1.0.6版本的orderer和peer镜像。

    查看要删除镜像的image ID

    执行命令:

$ docker rmi 659d92c1be85     

$ docker rmi 28c7c07db54

    重新下载$ source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0

四、解决完以上问题,重新操作:

$  cd fabric-samples/first-network #cd进first-network文件夹

$  ./byfn.sh -m down      #关闭网络

$  ./byfn.sh -m generate   #生成创世区块

$  ./byfn.sh -m up      #启动整个网络

成功!

五、问题补充:磁盘空间不足问题解决办法(参考https://blog.csdn.net/sinat_33201781/article/details/81316773)

1. 进入vbox的安装目录,输入命令VBoxManage modifyhd "vdi路径" --resize 40960。其中引号里的路径就是虚拟机vdi的路径,40960就是扩容的40G。

虚拟机vdi的路径查看方法:进入虚拟机安装目录下,执行指令 VBoxManage list hdds,如下图:location后的地址就是你的vdi地址,直接替换引号中路径即可。此过程还能看到此时磁盘内存为10240M,也就是10G。

2. 执行完之后,按以下步骤扩大虚拟区的分区。

启动虚拟机通过如下命令安装Gparted,并启动。:

$ apt-get install gparted

$ gparted  #启动

注意:直接输入命令显示权限不够,需要进入root权限下再执行该命令。

先右击“sda5”禁用交换空间,然后删除linux-swap,删除extended,然后选择需要调整的盘执行”更改大小/移动”命令,调整到需要的大小,同样留下1GB的空间再新建回extended与linux-swap,完成后点对勾应用更改,Partition节下会恢复原来的分区标识。

3. 执行指令VBoxManage list hdds,可以看到此时磁盘空间40960M

主要参考:

https://hyperledgercn.github.io/hyperledgerDocs/build_network_zh/

https://blog.csdn.net/zhj_fly/article/details/80700596

https://hyperledger-fabric.readthedocs.io/en/latest/install.html

https://blog.csdn.net/sinat_33201781/article/details/81316773VBox中给ubuntu虚拟系统扩充硬盘容量

上一篇 下一篇

猜你喜欢

热点阅读