知乎专栏 | 多维度架构 |
整个 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));