在 Swarm 集群環(huán)境部署 Fabric 區(qū)塊鏈

前言

fabric 部署本來就是一件麻煩的事情券勺,如果還涉及到多機環(huán)境部署那就更加的麻煩了狡蝶。
因為 fabric 推薦部署在docker環(huán)境中把将,那很自然地想到通過集群部署工具來部署fabric焰枢。本文就通過例子來說明如何在 Swarm 集群中部署 fabric 區(qū)塊鏈網絡舀患。

還有之前看到過張海寧的k8s部署方案徽级,供大家參考。

文中所有IP地址,如192.168.1.93聊浅,都需要根據你本地的情況輸入餐抢。

本例子github地址:fabric-in-swarm , 歡迎star.

本文同時發(fā)布在個人網頁 http://qiushaoxi.com/2017/12/07/fabric-in-swarm/

轉載請注明出處。

架構說明

image.png

docker swarm 會在各臺機器之上 創(chuàng)建一個 overlay 虛擬網絡低匙,通過swarm啟動的container可以跨主機互相訪問旷痕。

docker service 是 swarm 編排的最小單位,可以配置運行的鏡像顽冶、網絡端口欺抗、環(huán)境變量等,一個service 可以啟動多個container進行負載均衡强重。不過因為區(qū)塊鏈中每個節(jié)點都有不同的配置绞呈,本例子中每個service只跑一個container。后續(xù)可以繼續(xù)探討啟動多個container的場景间景。qiushaoxi.github.io/img/fabric-in-swarm/cluster.png

docker stack 則是一組 service 的合集佃声, 每個stack會默認創(chuàng)建一個 default 的 overlay 網絡,其中還可以再配置其他網絡倘要。 stack 本意是技術棧圾亏,通過在 stack 中配置前后端、中間件等 service碗誉,可以實現一鍵部署整個技術棧召嘶。本例子的stack 中,配置了1個orderer哮缺、4個peer和1個cli一共6個service弄跌。后續(xù)可以根據需要加入kafka、couchdb等service尝苇。

swarm 集群會對外暴露一個IP铛只,通過端口映射埠胖,可以訪問到具體 service 的端口。

基礎環(huán)境搭建

Swarm 集群搭建

安裝 docker

如果還沒有安裝 docker 淳玩,執(zhí)行:

curl -fsSL https://get.docker.com | sh

在 leader 創(chuàng)建 Swarm 集群

選擇一臺機器作為 leader

docker swarm init --advertise-addr 192.168.1.93

這里的ip是整個swarm集群對外的ip直撤,所有swarm集群里面的容器都通過這個ip對外提供服務。

執(zhí)行返回:

To add a worker to this swarm, run the following command:
 
    docker swarm join /
    --token SWMTKN-1-16kit6dksvrqilgptjg5pvu0tvo5qfs8uczjq458lf9mul41hc-dzvgu0h3qngfgihz4fv0855bo /
    192.168.1.93:2377
 
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

其他機器加入 Swarm 集群

根據第一步返回的命令加入集群:

docker swarm join /
--token SWMTKN-1-16kit6dksvrqilgptjg5pvu0tvo5qfs8uczjq458lf9mul41hc-dzvgu0h3qngfgihz4fv0855bo /
192.168.1.93:2377

所有其他機器執(zhí)行命令后蜕着,在leader執(zhí)行

docker node ls

如果能看到所有機器谋竖,說明操作成功,Swarm集群搭建完畢承匣。

portainer

這里推薦一個開源的docker后臺管理工具portainer蓖乘,也支持Swarm集群的管理。

docker service create \
--name portainer \
--publish 9000:9000 \
--replicas=1 \
--constraint 'node.role == manager' \
--mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \
portainer/portainer \
-H unix:///var/run/docker.sock

執(zhí)行這個命令就可以在Swarm中啟動韧骗,然后訪問 Swarm_IP:9000 就可以進行管理后臺嘉抒,初次需要設置密碼。

NFS服務器搭建

因為集群容器需要讀取一些文件袍暴,所以需要搭一個文件服務器些侍。

安裝nfs-kernel-server

可以在任意臺機器安裝,本例子就在 swarm manager的機器上安裝的政模。

apt install nfs-common
apt install nfs-kernel-server

修改配置文件

vim /etc/exports

修改內容如下:

/nfs *(rw,sync,no_root_squash)

各段表達的意思如下岗宣,根據實際進行修改

/nfs   :共享的目錄
*       :指定哪些用戶可以訪問
            *  所有可以ping同該主機的用戶
            192.168.1.*  指定網段,在該網段中的用戶可以掛載
            192.168.1.12 只有該用戶能掛載
(ro,sync,no_root_squash):  權限
        ro : 只讀
        rw : 讀寫
        sync :  同步
        no_root_squash: 不降低root用戶的權限
    其他選項man 5 exports 查看

創(chuàng)建目錄并重啟nfs服務

mkdir /nfs
service nfs-kernel-server restart

到此淋样,nfs的服務就搭建好了狈定。

連接掛載nfs服務器

執(zhí)行 showmount -e + 主機IP 測試和nfs服務器是否能夠聯通

apt install nfs-common

showmount -e 192.168.1.93

