超級賬本-部署一個生產網絡

typora-copy-images-to: image-dpn

超級賬本-部署一個生產網絡

他的部署指南從高層次概述了設置生產Fabric網絡組件的正確順序,以及最佳實踐和部署時需要注意的許多事項中的一些。請注意,本主題將從一個個體的角度討論“建立網絡”作爲一個整體的過程。更有可能的是,現實世界的生產網絡不是由一個人建立的,而是由幾個人指導的合作努力(例如,銀行的集合,每個人都建立自己的組件)。

部署Fabric網絡的過程很複雜,需要了解公鑰基礎設施和管理分佈式系統。如果您是一名智能合同或應用程序開發人員,那麼在部署生產級別的Fabric網絡時不應該需要這種級別的專業知識。但是,爲了開發有效的智能契約和應用程序,您可能需要了解網絡是如何部署的。

如果您只需要一個用於測試鏈代碼、智能契約和應用程序的開發環境,那麼可以使用Fabric測試網絡簽出。它包括兩個組織,每個組織都擁有一個對等點,以及一個擁有單個訂購節點的單個訂購服務組織。此測試網絡不打算提供部署生產組件的藍圖,也不應該這樣使用,因爲它會做出生產部署不會做出的假設和決定。

該指南將向您概述設置生產組件和生產網絡的步驟:

  • 第一步:決定網絡配置

  • 每二步:爲您的資源設置一個集羣

  • 第三步:設置您的CAs

  • 第四步:使用CA創建身份和MSPs

  • 第五步:部署節點

  1. 創建一個節點

  2. 創建一個排序節點

一、決定網絡配置

​ 區塊鏈網絡的結構必須由用例決定。這些基本業務決策將根據您的用例而變化,但是讓我們考慮幾個場景。

與開發環境或概念證明相反,在生產中操作時,安全性、資源管理和高可用性成爲優先級。要滿足高可用性,需要多少節點?希望將節點部署在哪些數據中心中,以同時滿足災難恢復和數據駐留的需求?您將如何確保您的私鑰和信任根保持安全?

除了上面提到的,這裏有一些你在部署組件之前需要做的決策:

  • 證書頒發機構配置:

​ 作爲您必須作出的有關對等點(每個通道上有多少節點,等等)和訂購服務(有多少節點,由誰擁有它們)的總體決策的一部分,您還必須決定如何部署您的組織的CAs。生產網絡應該使用傳輸層安全(TLS),這將需要設置一個TLS CA並使用它生成TLS證書。需要在註冊CA之前部署此TLS CA。我們將在步驟3:設置您的CA中對此進行更多討論。

  • 是否使用組織單位

    一些組織可能發現有必要建立組織單元,以便在某個標識和單個CA創建的msp之間創建分離。

  • 數據庫類型

​ 網絡中的一些通道可能要求以狀態數據庫能夠理解的方式對所有數據進行建模,而其他網絡考慮到速度的優先級,可能會決定所有對等點都使用LevelDB。注意,<u>通道上不應該有同時使用CouchDB和LevelDB的對等點</u>,因爲這兩種數據庫類型對數據的建模略有不同。

  • 通道和私有數據

    有些網絡可能認爲通道是確保某些事務的隱私性和隔離性的最佳方式。其他人可能認爲單一通道和私有數據更好地滿足了他們對隱私的需求。

  • 容器編配

    不同的用戶可能還會對其容器編排做出不同的決定,爲其對等進程創建單獨的容器,爲對等進程進行日誌記錄、CouchDB、gRPC通信和chaincode,而其他用戶可能會決定組合其中的一些流程。

  • Chaincode部署方法

    用戶現在可以選擇使用內置的構建和運行支持來部署他們的鏈代碼,使用外部構建器和發射器來定製構建和運行,或者使用鏈代碼作爲外部服務。

  • 使用防火牆

    在生產部署中,屬於一個組織的組件可能需要訪問來自其他組織的組件,因此需要使用防火牆和高級聯網配置。例如,使用Fabric SDK的應用程序需要訪問所有組織的所有認可對等點和所有渠道的訂購服務。類似地,對等點需要訪問從其接收新塊的通道上的訂購服務。

