美文网首页技术篇
搭建第一个网络(一)

搭建第一个网络(一)

作者: 花爬满篱笆 | 来源:发表于2019-03-29 09:45 被阅读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虚拟系统扩充硬盘容量

    相关文章

      网友评论

        本文标题:搭建第一个网络(一)

        本文链接:https://www.haomeiwen.com/subject/ltyhbqtx.html