如果看到返回:

Export list for 192.168.1.93:
/nfs *

說明文件服務器是ok的。

將該目錄掛載到本地习蓬,每個機器都需要掛載,包括管理節(jié)點的機器措嵌。為的是保證每臺機器都能夠從/mnt/nfs/目錄獲取數據躲叼。

mkdir -p /mnt/nfs
mount 192.168.1.93:/nfs  /mnt/nfs

訪問本地的/mnt/nfs目錄,就可訪問服務端共享的目錄了企巢。

部署 Fabric

部署文件準備

進入nfs目錄

cd /mnt/nfs

從github獲取示例腳本

git clone https://github.com/qiushaoxi/fabric-in-swarm.git
cd fabric-in-swarm

每個節(jié)點都需要有fabric相關的docker image枫慷,我例子使用fabric 1.0.0版本。

如果還沒有浪规,需要在每臺機器執(zhí)行下載腳本或听,拉取image

bash download-dockerimages.sh

如果覺得下載速度太慢,可以使用阿里云鏡像加速笋婿,或者在本地部署docker hub誉裆,具體方法可以參考本地Docker Hub配置.

執(zhí)行部署命令

設置相關環(huán)境變量,FABRIC_IP是你Swarm管理節(jié)點的ip

export FABRIC_IP=192.168.1.93

執(zhí)行docker stack deploy命令啟動stack缸濒,docker-compose-cli.yaml是docker-compose v3 配置文件足丢,配置了相關的service粱腻。

示例的配置參考fabric官方e2e_cli,1個orderer斩跌,4個peer绍些,一個cli。命令最后的 e2e 是stack的名稱耀鸦。

cd e2e_cli
docker stack deploy -c docker-compose-cli.yaml e2e

docker-compose文件中配置了cli容器會自動執(zhí)行腳本柬批,執(zhí)行創(chuàng)建通道、加入通道等一系列操作袖订。

docker service 會根據每臺機器的性能和負載氮帐,選擇啟動container的機器。

image.png

查看執(zhí)行結果

執(zhí)行下面命令著角,查詢執(zhí)行日志揪漩。

docker service logs -f e2e_cli

如果看不到內容首昔,(我在本地可以用這個命令哮内,阿里云看不到,原因不明)啡邑。執(zhí)行

docker service ps e2e_cli

可以看到cli容器的id和運行在哪臺機器上产徊。

到運行cli容器的機器上執(zhí)行

docker logs [cli_container_id]

查看執(zhí)行日志昂勒。

如果最后出現 END-E2E,則說明執(zhí)行成功舟铜。

移除 stack

執(zhí)行

docker stack rm e2e

就可以停止并移除所有配置啟動的service戈盈。

其他說明

查看stack

docker stack ls

查看service

docker service ls

因為運行chaincode的container是通過unix://var/run/docker.sock啟動的,不是由swarm啟動的谆刨,所以通過docker service 是看不到的塘娶。需要到具體執(zhí)行的機器上執(zhí)行

docker ps

才能看到。

而且痊夭,就算是停止了stack也不會自動刪除這些container刁岸,不過因為peer停止了,這些chaincode的container也會自動停止她我。

參考文獻

Docker Compose 配置文件詳解(V3)

官方接口文檔

多主機網絡下 Docker Swarm 模式的容器管理

ubuntu 16.04 nfs服務的搭建

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末虹曙,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子番舆,更是在濱河造成了極大的恐慌酝碳,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恨狈,死亡現場離奇詭異疏哗,居然都是意外死亡,警方通過查閱死者的電腦和手機禾怠,發(fā)現死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門沃斤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來圣蝎,“玉大人,你說我怎么就攤上這事衡瓶∨枪” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵哮针,是天一觀的道長关面。 經常有香客問我,道長十厢,這世上最難降的妖魔是什么等太? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮蛮放,結果婚禮上缩抡,老公的妹妹穿的比我還像新娘。我一直安慰自己包颁,他們只是感情好瞻想,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著娩嚼,像睡著了一般蘑险。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上岳悟,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天佃迄,我揣著相機與錄音,去河邊找鬼贵少。 笑死呵俏,一個胖子當著我的面吹牛,可吹牛的內容都是我干的滔灶。 我是一名探鬼主播柴信,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼宽气!你這毒婦竟也來了?” 一聲冷哼從身側響起潜沦,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤萄涯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后唆鸡,有當地人在樹林里發(fā)現了一具尸體涝影,經...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年争占,在試婚紗的時候發(fā)現自己被綠了燃逻。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片序目。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖伯襟,靈堂內的尸體忽然破棺而出猿涨,到底是詐尸還是另有隱情,我是刑警寧澤姆怪,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布叛赚,位于F島的核電站,受9級特大地震影響稽揭,放射性物質發(fā)生泄漏俺附。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一溪掀、第九天 我趴在偏房一處隱蔽的房頂上張望事镣。 院中可真熱鬧,春花似錦揪胃、人聲如沸璃哟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沮稚。三九已至,卻和暖如春册舞,著一層夾襖步出監(jiān)牢的瞬間蕴掏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工调鲸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留盛杰,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓藐石,卻偏偏與公主長得像即供,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子于微,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內容