| 知乎專欄 | 多維度架構 | | | 微信號 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));