• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于容器的Hyperledger Fabric多機部署研究

      2022-11-11 11:02:36柴震宇鐘旭楊碩于七龍
      電子技術(shù)與軟件工程 2022年15期
      關(guān)鍵詞:鏈碼容器集群

      柴震宇 鐘旭 楊碩 于七龍

      (東北大學(xué)秦皇島分校 計算機與通信工程學(xué)院 河北省秦皇島市 066004)

      1 引言

      Hyperledger Fabric[4]是當(dāng)前流行的企業(yè)級開源區(qū)塊鏈開發(fā)框架,具備良好的可拓展性,支持在豐富的應(yīng)用場景下提供服務(wù)。在實際生產(chǎn)環(huán)境中,為提高效率,一般會根據(jù)應(yīng)用場景將Fabric節(jié)點分散部署在多臺服務(wù)器中,搭建Fabric區(qū)塊鏈網(wǎng)絡(luò)過程中的復(fù)雜的環(huán)境配置通常是開發(fā)者進行快速開發(fā)的瓶頸。針對此問題,已經(jīng)有一些實踐方案,2020年,林劍宏[5]提供了單機部署Fabric網(wǎng)絡(luò)的實踐方案,但該方案適用于初學(xué)者體驗Fabric網(wǎng)絡(luò)系統(tǒng)核心功能,不適用于多機搭建。此外,方案[6]提出了通過指定節(jié)點IP的方式多機快速部署Fabric節(jié)點,但方案無法多節(jié)點進行有效管理。2019年,鐘紹柏[7]提出利用Ubuntu、Docker、Docker Compose搭建Fabric鏈碼運行環(huán)境,并進行鏈碼調(diào)用測試,但該方案為討論Fabric多機部署與管理情況。方案[8]提出了基于Kubernetes的云化部署,該方案管理效率較高,但Kubernetes學(xué)習(xí)難度大,且運維成本高。

      針對管理效率與實施成本問題,本文提出了基于Docker swarm實現(xiàn)Hyperledger Fabric的容器化部署與管理。方案具有以下特點:

      (1)利用Docker容器技術(shù)部署Fabric節(jié)點,實現(xiàn)Fabric計算節(jié)點的快速部署;

      (2)利用Docker Swarm管理容器工作負載與維護集群狀態(tài),保證系統(tǒng)的高可用性與容錯性,因swarm兼容Docker API,使得其學(xué)習(xí)成本低,同時架構(gòu)簡單,部署與運維成本低,適用于中小規(guī)模的集群管理。本方案配置簡單且管理效率高效,可直接應(yīng)用于各類生產(chǎn)環(huán)境。

      2 基于Docker Swarm部署Fabric分布式網(wǎng)絡(luò)架構(gòu)

      如圖1所示為基于Docker Swarm部署Fabric分布式網(wǎng)絡(luò)拓撲圖,網(wǎng)絡(luò)具有5個排序節(jié)點(Orderer)、6個組織(Org),每個組織下有2個peer節(jié)點。其中,排序節(jié)點通過廣播(broadcast)接口,接收客戶端發(fā)送的交易,并將交易進行排序;組織用于維護與管理peer節(jié)點;組織用于管理peer節(jié)點,當(dāng)peer節(jié)點較多時,可通過組織統(tǒng)一管理,同時,組織還為同組織內(nèi)peer節(jié)點通信機密性提供保護;peer節(jié)點包含了賬本和鏈碼,并維護賬本和鏈碼、處理事務(wù)提案(transaction proposal)及響應(yīng)(proposal response),且通過不間斷申請更新事務(wù)使賬本適中處于最新狀態(tài)。每個排序節(jié)點間可相互通信,每個組織內(nèi)部節(jié)點及組織間也可相互通信。

      圖1:基于Docker Swarm部署Fabric分布式網(wǎng)絡(luò)拓撲

      系統(tǒng)中主要將Hyperledger Fabric中的各個組件不屬于Docker容器中運行,并通過Docker Swarm作為容器編排工具實現(xiàn)集中管理各容器,同時構(gòu)造一個自定義的虛擬網(wǎng)絡(luò)實現(xiàn)內(nèi)部通信,通過docker-compose啟動Fabric的相關(guān)組件,對運行中的Fabric組件容器進行管理與調(diào)度。

      方案中Docker Swarm內(nèi)置的跨主機容器通信方案是overlay網(wǎng)絡(luò),overlay通過虛擬出一個子網(wǎng),讓處于不同主機的容器能透明地使用該子網(wǎng),所以跨主機的容器通信就變成了在同一個子網(wǎng)下的容器通信,邏輯上形成同一主機下的bridge網(wǎng)絡(luò)通信。構(gòu)建Hyperledger Fabric分布式網(wǎng)絡(luò)的核心在于使各個節(jié)點都處于同一個overlay網(wǎng)絡(luò)中,使其中的有關(guān)組件能夠與其他分布式節(jié)點進行通信。

      2.3 兩組心率變異性和心率減速力指標分析 研究組SDNN、SDANN、RMSSD、LF、HF及心率減速力水平明顯低于對照組,差異有統(tǒng)計學(xué)意義(P<0.05),見表3。

      如表1所示為圖1中網(wǎng)絡(luò)節(jié)點地址規(guī)劃,基于Fabric多機使用環(huán)境,表1中每一個主機用于構(gòu)建一個組織(Org),即每個組織對應(yīng)一個IP地址,組織間可通過物理網(wǎng)絡(luò)通信,組織內(nèi)部的peer節(jié)點通過overlay網(wǎng)絡(luò)相互通信,每個peer不對應(yīng)具體IP地址,peer之間通過虛擬內(nèi)網(wǎng)間有效的域名通信。

      表1:網(wǎng)絡(luò)節(jié)點地址

      3 系統(tǒng)實施

      3.1 實施流程

      如圖2所示為系統(tǒng)部署流程,主要內(nèi)容有:

      圖2:應(yīng)用部署流程

      (1)安裝Docker并拉取鏡像:安裝Docker及與應(yīng)用有關(guān)依賴軟件、拉取基本鏡像為前置條件,本方案中為Hyperledger Fabric官方鏡像;

      (2)組建Docker Swarm集群:將各個服務(wù)主機加入相同的Docker Swarm集群中;

      (3)創(chuàng)建overlay network:各個節(jié)點所需要共同加入overlay network,以實現(xiàn)節(jié)點間通信;

      (4)配置Docker-compose文件:該文件定義了需要管理的服務(wù)與相關(guān)環(huán)境,本文中主要為Hyperledger Fabric中的orderer節(jié)點、peer節(jié)點與客戶端(Client)控制臺;

      (5)啟動Docker節(jié)點:配置完畢后,可用上一步生成的Docker-compose的相關(guān)文件啟動Docker容器,容器內(nèi)部運行節(jié)點服務(wù);

      (6)應(yīng)用部署:該流程部署相關(guān)的Hyperledger fabric分布式應(yīng)用,到此為止,Hyperledger Fabric的分布式網(wǎng)絡(luò)就構(gòu)建完畢,開發(fā)者可基于此開發(fā)應(yīng)用程序。

      3.2 實施步驟

      方案測試環(huán)境采用6臺虛擬機用于分布式節(jié)點部署,節(jié)點操作系統(tǒng)為Ubuntu20.04,分配1核(vCPU),2G內(nèi)存,20G硬盤。部署操作主要參考圖2中的核心流程,部署中的核心步驟如下所示:

      (1)環(huán)境安裝與鏡像拉取,在每一個組織(Org)的主機中拉取docker、docker swarm鏡像,拉取成功后可驗證相關(guān)組件版本信息,如圖3所示為主機中Docker版本信息,如圖4所示為Docker compose,如圖5所示為Docker images的版本信息,為了保持系統(tǒng)安全性與可擴展性,各類基礎(chǔ)組件安裝時應(yīng)選擇穩(wěn)定版本部署。

      圖3:Docker版本

      圖4:Docker-compose版本

      圖5:Docker images信息

      (2)組建Docker swarm集群。在各個主機中分別通過“docker swarm init --advertise-addr <host-1 ip address>”、“docker swarm join-token manager”、“<output from jointoken manager> --advertise-addr <host-2 ip address>”命令構(gòu)建Docker swarm,部署成功可查看部署后的集群。如圖6所示為通過“docker node ls”查看本項目中集群節(jié)點信息,其中,每個節(jié)點的“Ready”狀態(tài)代表節(jié)點狀態(tài)正常,管理狀態(tài)(MANAGER STATUS)為“Leader”表示該節(jié)點可進行集群任務(wù)調(diào)度,當(dāng)Leader節(jié)點發(fā)生故障時,其它主機將重新推舉產(chǎn)生新的Leader管理集群。

      圖6:Docker swarm集群

      (3)創(chuàng)建overlay network。在主機中通過“docker network create --attachable --driver overlay basic-network”命令構(gòu)建overlay網(wǎng)絡(luò),如圖7所示為構(gòu)建網(wǎng)絡(luò)完畢后通過“docker network ls”命令查看網(wǎng)絡(luò)信息,其中,DRIVER為“overlay”、SCOPE為“swarm”的網(wǎng)絡(luò)為新建的overlay network。創(chuàng)建overlay network之后,運行在多個節(jié)點(nodes)上的容器(container)可通過內(nèi)部網(wǎng)絡(luò)進行通信與訪問。

      圖7:創(chuàng)建overlay network的目錄

      (4)配置Docker-compose文件。如表2所示為各主機的Docker-compose文件與節(jié)點信息,compose文件是一個YAML文件,用于定義services、network和volumes等參數(shù)。本方案中有6臺主機,對應(yīng)需要配置6臺主機的dockercompose文件。配置相關(guān)文件可啟動Hyperledger Fabric節(jié)點。

      表2:主機Docker-compose文件

      (5)啟動節(jié)點。在各主機輸入“docker-compose -f < hostn.yaml> -f <ordern.yaml> up -d”命令啟動節(jié)點,其中“-f”參數(shù)表示指定文件,“-d”參數(shù)表示后臺啟動。如圖8所示,為節(jié)點啟動成功后在Host1中通過“docker ps -a”命令查看容器運行情況,其中,STATUS為“up”表示節(jié)點正常啟動與運行。

      圖8:Host 1節(jié)點啟動情況

      (6)應(yīng)用部署。根據(jù)Hyperledger Fabric的業(yè)務(wù)流程,首先需要完成加入通道(peer channel join)、更新錨節(jié)點(peer channel update)、安裝鏈碼(install chaincode)、審批鏈碼(approve chaincode)、提交鏈碼(commit chaincode)、初始化鏈碼(init chaincode)等步驟完成之后,才能進入業(yè)務(wù)核心流程調(diào)用鏈碼。其中,通道分為系統(tǒng)通道與應(yīng)用通道,分別用于傳輸管理與交易信息;錨節(jié)點是每個組織中若干個peer節(jié)點的代表,負責(zé)與其它組織通信;安裝鏈碼即部署Fabric智能合約,鏈碼被編譯成一個獨立的應(yīng)用程序,運行于隔離的Docker容器中;審批鏈碼用于允許向通道提交鏈碼,F(xiàn)abric中需要超過一般的組織審批鏈碼后才可向通道提交鏈碼;鏈碼的初始化只需要執(zhí)行一次,在任意節(jié)點上執(zhí)行即可。

      如圖9所示為Fabric多機部署測試,部署完畢后,可驗證各排序節(jié)點間與組織內(nèi)部節(jié)點間網(wǎng)絡(luò)是否暢通,圖9(a)為驗證排序節(jié)點間網(wǎng)絡(luò)連接,圖9(b)為驗證組織內(nèi)部節(jié)點間網(wǎng)絡(luò)連接。

      圖9

      以上部署及測試結(jié)果表明,基于Docker Swarm的Hyperledger Fabric多機部署具有可行性。因Docker swarm是Docker官方社區(qū)開發(fā)的原生集群管理工具,其使用標準的docker API,使得Docker swarm學(xué)習(xí)成本低,同時架構(gòu)簡單,運維成本低,有利于快速部署與二次開發(fā)。

      4 結(jié)束語

      本文針對Fabric多機的管理效率低與實施成本高問題,研究了基于容器技術(shù)的Hyperledger Fabric的多機部署,并通過實驗的方式驗證了有關(guān)Hyperledger Fabric節(jié)點在Docker Swarm的容器編排管理的可行性。方案具有可快速部署、易于管理等特點,針對于普通規(guī)模的Fabric集群部署與管理具有一定優(yōu)勢,且可直接應(yīng)用于各類生產(chǎn)環(huán)境。方案未對部署規(guī)模較大集群效率與性能進行測試,下一步將針對規(guī)模較大集群時的精細管理做出探索。

      猜你喜歡
      鏈碼容器集群
      Different Containers不同的容器
      難以置信的事情
      海上小型無人機集群的反制裝備需求與應(yīng)對之策研究
      一種無人機集群發(fā)射回收裝置的控制系統(tǒng)設(shè)計
      電子制作(2018年11期)2018-08-04 03:25:40
      一種新壓縮頂點鏈碼
      Python與Spark集群在收費數(shù)據(jù)分析中的應(yīng)用
      勤快又呆萌的集群機器人
      取米
      基于鏈碼特征的幾何圖形快速識別算法*
      無損鏈碼技術(shù)的分析與比較
      大姚县| 西乌珠穆沁旗| 安平县| 麟游县| 信阳市| 肃南| 盐津县| 白山市| 新化县| 新沂市| 洪雅县| 鄂尔多斯市| 砚山县| 皮山县| 宁河县| 六安市| 正安县| 彰化县| 奉新县| 济阳县| 吉水县| 泗洪县| 定远县| 齐齐哈尔市| 于都县| 东至县| 石柱| 云南省| 韶关市| 广水市| 高唐县| 孟津县| 芜湖县| 集安市| 拉萨市| 剑河县| 弋阳县| 定结县| 芜湖市| 项城市| 深水埗区|