Heperledger fabric v1.3.0阿里云环境配置及运行e2e案例

如何使用阿里云服务器部署fabric, 其实大部分流程和物理机相同,但还是有不同的地方的

1. 创建云服务器

申请云服务器的时候,我们是在阿里云申请的按需, 系统选择的是ubuntu 16.04,注意最低配置是4G的, 否则在运行e2e案例的时候kafka启动不起来.


image.png

2.安装go

可以先下载好go的包, 然后拷贝到云服务器上
浏览器下载go包:
https://golang.org/doc/install?download=go1.11.4.linux-amd64.tar.gz
拷贝:
$ scp go1.11.3.linux-amd64.tar.gz root@47.105.93.246:/root
进入到云服务器:
$ ssh root@47.105.93.246
进行解压操作
$ sudo tar -C /usr/local -xzf go1.11.4.linux-amd64.tar.gz
编辑环境变量
$ vi ~/.profile
添加以下内容

export PATH=$PATH:/usr/local/go/bin 
export GOROOT=/usr/local/go 
export GOPATH=$HOME/go 
export PATH=$PATH:$HOME/go/bin

编辑保存并退出vi后,记得把这些环境载入:
$ source ~/.profile
我们把go的目录GOPATH设置为当前用户的文件夹下,所以记得创建go文件夹
$ cd ~
$ mkdir go
至此,go的环境安装完毕!
使用 go version 命令来查看go版本以检查是否安装成功

3.安装docker环境

由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本:
$ sudo apt-get remove docker docker-engine docker-ce docker.io
更新apt包索引:
$ sudo apt-get update
安装以下包以使apt可以通过HTTPS使用存储库(repository):
$ sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
添加Docker官方的GPG密钥:
$ curl -fsSL [https://download.docker.com/linux/ubuntu/gpg](https://download.docker.com/linux/ubuntu/gpg) | sudo apt-key add -
使用下面的命令来设置stable存储库:
$ sudo add-apt-repository "deb [arch=amd64] [https://download.docker.com/linux/ubuntu](https://download.docker.com/linux/ubuntu) $(lsb_release -cs) stable"
再更新一下apt包索引:
$ sudo apt-get update
列出可用的版本:
$ apt-cache madison docker-ce
这里我们安装18.03.01版本的docker
$ sudo apt-get install docker-ce=18.03.1~ce-0~ubuntu
查看docker服务是否启动:
$ systemctl status docker
若未启动,则启动docker服务:
$ sudo systemctl start docker
经典的hello world:
$ sudo docker run hello-world
至此,docker安装完毕!!

4.安装docker-compose

接下来呢,安装docker-compose!!
安装Python-pip
$ sudo apt-get install python-pip
安装完成后,接下来从DaoClound安装Docker-compose,运行脚本:

$ curl -L [https://get.daocloud.io/docker/compose/releases/download/1.10.1/docker-compose-](https://get.daocloud.io/docker/compose/releases/download/1.10.1/docker-compose-)`uname -s`-`uname -m` > ~/docker-compose

$ sudo mv ~/docker-compose /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
至此,docker-compose 安装完毕!! 输入docker-com ,按tab键,看看能否自动补全,若能自动补全,则说明docker-compose安装成功!!

5. fabric源码及fabric的镜像

5.1 fabric源码

在 $GOPATH/src/github.com/heperledger路径下,把代码拉下来
若是没有路径,则手动创建

$ cd $GOPATH
$ mkdir -p src/github.com/hyperledger
$ cd src/github.com/hyperledger

拉取代码:
$ git clone -b release-1.3.0 https://github.com/hyperledger/fabric

若是拉取速度太慢的话,可以先在本地clone, 然后再scp到云服务器上..

5.2 fabric镜像

在 $GOPATH/src/github.com/heperledger路径下, 下载 fabric-samples

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

切换到1.3.0版本, 因为镜像的版本一定要和fabric源码的版本保持一致,否则跑不起来!!
$ cd fabric-samples/
$ git checkout v1.3.0

将fabric/scripts/bootstrap.sh 文件拷贝到 fabric-samples 文件夹下
$ cp ../fabric/scripts/bootstrap.sh ./

修改bootstrap.sh权限
$ chmod +x bootstrap.sh

运行bootstrap.sh, 开始拉取镜像, 时间略长,需要耐心等待..
$ ./bootstrap.sh

拉取完之后, $ docker images 查看镜像状态

image.png
5.3 运行 first-network 案例

$ cd first-network/
启动案例
$ ./byfn.sh up
关闭案例
$ ./byfn.sh down

5.4 运行 e2e 案例

$ cd $GOPATH/src/github.com/hyperledger/fabric/examples/e2e_cli/
$ ./network_setup.sh up
在这里会报错的:

!!!!!!!!!!!!!!! Ordering Service is not available, Please try again ... !!!!!!!!!!!!!!!!
================== ERROR !!! FAILED to execute End-2-End Scenario ==================
或者
Attempting to Query PEER0 ...3 secs
Attempting to Query PEER0 ...6 secs
Attempting to Query PEER0 ...9 secs
Attempting to Query PEER0 ...12 secs
Attempting to Query PEER0 ...15 secs
Attempting to Query PEER0 ...18 secs
Attempting to Query PEER0 ...21 secs
Attempting to Query PEER0 ...24 secs
Attempting to Query PEER0 ...27 secs
Attempting to Query PEER0 ...30 secs
Attempting to Query PEER0 ...33 secs
Attempting to Query PEER0 ...37 secs
Attempting to Query PEER0 ...40 secs
Attempting to Query PEER0 ...43 secs
Attempting to Query PEER0 ...46 secs
Attempting to Query PEER0 ...49 secs
Attempting to Query PEER0 ...52 secs
Attempting to Query PEER0 ...55 secs
Attempting to Query PEER0 ...58 secs
Attempting to Query PEER0 ...61 secs

docker ps -a 查看各个容器的状态, orderer或者peer呈现Exit状态.
docker logs 容器id 查看未启动的docker容器的日志, 会看到如下错误:

fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1

报错原因,请点这...

解决办法: 更新docker compose yaml模板,为所有的节点(如orderer, peer, ca, cli等)添加环境变量GODEBUG=netdns=go以强制使用pure Go resolver.
需要在 e2e文件夹中,对以下文件添加环境变量GODEBUG=netdns=go

在e2e案例中,需要更改4个文件
examples/e2e_cli/base/docker-compose-base.yaml
examples/e2e_cli/base/peer-base.yaml
examples/e2e_cli/docker-compose-cli.yaml
examples/e2e_cli/docker-compose-e2e.yaml

比如:


image.png

若是kafka启动不起来,那可能是因为云服务器的配置太低了,比如说是1g内存的


image.png

跑起来之后,进入cli容器
$ docker exec -it cli bash

查看a的余额
$ peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
90

查看b的余额
$ peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'
210

从a 给 b转 20块钱:

$ peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["invoke","a","b","20"]}'

执行完之后,再查询一下 a,b的余额, 分别是 70 和 230 了, 这就表明fabric的环境已经搭建完毕,并且成功运行了e2e案例!!!

关闭案例: $ ./network_setup.sh down

参考资料:

快速搭建一个Fabric 1.0的环境
docker学习笔记(一)—— ubuntu16.04下安装docker
阿里云环境部署Hyperledger Fabric之SIGSEGV问题分析和解决经验分享

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容