知乎專欄 | 多維度架構 | | | 微信號 netkiller-ebook | | | QQ群:128659835 請註明“讀者” |
整個 Hyperledger Fabric 技術棧中只有這個 CouchDB 是個外來戶,看到 CouchDB 我就非常興奮,這是一個NoSQL資料庫(它與MongoDB十分類似),所以CouchDB 100%可以獨立運行,且最容易分離。
CouchDB 在這裡有兩個方案可以選擇。
採用 Docker 運行 CouchDB的方案。
採用傳統方式物理機上本地安裝 CouchDB
理論兩種方案對實際結果沒有什麼區別,只需提供IP地址,用戶名與密碼供其他節點訪問即可。但實際我們看到 Hyperledger Fabric 使用的鏡像是 hyperledger/fabric-couchdb 不清楚是否有修改過 CouchDB 資料庫。
如果你對 Docker 比較熟悉就採用 Docker 方案。如果不熟悉就採用本地安裝方式。總之選擇一種你能Hold住(掌控)的方案,一旦出現故障,你能第一時間排查並處理。
docker pull hyperledger/fabric-couchdb:x86_64-1.1.0 docker tag hyperledger/fabric-couchdb:x86_64-1.1.0 hyperledger/fabric-couchdb
下面是 Docker 方案
[root@localhost netkiller]# vim docker-compose-couchdb.yml version: '3' networks: basic: services: couchdb: container_name: couchdb image: hyperledger/fabric-couchdb # Populate the COUCHDB_USER and COUCHDB_PASSWORD to set an admin user and password # for CouchDB. This will prevent CouchDB from operating in an "Admin Party" mode. environment: - COUCHDB_USER=admin - COUCHDB_PASSWORD=passw0rd ports: - 172.16.0.17:5984:5984 networks: - basic
啟動 Docker 容器
docker-compose -f docker-compose-couchdb.yml up -d
訪問CouchDB管理界面,http://172.16.0.17:5984/_utils/ 請使用上面設置的密碼進入。若想進入到容器內部可以使用下面命令:
docker-compose -f docker-compose-couchdb.yml exec couchdb bash
至此 CouchDB 節點部署完畢。
既然是運維區塊鏈,對於運維工作我們最關心的就是如何備份數據,在出現故障的時候恢復數據。
npm install --save couchdb-backup-restore
var cbr = require('couchdb-backup-restore'); var config = {credentials: 'http://localhost:5984'}; function done(err) { if (err) { return console.error(err); } console.log('all done!'); } // backup cbr.backup(config, done).pipe(fs.createWriteStream('./db-backup.tar.gz')) // restore fs.createReadStream('./db-backup.tar.gz').pipe(cbr.restore(config, done));