​ 無論您的組件部署在哪裏,您都需要在您所選擇的管理系統(如Kubernetes)方面具有高度的專業知識,以便有效地操作您的網絡。類似地,網絡結構的設計必須適合業務用例和任何相關的法律法規,政府的行業,網絡將被設計爲功能。

本部署指南不會詳細介紹每一次迭代和潛在的網絡配置,但是提供了需要考慮的通用指導方針和規則。

二、爲您的資源設置一個集羣

一般來說,Fabric與用於部署和管理它的方法無關。例如,可以從筆記本電腦部署和管理對等點。出於許多原因,這可能是不建議的,但沒有任何織物阻止它。

只要您能夠部署容器,無論是在本地(或在防火牆後),還是在雲中,就應該能夠支持組件並將它們彼此連接起來。但是,Kubernetes提供了許多有用的工具,使其成爲部署和管理Fabric網絡的流行容器管理平臺。有關Kubernetes的更多信息,請查看Kubernetes文檔。本主題將主要限制其範圍爲二進制文件,並提供使用Docker部署或Kubernetes時可以應用的說明。

但是,無論選擇在何處部署組件,都需要確保有足夠的資源讓組件有效運行。您需要的大小在很大程度上取決於您的用例。如果您計劃將一個對等點連接到幾個大容量通道,那麼它將需要比用戶計劃連接到單個通道的對等點更多的CPU和內存。粗略估計,與計劃分配給單個訂購節點的資源相比,計劃分配給對等節點的資源大約是3倍(如您將在下面的看到的,建議在一個訂購服務中至少部署3個、最理想的是5個節點)。類似地,對於CA,您需要的資源大約是對等點的十分之一。您還需要向集羣添加存儲(一些雲提供商可能提供存儲),因爲如果不先與雲提供商建立存儲,就無法配置持久卷和持久卷聲明。

通過部署概念驗證網絡並在負載下進行測試,您將更好地瞭解所需的資源。

管理基礎設施

確切的方法和工具,你用來管理你的後端將取決於你選擇的後端。然而,以下是一些值得注意的事項。

  • 使用祕密對象在集羣中安全地存儲重要的配置文件。關於Kubernetes祕密的信息,檢查Kubernetes祕密。您還可以選擇使用加固的安全模塊(HSMs)或加密的持久卷(pv)。同樣,在部署Fabric組件之後,您可能希望連接到自己後端上的容器,例如在Docker Hub這樣的服務中使用私有回購。在這種情況下,您將需要以Kubernetes祕密的形式編寫登錄信息,並在部署組件時將其包含在YAML文件中。

  • 集羣注意事項和節點大小調整。在上面的步驟2中,我們討論瞭如何考慮節點大小的一般概要。您的用例以及健壯的開發階段是您真正瞭解對等點、訂購節點和CAs需要多大的唯一方法。

  • 如何選擇安裝卷。最佳實踐是將與節點相關的卷掛載到部署節點的外部。這將允許您在稍後引用這些卷(例如,重新啓動已經崩潰的節點或容器),而不必重新部署或重新生成密碼材料。

  • 如何監控你的資源。建立一種策略和方法來監視單個節點使用的資源和部署到集羣的資源是非常重要的。當您將您的對等連接到更多的通道時,您可能需要增加它的CPU和內存分配。同樣,需要確保狀態數據庫和區塊鏈有足夠的存儲空間。

三、設置您的CAs

​ Fabric網絡中必須部署的第一個組件是CA,這是因爲必須在部署節點之前創建與節點相關聯的證書(不僅是針對節點本身的證書,還包括標識誰可以管理節點的證書)。雖然不需要使用Fabric CA來創建這些證書,但是Fabric CA還創建了需要正確定義的組件和組織所需的MSP結構。如果用戶選擇使用Fabric CA以外的CA,則必須自己創建MSP文件夾。

