自動升級
我們強烈建議驗證者使用 Cosmovisor 來運行他們的節點。 這將使低停機時間的升級更加順暢,因為驗證者不必在升級期間 手動升級 二進製文件。 相反,用戶可以預安裝新的二進製文件,Cosmovisor 將根據鏈上軟件升級建議自動更新它們。
cosmovisor
是 Cosmos SDK 應用程序二進製文件的小型流程管理器,用於監控傳入鏈升級提案的治理模塊。
如果它看到一個提案被批准,cosmovisor 可以自動下載新的二進製文件,停止當前的二進製文件,從舊的二進製文件切換到新的二進製文件,最後用新的二進製文件重啟節點。
先決條件
1. 配置 Cosmovisor
📣 提示 : $install_path
用来表示您安装 stcd
二进制程序的路径
設置 Cosmovisor 環境變量。我們建議在您的 .profile
中設置這些,以便在每個會話中自動設置。
echo "# Setup Cosmovisor" >> ~/.profile
echo "export DAEMON_NAME=stcd" >> ~/.profile
echo "export DAEMON_HOME=$install_path/.stcd" >> ~/.profile
source ~/.profile
在此之後,您必須在您的 DAEMON_HOME
目錄 ($install_path/.stcd
) 中為 cosmosvisor
創建必要的文件夾,並複制當前的二進製文件。
mkdir -p $install_path/.stcd/cosmovisor
mkdir -p $install_path/.stcd/cosmovisor/genesis
mkdir -p $install_path/.stcd/cosmovisor/genesis/bin
mkdir -p $install_path/.stcd/cosmovisor/upgrades
cp $GOPATH/bin/stcd $install_path/.stcd/cosmovisor/genesis/bin
要檢查您是否正確執行此操作,請確保您的 cosmovisor
和 stcd
版本相同:
cosmovisor run version
stcd version
2. 下載 Daodst 版本
手動下載
Cosmovisor 將不斷輪詢 $DAEMON_HOME/data/upgrade-info.json
以獲取新的升級說明。
- 下載(未安裝)新版本的二進製文件
- 將其放在
$DAEMON_HOME/cosmovisor/upgrades/<name>/bin
下,其中<name>
是軟件升級計劃中指定的升級的 URI 編碼名稱。
范例: 對於名為v3.0.0
的計劃
以及以下upgrade-info.json
:
{
"binaries": {
"linux/arm64": "https://github.com/daodst/blockchain/releases/download/v3.0.0/daodst_3.0.0_Linux_arm64.tar.gz",
"linux/amd64": "https://github.com/daodst/blockchain/releases/download/v3.0.0/daodst_3.0.0_Linux_amd64.tar.gz",
"windows/x86_64": "https://github.com/daodst/blockchain/releases/download/v3.0.0/daodst_3.0.0_Windows_x86_64.zip"
}
}
你的 cosmovisor/
目錄應該是這樣的:
cosmovisor/
├── current/ # either genesis or upgrades/<name>
├── genesis
│ └── bin
│ └── stcd
└── upgrades
└── v3.0.0
├── bin
│ └── stcd
└── upgrade-info.json
自動下載
⚠️注意 : 自動下載不會提前驗證二進製文件是否可用。如果下載二進製文件有任何問題,cosmovisor
將停止並且不會重新啟動鏈(這可能會導致它停止)。
可以讓 Cosmovisor 自動下載 新的二進製文件。 驗證者可以使用自動下載選項來防止升級過程中不必要的停機。
一旦鏈在建議的 upgrade-height 處停止,此選項將使用升級二進製文件自動重啟鏈。
此選項的主要好處是驗證者可以提前準備升級二進製文件,然後在升級時放鬆。
要設置自動下載使用設置以下環境變量:
echo "export DAEMON_ALLOW_DOWNLOAD_BINARIES=true" >> ~/.profile
3. 啟動你的節點
現在一切都已設置並準備就緒,您可以啟動您的節點。
cosmovisor run start
您將需要一些方法來保持進程始終運行。如果你在 linux 上,你可以通過創建一個服務來做到這一點。
sudo tee /etc/systemd/system/stcd.service > /dev/null <<EOF
[Unit]
Description=Daodst Chain Daemon
After=network-online.target
[Service]
User=$USER
ExecStart=$(which cosmovisor) start
Restart=always
RestartSec=3
LimitNOFILE=infinity
Environment="DAEMON_HOME=$HOME/.stcd"
Environment="DAEMON_NAME=stcd"
Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false"
Environment="DAEMON_RESTART_AFTER_UPGRADE=true"
[Install]
WantedBy=multi-user.target
EOF
然後更新並啟動節點
sudo -S systemctl daemon-reload
sudo -S systemctl enable stcd
sudo -S systemctl start stcd
您可以使用以下方式檢查狀態:
systemctl status stcd