教程

如何快速的利用Docker来升级维护以太坊Parity节点

叉叉XX   |     |   1108 次阅读

原文:https://medium.com/@preitsma/how-to-quickly-upgrade-an-ethereum-parity-node-using-docker-e170fa2a2045#.landg5ds2
发布时间:2016.10.10
作者:Peter Reitsma
译者:许昕

近日,你会发现自己经常需要更新自己的以太坊节点。本文会展示如何快速更新一个在Docker容器中运行的Parity节点。
首先需要保证区块连数据被保存在Docker容器之外,不然每次更新节点后你都需要同步区块链数据,这会很花时间。
用下面的命令来启动你的容器:

docker run -ti -d -v /var/parity/mainnet:/root/.parity \
                  -p 0.0.0.0:8545:8545 \
                  --name my-parity-node \                  
                  --restart always \
                  ethcore/parity:latest --jsonrpc-interface all \
                                        --jsonrpc-hosts all 

-d flag使Docker容器在detached mode运行在后台。
-v flag很重要。它会嵌入主机OS中的一个目录,例子中是/var/parity/mainet,到Docker容器中,并使得该目录可用于/root/.parity,这是Parity默认储存区块和其他文件的地址。请确认主机目录已经存在,以允许文件写入。
由于我们将Parity运行在一个独立的云VPS,我们通过-p 0.0.0.0:8545:8545绑定了8545端口到回环IP地址,使得它对外界可用。你可能会希望将端口改成其他数字以增加安全性。如果是这样,那可以增加flag --rpcport [端口号] 来使得Parity RPC服务器监听这个端口号。
使用Docker的--restart always可以使得容器在节点奔溃时自动重启,当然节点一般不太会崩溃。
为了使得RPC服务被外界可用,我通常会将--jsonrpc-interface和--jsonrpc-hosts设置成all。
请注意:如果你在一个公用服务器上使用这个设置方法,任何人都可以使用你的节点,请注意千万不要在这样的节点上解锁一个账户。你可以通过我以前有关Docker和Parity的文章来学习如果限制接入。

升级节点
因为区块都被储存在Docker主机里,升级节点就变得简单了:
1.删除本地ethcore/parity的镜像
2.从Dockerhub上Pull最新版本的镜像
3.停止并删除Parity Docker容器
4.重新运行上文提到的Docker命令
这次Docker命令运行会使用新的镜像,并在最短的停机时间里给你最新版本的Parity。

docker rmi -f ethcore/parity:latest 
docker pull ethcore/parity:latest
docker rm -f my-parity node
docker run -ti -d -v /var/parity/mainnet:/root/.parity \
                  -p 0.0.0.0:8545:8545 \
                  --name my-parity-node \                  
                  --restart always \
                  ethcore/parity:latest --jsonrpc-interface all \
                                        --jsonrpc-hosts all

如果希望看到所有的Parity命令选项,请运行:

docker run ethcore/parity -h

检查你下载的最新Docker镜像的Parity版本,请运行:

docker run ethcore/parity --version

检查节点的运行状态和输出,可以连接到Docker容器:

docker attach my-parity-node

请确认使用CTRL-P或者CTRL-Q来脱离,不然你会暂停整个容器(或者使得容器重启,如果使用了--restart always flag)

利用脚本
将以上的命令脚本化是个不错的点子。你甚至可以使用cronjob来自动运行脚本,来保证你的Parity永远是最新的版本。
如果你希望节点永远不下线,可以同时运行两个Docker容器在不同的RPC端口,并使用一个load balancer来reverse proxy。只要这样做,你就可以分别升级两个节点并保证至少有一个节点一直在运行。
更多有关如何使用Docker来运行Parity的信息可以在我之前的文章中被找到。

 
1 人喜欢