一個CA(如果您正在使用中間CA,則可以使用多個CA——下面將詳細介紹中間CA)用於生成(通過稱爲“註冊”的流程)組織的管理員、該組織的MSP和該組織擁有的任何節點的證書。這個CA還將爲任何其他用戶生成證書。由於它在“註冊”身份中的角色,這個CA有時被稱爲“註冊CA”或“ecert CA”。

另一個CA生成用於在傳輸層安全(TLS)上保護通信的證書。由於這個原因,這個CA通常被稱爲“TLS CA”。這些TLS證書附加在動作上,作爲防止“中間人”攻擊的一種方式。注意,TLS CA僅用於爲節點頒發證書,並且可以在該活動完成時關閉。用戶可以選擇使用單向(客戶端)TLS和雙向(服務器和客戶端)TLS,後者也稱爲“相互TLS”。因爲你的網絡指定將使用TLS(推薦)應該在部署之前決定“登記”CA (YAML文件指定的配置這個CA字段啓用TLS),你應該先部署TLS CA和使用CA根證書當引導你的登記。這TLS證書也將fabric-ca端連接時使用的錄取工作身份CA爲用戶和節點。

雖然所有non-TLS的證書與一個組織可以由一個“根”CA(也就是說,一個自己的根CA的信任),增加了安全組織可以決定使用“中間”是由一個根CA的證書(或另一箇中間CA,最終回到根CA)。因爲根CA的妥協導致崩潰的整個信任域(管理員的證書、節點和任何中科院已生成的證書),中間CA是一個有用的方法來限制的根CA。無論你選擇使用中間CAs將取決於你的用例的需求。它們不是強制性的。請注意,還可以配置輕量級目錄訪問協議(LDAP)來管理那些已經實現了此實現且不希望在現有基礎設施中添加身份管理層的企業的Fabric網絡上的身份。LDAP有效地預先註冊了目錄中的所有成員,並允許它們根據給定的條件進行註冊。

在生產網絡中,建議每個組織至少部署一個CA用於註冊,另一個CA用於TLS。例如,如果部署與一個組織關聯的三個對等點和與一個組織關聯的一個排序節點,則至少需要四個CAs。兩個CAs將用於對等組織(爲對等組織、管理員、通信和代表該組織的MSP的文件夾結構生成註冊和TLS證書),另外兩個將用於訂購者組織。注意,用戶通常只與登記註冊和登記,而節點將註冊和登記的登記CA(節點將其簽名證書識別它當它試圖簽署其行動)和TLS CA(它將讓它使用TLS證書驗證其通信)。

有關如何設置組織CA和TLS CA並註冊其管理員身份的示例,請參閱Fabric CA部署指南。部署指南使用Fabric CA客戶機註冊和註冊在設置CAs時所需的標識。

四、使用CA創建身份和MSPs

創建了CAs之後,可以使用它們爲與組織相關的身份和組件(由MSP表示)創建證書。對於每個組織,你將需要,至少:

​ 註冊和註冊一個管理員身份並創建一個MSP。在創建了將與組織關聯的CA之後,可以使用它首先註冊身份,然後註冊它。在第一步中,CA的管理員爲身份分配用戶名和密碼。屬性和從屬關係也可以爲身份(例如,admin角色,這是組織管理員所必需的)。身份註冊後,可以使用用戶名和密碼註冊。CA將爲這個身份生成兩個證書—網絡其他成員知道的公共證書(也稱爲signcert)和用於對身份採取的操作進行簽名的私鑰(存儲在keystore文件夾中)。CA還將生成一個MSP文件,其中包含頒發證書的CA的公共證書和CA的信任根(這可能是同一CA,也可能不是)。可以將此MSP視爲定義與管理員標識關聯的組織。有關此過程的示例,請查看管理員如何註冊的示例。如果org的管理員也是節點的管理員(這是典型的情況),則必須在創建節點的本地MSP之前創建org admin標識,因爲在創建本地MSP時必須使用節點管理員的證書。

