Fabric Order節(jié)點(diǎn)災(zāi)害恢復(fù)

問(wèn)題
在我的Hyperledger Fabric上執(zhí)行Load Test后,我的兩個(gè)Orderers都沒(méi)有磁盤空間,這導(dǎo)致Orderers沒(méi)有響應(yīng)任何呼叫。我試圖通過(guò)清除日志釋放磁盤空間并重新啟動(dòng)Orderer但是失敗了。以下是捕獲的錯(cuò)誤。

有沒(méi)有人遇到過(guò)同樣的問(wèn)題以及如何解決?

fabric-order    | 2018-03-31 03:15:38.370 UTC [orderer/common/blockcutter] Ordered -> DEBU 5929 Enqueuing message into batch
fabric-order    | 2018-03-31 03:15:38.370 UTC [orderer/kafka] processRegular -> DEBU 592a [channel: test] Ordering results: items in batch = 0, ok = true
fabric-order    | 2018-03-31 03:15:38.370 UTC [orderer/kafka] processMessagesToBlocks -> DEBU 592b [channel: test] Successfully unmarshalled consumed message, offset is 14829. Inspecting type...
fabric-order    | 2018-03-31 03:15:38.370 UTC [orderer/kafka] processTimeToCut -> DEBU 592c [channel: test] It's a time-to-cut message for block 2345
fabric-order    | 2018-03-31 03:15:38.370 UTC [orderer/kafka] processTimeToCut -> DEBU 592d [channel: test] Nil'd the timer
fabric-order    | 2018-03-31 03:15:38.370 UTC [fsblkstorage] retrieveBlockByNumber -> DEBU 592e retrieveBlockByNumber() - blockNum = [2344]
fabric-order    | 2018-03-31 03:15:38.370 UTC [fsblkstorage] newBlockfileStream -> DEBU 592f newBlockfileStream(): filePath=[/var/hyperledger/production/orderer/chains/test/blockfile_000001], startOffset=[13754]
fabric-order    | 2018-03-31 03:15:38.370 UTC [fsblkstorage] nextBlockBytesAndPlacementInfo -> DEBU 5930 Remaining bytes=[67089544], Going to peek [8] bytes
fabric-order    | 2018-03-31 03:15:38.370 UTC [fsblkstorage] nextBlockBytesAndPlacementInfo -> DEBU 5931 Returning blockbytes - length=[115], placementInfo={fileNum=[1], startOffset=[13754], bytesOffset=[13755]}
fabric-order    | panic: Error seeking to newest block for chain with non-zero height
fabric-order    |
fabric-order    | goroutine 22 [running]:
fabric-order    | panic(0xb31bc0, 0xc4202031b0)
fabric-order    |       /opt/go/src/runtime/panic.go:500 +0x1a1
fabric-order    | github.com/hyperledger/fabric/orderer/ledger.CreateNextBlock(0x7fc67f4b0fc0, 0xc4200bad80, 0xc4202841e0, 0x4, 0x4, 0xc420202a40)
fabric-order    |       /opt/gopath/src/github.com/hyperledger/fabric/orderer/ledger/util.go:63 +0x4c3
fabric-order    | github.com/hyperledger/fabric/orderer/multichain.(*chainSupport).CreateNextBlock(0xc4202f4c80, 0xc4202841e0, 0x4, 0x4, 0xc4207e0440)
fabric-order    |       /opt/gopath/src/github.com/hyperledger/fabric/orderer/multichain/chainsupport.go:224 +0x81
fabric-order    | github.com/hyperledger/fabric/orderer/kafka.processTimeToCut(0xc420202730, 0x1231f60, 0xc4202f4c80, 0xc4203526f8, 0xc420bbf9a0, 0x39ed, 0x0, 0x0)
fabric-order    |       /opt/gopath/src/github.com/hyperledger/fabric/orderer/kafka/chain.go:410 +0x3e0
fabric-order    | github.com/hyperledger/fabric/orderer/kafka.(*chainImpl).processMessagesToBlocks(0xc4203526c0, 0x0, 0x0, 0x0, 0x0, 0x0)
fabric-order    |       /opt/gopath/src/github.com/hyperledger/fabric/orderer/kafka/chain.go:249 +0xa45
fabric-order    | github.com/hyperledger/fabric/orderer/kafka.startThread(0xc4203526c0)
fabric-order    |       /opt/gopath/src/github.com/hyperledger/fabric/orderer/kafka/chain.go:182 +0x981
fabric-order    | created by github.com/hyperledger/fabric/orderer/kafka.(*chainImpl).Start
fabric-order    |       /opt/gopath/src/github.com/hyperledger/fabric/orderer/kafka/chain.go:94 +0x3f
fabric-order exited with code 2

解決方法
雖然我很想找到問(wèn)題的根本原因(分類帳應(yīng)該容忍磁盤空間正常耗盡),但您應(yīng)該能夠通過(guò)以下過(guò)程恢復(fù)您的訂單:

備份現(xiàn)有的Orderer(特別是他們的分類帳)
刪除分類帳目錄(例如/var/hyperledger/production/orderer)。
指定文件的創(chuàng)建方法(即ORDERER_GENERAL_GENESISMETHOD=file),并傳入您通過(guò)via引導(dǎo)您的訂購(gòu)者的原始創(chuàng)世塊ORDERER_GENERAL_GENESISFILE=<genesis.block or other name>
啟動(dòng)Orderer,它應(yīng)連接到Kafka并重播所有交易以重建分類帳。如果您查看日志或分類帳大小,您應(yīng)該看到它增長(zhǎng),并且容器將非常活躍,直到它趕上當(dāng)前狀態(tài)。
請(qǐng)注意,如果您的Kafka日志自啟動(dòng)網(wǎng)絡(luò)后已過(guò)期,則此過(guò)程將不起作用。這實(shí)際上是您將新訂單生成器添加到網(wǎng)絡(luò)時(shí)要遵循的過(guò)程。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容