【cosmos-sdk-笔记】cosmovisor简介
cosmos-sdk提供 upgrade 模块,可以优雅的升级新的功能
1.cosmovisor安装
cosmovisor 的代码虽然是和 cosmos-sdk 一起管理,但它是独立运行的应用。
git clone git@github.com:cosmos/cosmos-sdk
cd cosmos-sdk
git checkout cosmovisor/vx.x.x
make cosmovisor
cp cosmovisor/cosmovisor $GOPATH/bin/cosmovisor
$ cosmovisor -h
Usage:
cosmovisor [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
help Help about any command
run Run an APP command.
version Prints the version of Cosmovisor.
2.cosmovisor的参数
cosmovisor运行中的参数是通过环境变量
传递的。
DAEMON_HOME
cosmovisor/ 目录的位置 (比如 $HOME/.gaiad, $HOME/.regend, $HOME/.simd, etc.).
DAEMON_NAME
别名 (比如 gaiad, regend, simd, etc.).
DAEMON_ALLOW_DOWNLOAD_BINARIES
(可选), 如果设置为true,会自动下载更新的二进制文件,但是为了安全最好不要用(怎么能保证下载的时候不断网或报错)。
DAEMON_RESTART_AFTER_UPGRADE
(可选, default = true), 如果是true, 升级后自动重启, fasle 有可能升级后将停止运行。
DAEMON_RESTART_DELAY
(可选, default none), 升级之前的延迟等待时间 (比如 1s).
DAEMON_POLL_INTERVAL
(可选, default 300 milliseconds), 升级计划文件的轮询时间 (比如 1s).
DAEMON_DATA_BACKUP_DIR
设置自定一个备份目录,不设置默认使用DAEMON_HOME.
UNSAFE_SKIP_BACKUP
(defaults to false), 设置为true,直接升级而不执行备份。
(false,默认)在尝试升级前备份数据。建议使用UNSAFE_SKIP_BACKUP=false。
DAEMON_PREUPGRADE_MAX_RETRIES
(defaults to 0). 失败重试的次数最大可以 31 次。
3.DAEMON_HOME 结构
如果DAEMON_HOME的路径和 appd 路径设置成一样会这样。
也可以设置其他路径。
.mingxie
├── config
├── data
└── cosmovisor
.
├── current -> genesis or upgrades/<name>
├── genesis
│ └── bin
│ └── $DAEMON_NAME
└── upgrades
└── <name>
├── bin
│ └── $DAEMON_NAME
└── upgrade-info.json
4.使用步骤
- 首先配置好相对应的环境变量,因为cosmovisor的参数都是环境变量的方式传递
- 创建<DAEMON_HOME>/cosmovisor 目录
- 创建<DAEMON_HOME>/cosmovisor/genesis/bin 目录
- 创建<DAEMON_HOME>/cosmovisor/upgrades//bin 目录
- 把 appd 拷贝到对应的 current,genesis,upgrade的bin目录中(Auto-Download功能就不做整理了。官方不建议使用。)
然后开始,实际操作在下一篇文章中整理。
cosmovisor run start
欢迎大家的意见和交流
email: li_mingxie@163.com