註冊和註冊節點標識。只是作爲一個組織管理身份註冊和登記,一個節點的身份必須註冊和註冊登記CA和TLS CA。出於這個原因,它可能是有用的對你入學CA和TLS共享數據庫(僅允許節點身份由每個CA服務器另行註冊一次,註冊),儘管這是一個可選的配置選項。在向註冊CA註冊節點時,不要給節點一個admin或user角色,而應該給它一個peer或orderer角色。與admin一樣,也可以爲該標識分配屬性和從屬關係。節點的MSP結構稱爲“本地MSP”,因爲分配給標識的權限僅在本地(節點)級別上相關。該MSP在創建節點標識時創建,並在引導節點時使用。您將使用TLS與TLS CA根證書註冊時生成時加入你的組織的通道(此證書必須被添加到創建的組織MSP當你登記管理),當使用對等二進制CLI客戶打電話到其他同行(如同行chaincode調用)或排序節點(如對等通道獲取),因爲沒有訂貨人CLI。沒有必要將TLS根證書添加到節點的本地MSP中,因爲這些證書包含在通道配置中。

​ 有關基於fabric的區塊鏈網絡中的身份和權限的更多概念性信息,請參見身份和成員資格服務提供者(MSP)。

​ 要了解如何使用CA生成管理標識和MSP,請查看註冊Org1的admin。

​ 要了解如何使用註冊CA和TLS CA爲節點生成證書,請查看Setup Org1的對等節點。

五、節點部署

收集了所需的所有證書和MSPs之後,就差不多可以創建節點了。如上所述,有許多有效的部署節點的方法。

創建節點

在創建對等點之前,需要定製對等點的配置文件。在Fabric中,這個文件稱爲core.yaml。你可以找到一個樣本核心。在Hyperledger Fabric的sampleconfig目錄中的yaml配置文件。

正如您在文件中看到的,要使節點正常工作,您可以選擇設置或需要設置大量的參數。一般來說,如果不需要更改調優值,那麼就不要更改它。但是,您可能需要調整各種地址,指定想要使用的數據庫類型,以及指定節點的MSP的位置。

優化配置有兩個主要選項。

編輯與二進制文件綁定的YAML文件。

部署時使用環境變量覆蓋。

在CLI命令上指定標誌。

選項1的優點是,無論何時關閉或恢復節點,都將持久化更改。缺點是,在升級到新的二進制版本時,必須將定製的選項移植到新的YAML(升級到新版本時應該使用最新的YAML)。

不管怎樣,以下是一些核心價值觀。core.yaml 你必須複習。

  • peer.localMspID:這是同級組織的本地MSP的名稱。此MSP將列出您的對等組織管理員以及對等組織的根CA和TLS CA證書。

  • peer.mspConfigPath:對等點的本地MSP所在的位置。注意,最佳實踐是將此卷掛載到容器的外部。這可以確保即使容器停止(例如,在維護週期期間),也不會丟失MSPs,因此必須重新創建。

  • peer.address:表示對同一組織中其他節點的端點,這是在組織內建立八卦通信時的一個重要考慮因素。

  • peer.tls:當您將enabled值設置爲true時(在生產網絡中應該這樣做),您將必須指定相關tls證書的位置。注意,網絡中的所有節點(包括對等節點和排序節點)都必須啓用或不啓用TLS。對於生產網絡,強烈建議啓用TLS。與MSP一樣,最佳實踐是將這個卷掛載到容器的外部。

  • ledger: 用戶需要對他們的分類帳作出許多決定,包括狀態數據庫類型(例如,LevelDB或CouchDB)和它的位置(在fileSystemPath中指定)。請注意,對於CouchDB,最佳實踐是在對等點外部操作狀態數據庫(例如,在單獨的容器中),因爲這樣可以更好地爲數據庫分配特定的資源。由於延遲和安全原因,最好將CouchDB容器與對等服務器放在同一臺服務器上。對CouchDB容器的訪問應該僅限於對等容器。

  • gossip:在設置閒話數據傳播協議時,有很多配置選項需要考慮,包括externalEndpoint(它使其他組織擁有的節點可以發現對等點)和引導地址(它標識對等點所在組織中的某個對等點)。

  • chaincode.externalBuilders::當使用鏈碼作爲外部服務時,設置這個字段很重要。

    當您熟悉對等點的配置方式、卷的掛載方式和後端配置時,可以運行命令來啓動對等點(此命令將取決於後端配置)。

創建排序節點

與創建對等點不同,您需要創建一個genesis塊(或者引用已經創建的塊,如果將一個排序節點添加到一個現有的排序服務),並在啓動排序節點之前指定它的路徑。

在Fabric中,這個用於排序節點的配置文件稱爲order .yaml。您可以找到一個樣例訂貨者。在Hyperledger Fabric的sampleconfig目錄中的yaml配置文件。注意開證申請人。yaml與訂購服務的“genesis塊”不同。該塊包括orderer系統通道的初始配置,必須在創建有序節點之前創建,因爲它用於引導節點。

對於對等節點,您將看到有大量的參數可供選擇,或者需要設置這些參數才能使節點正常工作。一般來說,如果不需要更改調優值,那麼就不要更改它。

優化配置有兩個主要選項。

編輯與二進制文件綁定的YAML文件。

部署時使用環境變量覆蓋。

在CLI命令上指定標誌。

選項1的優點是,無論何時關閉或恢復節點,都將持久化更改。缺點是,在升級到新的二進制版本時,必須將定製的選項移植到新的YAML(升級到新版本時應該使用最新的YAML)。

不管怎樣,這裏有一些orderer中的值。亞瑪拉:你必須複習。您將注意到,其中一些字段與core中的字段相同。只有不同的名稱。

  • General.LocalMSPID:這是訂單方組織的本地MSP的名稱,由您的CA生成。

  • General.LocalMSPDir:排序節點的本地MSP所在的位置。注意,最佳實踐是將此卷掛載到容器的外部。

  • General.ListenAddress和一般。偵聽:表示同一組織中其他排序節點的端點。

  • FileLedger:儘管排序節點沒有狀態數據庫,但它們仍然都攜帶區塊鏈的副本,因爲這允許它們使用最新的配置塊驗證權限。因此,應該用正確的文件路徑定製分類賬字段。

  • Cluster:這些值對於與其他排序節點通信的排序服務節點非常重要,例如在基於筏的排序服務中。

  • General.BootstrapFile:這是用於引導排序節點的配置塊的名稱。如果該節點是在訂購服務中生成的第一個節點,則必鬚生成該文件,該文件被稱爲“genesis塊”。

  • General.BootstrapMethod:給出bootstrap塊的方法。目前,這隻能是file,其中指定了BootstrapFile中的文件。從2.0開始,您可以指定none來簡單地啓動orderer,而不需要引導。

  • Consensus:確定Consensus插件(支持並推薦使用筏排序服務)對預寫日誌(WALDir)和快照(SnapDir)允許的鍵/值對。

當您熟悉了排序節點的配置方式、卷的掛載方式和後端配置後,可以運行命令來啓動排序節點(此命令將取決於後端配置)。

六、下一步

區塊鏈網絡都是關於連接的,所以一旦部署了節點,顯然需要將它們連接到其他節點!如果你有一個同行組織和一個同行,你會想加入你的組織到一個聯盟,加入或渠道。如果您有一個訂購節點,您將希望將對等組織添加到您的聯盟中。您還需要學習如何開發chaincode,您可以在主題the scenario和chaincode4noah中瞭解。

連接節點和創建通道的過程包括修改策略以適應業務網絡的用例。有關策略的更多信息,請查看策略。

Fabric中的常見任務之一是編輯現有通道。有關該過程的教程,請參閱更新通道配置。一個流行的頻道更新是在現有頻道中添加一個組織。有關這個特定過程的教程,請查看向通道中添加一個組織。有關部署後升級節點的信息,請參閱升級組件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章