ノードアップデートマニュアル¶
概要
このガイドは ノードバージョン8.1.2に対応しています。最終更新日:2023年07月24日
Node/CLI | GHC | Cabal |
---|---|---|
8.1.2 | 8.10.7 | 3.8.1.0 |
- 各バージョンのDB再構築について
→ 1.35.xからv8.1.2 再構築あり(5時間~8時間以上)
→ v8.0.0からv8.1.2 再構築あり(5時間~8時間以上)
→ v8.1.1からv8.1.2 再構築なし(数分)
主な変更点と新機能
■v8.0.0
-
libsodium更新
-
Conway台帳拡張対応
-
--mainnet
や--testnet-magic
を必要とするCLIクエリでは、環境変数にCARDANO_NODE_NETWORK_ID=mainnet
またはCARDANO_NODE_NETWORK_ID=<number>
を設定することで、ネットワーク指定オプションが不要になりました。例)
cardano-cli query tip
-
環境変数に
CARDANO_NODE_SOCKET_PATH=
が指定されていない場合、ソケットパスを必要とするCLIクエリでは--socket-path
が必須となりました。 -
ノードmempoolにあるトランザクションを確認することが可能になりました。
cardano-cli query tx-mempool info #mempool統計情報を表示します。 cardano-cli query tx-mempool next-tx #次に処理するトランザクションのIDを返します。 cardano-cli query tx-mempool tx-exists <txid> #トランザクションがmempoolに存在するか確認できます。
-
cardano-cli query tip
戻り値情報項目追加
slotInEpoch
(現在のエポックスロット)とslotsToEpochEnd
(エポック終了までのスロット数) -
プール登録情報検索コマンド追加
cardano-cli query pool-state
-
SPO投票用コマンド追加
cardano-cli governance poll
-
P2P設定時、ローカルルートPeerに複数のDNS名を使用した際の接続不具合を解消
-
Peersメトリクス変更
1.35.x:cardano_node_metrics_connectedPeers_int
8.0.x :cardano_node_metrics_peers_connectedPeers_int
■v8.1.1
- P2P DNSバグ解消
- エポック境界計算処理改善(エポック境界のミススロットがなくなります)
■v8.1.2
- Plutus インタープリター更新
- v8.1.1利用者は速やかにアップデートを行って下さい
よくお読みになって進めてください
ご自身のアップデートスタイルによって手順が異なります。
更新フローチャートとアップデートマニュアルを照らし合わせながら、アップデート作業を進めてください。
更新フローチャート¶
更新フローチャートは、画像をクリックすると別ウィンドウで開きます。
1.依存環境アップデート¶
1-1. システムアップデート¶
システムアップデート
sudo apt update -y && sudo apt upgrade -y
1-2. cabal/GHCバージョン確認¶
cabalパス確認
which cabal
/home/user/.ghcup/bin/cabal なら正常
cabalバージョン確認
cabal --version
以下の戻り値ならOK
cabal-install version 3.8.1.0
compiled using version 3.8.1.0 of the Cabal library
GHCバージョン確認
ghc --version
現在のGHCのバージョンは「8.10.7」
GHC9はベンチマークテストが終わってないため今ノードバージョンでは非推奨
prometheus-node-exporter --version
戻り値1行目が
node_exporter, version 1.5.0
ならOK
各アプリのバージョンが異なる場合
戻り値が[/home/user/.local/bin/cabal]だった場合(クリックして開く)
戻り値が[/home/user/.local/bin/cabal]だった場合のみ以下を実行
パスを追加する
echo PATH=$PATH:$HOME/.ghcup/bin >> $HOME/.bashrc
source $HOME/.bashrc
旧cabalリネーム
cd $HOME/.local/bin/
mv cabal cabal_bk
cabal 3.6.2.0以下だった場合(クリックして開く)
cabal 3.6.2.0以下だった場合のみ実行 cabalバージョンアップ
ghcup upgrade
ghcup install cabal 3.8.1.0
ghcup set cabal 3.8.1.0
cabal --version
以下の戻り値ならOK
cabal-install version 3.8.1.0
compiled using version 3.8.1.0 of the Cabal library
GHC 8.10.4以下だった場合(クリックして開く)
GHC 8.10.4以下だった場合のみ実行
ghcup upgrade
ghcup install ghc 8.10.7
ghcup set ghc 8.10.7
ghc --version
GHCのバージョンは「8.10.7」であればOK
node_exporter, version 1.4.1以下だった場合(クリックして開く)
prometheus-node-exporterのパスを取得する
cd $HOME/git
nodeexPath=`which prometheus-node-exporter`
1.5.0をダウンロードする
wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz
ダウンロードファイルを解凍する
tar xvf node_exporter-1.5.0.linux-amd64.tar.gz
サービスを停止する
sudo systemctl stop prometheus-node-exporter.service
バイナリファイルをシステムフォルダへコピーする
cd node_exporter-1.5.0.linux-amd64
sudo cp node_exporter $nodeexPath
バージョン確認
prometheus-node-exporter --version
戻り値1行目が
node_exporter, version 1.5.0
ならOK
サービスをスタートする
sudo systemctl start prometheus-node-exporter.service
1-3.libsodium更新¶
この項目(1-3)は、1.35.シリーズからアップデートする場合のみ実施してください
cd ~/git/libsodium
git fetch --all --prune
git checkout dbb48cc
./autogen.sh
./configure
make
make check
sudo make install
make
コマンド実行後半に出現するwarning
は無視して大丈夫です。
1-4.CNCLIバージョン確認(BPのみ)¶
CNCLIバージョン確認
cncli --version
以下の戻り値ならOK
cncli 5.3.2
cncli v5.3.1以下だった場合(クリックして開く)
依存関係の追加とアップデート
sudo apt update -y && sudo apt install -y automake build-essential pkg-config libffi-dev libgmp-dev libssl-dev libtinfo-dev libsystemd-dev zlib1g-dev make g++ tmux git jq wget libncursesw5 libtool autoconf musl-tools
CNCLIをアップデートする
rustup update
rustup target add x86_64-unknown-linux-musl
cd $HOME/git/cncli
git fetch --all --prune
git checkout $(curl -s https://api.github.com/repos/cardano-community/cncli/releases/latest | jq -r .tag_name)
cargo install --path . --force
バージョン確認
cncli --version
cncli 5.3.2になったことを確認する
2.通常アップデート¶
2-1.ビルド準備¶
新しいTMUXセッションを開く
tmux new -s build
ソースコードダウンロード(2-2)及びビルド(2-3)を実行します
2-2.ソースコードダウンロード¶
cd $HOME/git
rm -rf cardano-node-old/
git clone https://github.com/input-output-hk/cardano-node.git cardano-node2
cd cardano-node2/
2-3.ソースコードからビルド¶
cabal clean
cabal update
git fetch --all --recurse-submodules --tags
git checkout tags/8.1.2
cabal configure --with-compiler=ghc-8.10.7
libsodium-vrfフラグについて
cabal.project.local
に追記していた-external-libsodium-vrf
は、セキュリティ上実稼働ノードでは非推奨となりました。
cabal build cardano-node cardano-cli
ヒント
- ビルド完了までに数十分ほどかかります。
- SSH接続が途中で切断されても処理が止まりません。
- ビルド中にデタッチ(Ctrl+B D)してバックグラウンド処理へ切り替えられます。
バージョン確認
$(find $HOME/git/cardano-node2/dist-newstyle/build -type f -name "cardano-cli") version
$(find $HOME/git/cardano-node2/dist-newstyle/build -type f -name "cardano-node") version
cardano-cli 8.1.2 - linux-x86_64 - ghc-8.10
git rev d2d90b48c5577b4412d5c9c9968b55f8ab4b9767cardano-node 8.1.2 - linux-x86_64 - ghc-8.10
git rev d2d90b48c5577b4412d5c9c9968b55f8ab4b9767
ビルド用TMUXセッションを終了する
exit
ノードをストップする
sudo systemctl stop cardano-node
バイナリーファイルをシステムフォルダーへコピーする
sudo cp $(find $HOME/git/cardano-node2/dist-newstyle/build -type f -name "cardano-cli") /usr/local/bin/cardano-cli
sudo cp $(find $HOME/git/cardano-node2/dist-newstyle/build -type f -name "cardano-node") /usr/local/bin/cardano-node
システムに反映されたノードバージョンを確認する
cardano-cli version
cardano-node version
以下の戻り値を確認する
cardano-cli 8.1.2 - linux-x86_64 - ghc-8.10
git rev d2d90b48c5577b4412d5c9c9968b55f8ab4b9767cardano-node 8.1.2 - linux-x86_64 - ghc-8.10
git rev d2d90b48c5577b4412d5c9c9968b55f8ab4b9767
2-4.設定ファイルの追加と更新¶
この項目(2-4)は、1.35.シリーズからアップデートする場合のみ実施してください
cd $NODE_HOME
wget --no-use-server-timestamps -q https://book.world.dev.cardano.org/environments/${NODE_CONFIG}/conway-genesis.json -O ${NODE_CONFIG}-conway-genesis.json
wget --no-use-server-timestamps -q https://book.world.dev.cardano.org/environments/${NODE_CONFIG}/config.json -O ${NODE_CONFIG}-config.json
設定ファイルを書き換える
sed -i ${NODE_CONFIG}-config.json \
-e 's!"AlonzoGenesisFile": "alonzo-genesis.json"!"AlonzoGenesisFile": "'${NODE_CONFIG}'-alonzo-genesis.json"!' \
-e 's!"ByronGenesisFile": "byron-genesis.json"!"ByronGenesisFile": "'${NODE_CONFIG}'-byron-genesis.json"!' \
-e 's!"ShelleyGenesisFile": "shelley-genesis.json"!"ShelleyGenesisFile": "'${NODE_CONFIG}'-shelley-genesis.json"!' \
-e 's!"ConwayGenesisFile": "conway-genesis.json"!"ConwayGenesisFile": "'${NODE_CONFIG}'-conway-genesis.json"!' \
-e "s/TraceMempool\": true/TraceMempool\": false/g" \
-e 's!"TraceBlockFetchDecisions": false!"TraceBlockFetchDecisions": true!' \
-e '/"defaultScribes": \[/a\ \[\n "FileSK",\n "logs/node.json"\n \],' \
-e '/"setupScribes": \[/a\ \{\n "scFormat": "ScJson",\n "scKind": "FileSK",\n "scName": "logs/node.json"\n \},' \
-e "s/127.0.0.1/0.0.0.0/g"
sed -i ${NODE_CONFIG}-config.json \
-e '2i \ "EnableP2P": true,' \
-e 's!"AlonzoGenesisFile": "alonzo-genesis.json"!"AlonzoGenesisFile": "'${NODE_CONFIG}'-alonzo-genesis.json"!' \
-e 's!"ByronGenesisFile": "byron-genesis.json"!"ByronGenesisFile": "'${NODE_CONFIG}'-byron-genesis.json"!' \
-e 's!"ShelleyGenesisFile": "shelley-genesis.json"!"ShelleyGenesisFile": "'${NODE_CONFIG}'-shelley-genesis.json"!' \
-e 's!"ConwayGenesisFile": "conway-genesis.json"!"ConwayGenesisFile": "'${NODE_CONFIG}'-conway-genesis.json"!' \
-e "s/TraceMempool\": true/TraceMempool\": false/g" \
-e 's!"TraceBlockFetchDecisions": false!"TraceBlockFetchDecisions": true!' \
-e '/"defaultScribes": \[/a\ \[\n "FileSK",\n "logs/node.json"\n \],' \
-e '/"setupScribes": \[/a\ \{\n "scFormat": "ScJson",\n "scKind": "FileSK",\n "scName": "logs/node.json"\n \},' \
-e "s/127.0.0.1/0.0.0.0/g"
テストネットの場合はこちら
sed -i ${NODE_CONFIG}-config.json \
-e 's!"EnableP2P": true!"EnableP2P": false!' \
-e 's!"AlonzoGenesisFile": "alonzo-genesis.json"!"AlonzoGenesisFile": "'${NODE_CONFIG}'-alonzo-genesis.json"!' \
-e 's!"ByronGenesisFile": "byron-genesis.json"!"ByronGenesisFile": "'${NODE_CONFIG}'-byron-genesis.json"!' \
-e 's!"ShelleyGenesisFile": "shelley-genesis.json"!"ShelleyGenesisFile": "'${NODE_CONFIG}'-shelley-genesis.json"!' \
-e 's!"ConwayGenesisFile": "conway-genesis.json"!"ConwayGenesisFile": "'${NODE_CONFIG}'-conway-genesis.json"!' \
-e "s/TraceMempool\": true/TraceMempool\": false/g" \
-e 's!"TraceBlockFetchDecisions": false!"TraceBlockFetchDecisions": true!' \
-e '/"defaultScribes": \[/a\ \[\n "FileSK",\n "logs/node.json"\n \],' \
-e '/"setupScribes": \[/a\ \{\n "scFormat": "ScJson",\n "scKind": "FileSK",\n "scName": "logs/node.json"\n \},' \
-e "s/127.0.0.1/0.0.0.0/g"
sed -i ${NODE_CONFIG}-config.json \
-e 's!"AlonzoGenesisFile": "alonzo-genesis.json"!"AlonzoGenesisFile": "'${NODE_CONFIG}'-alonzo-genesis.json"!' \
-e 's!"ByronGenesisFile": "byron-genesis.json"!"ByronGenesisFile": "'${NODE_CONFIG}'-byron-genesis.json"!' \
-e 's!"ShelleyGenesisFile": "shelley-genesis.json"!"ShelleyGenesisFile": "'${NODE_CONFIG}'-shelley-genesis.json"!' \
-e 's!"ConwayGenesisFile": "conway-genesis.json"!"ConwayGenesisFile": "'${NODE_CONFIG}'-conway-genesis.json"!' \
-e "s/TraceMempool\": true/TraceMempool\": false/g" \
-e 's!"TraceBlockFetchDecisions": false!"TraceBlockFetchDecisions": true!' \
-e '/"defaultScribes": \[/a\ \[\n "FileSK",\n "logs/node.json"\n \],' \
-e '/"setupScribes": \[/a\ \{\n "scFormat": "ScJson",\n "scKind": "FileSK",\n "scName": "logs/node.json"\n \},' \
-e "s/127.0.0.1/0.0.0.0/g"
環境変数を追加する
echo export CARDANO_NODE_NETWORK_ID=mainnet >> $HOME/.bashrc
テストネットの場合はこちら
echo export CARDANO_NODE_NETWORK_ID=2 >> $HOME/.bashrc
echo export CARDANO_NODE_NETWORK_ID=1 >> $HOME/.bashrc
環境変数再読み込み
source $HOME/.bashrc
2-5.サーバー再起動¶
作業フォルダリネーム
前バージョンで使用していたバイナリフォルダをリネームし、バックアップとして保持します。最新バージョンを構築したフォルダをcardano-nodeとして使用します。
cd $HOME/git
mv cardano-node/ cardano-node-old/
mv cardano-node2/ cardano-node/
サーバーを再起動する
sudo reboot
SSH接続してDB再構築進捗を確認する
journalctl --unit=cardano-node --follow
DB再構築が入る場合は、
Progress:
が100%になるまで5時間~8時間以上かかる場合があります。
100%になるとDBは自動的に同期します。放置している場合は100%表示を見逃す場合がありますが問題ありません。
3.RSYNC+SSHアップデート¶
概要
■メリット
- 複数台のサーバーがある場合に、以下の処理を行うことでビルド時間の短縮やノードのダウンタイムを抑えることが出来ます。
■デメリット
- DBフォルダ転送を行う場合に転送元・転送先サーバーのディスク空き容量が200GB以上必要となります。
■事前準備
- RSYNCを使用する場合、最初に事前設定を行ってください
- 転送元サーバーで 2.通常アップデートを実施してください
- 転送先サーバーで 1.依存環境アップデートを実施してください
■転送内容を選べます
- バイナリのみ・・・cardano-node / cardano-cliのみを転送します
- バイナリ+DB・・・cardano-node / cardano-cli / 圧縮DBフォルダを転送します
3-1.転送元サーバー作業¶
▼転送内容を選択して下さい▼
確認
こちらの手順はcardano-node / cardano-cliのみを転送します
確認
この作業は1回で大丈夫です。
バイナリーファイルを転送フォルダ用にコピーする
mkdir $NODE_HOME/Transfer
cp $(find $HOME/git/cardano-node/dist-newstyle/build -type f -name "cardano-cli") $NODE_HOME/Transfer/cardano-cli
cp $(find $HOME/git/cardano-node/dist-newstyle/build -type f -name "cardano-node") $NODE_HOME/Transfer/cardano-node
バージョン確認
$NODE_HOME/Transfer/cardano-cli version
$NODE_HOME/Transfer/cardano-node version
cardano-cli 8.1.2 - linux-x86_64 - ghc-8.10
git rev d2d90b48c5577b4412d5c9c9968b55f8ab4b9767cardano-node 8.1.2 - linux-x86_64 - ghc-8.10
git rev d2d90b48c5577b4412d5c9c9968b55f8ab4b9767
確認
cardano-node / cardano-cli / 圧縮DBフォルダを転送します
容量確認 転送元・転送先サーバー両方で確認してください
df -h /usr
確認
この作業は1回で大丈夫です。
バイナリーファイルを転送フォルダ用にコピーする
mkdir $NODE_HOME/Transfer
cp $(find $HOME/git/cardano-node/dist-newstyle/build -type f -name "cardano-cli") $NODE_HOME/Transfer/cardano-cli
cp $(find $HOME/git/cardano-node/dist-newstyle/build -type f -name "cardano-node") $NODE_HOME/Transfer/cardano-node
バージョン確認
$NODE_HOME/Transfer/cardano-cli version
$NODE_HOME/Transfer/cardano-node version
cardano-cli 8.1.2 - linux-x86_64 - ghc-8.10
git rev d2d90b48c5577b4412d5c9c9968b55f8ab4b9767cardano-node 8.1.2 - linux-x86_64 - ghc-8.10
git rev d2d90b48c5577b4412d5c9c9968b55f8ab4b9767
ノードを停止する
sudo systemctl stop cardano-node
DBフォルダを圧縮する
新しいTMUXセッションを開く
tmux new -s tar
tar cvzf $NODE_HOME/Transfer/8.1.1-db.tar.gz -C $NODE_HOME db
圧縮が終了したらTMUXを閉じる
exit
ノードをスタートする
sudo systemctl start cardano-node
3-2.転送元から転送先へ転送¶
設定済みの転送先エイリアスを調べる
cat ~/.ssh/config
転送先エイリアスを指定する
変数for
に転送先エイリアスを代入する
for=xxxx
転送先エイリアスは、事前設定の 1-2.SSH設定ファイル作成 で設定した転送先Host名(エイリアス)を指定します。
バイナリファイルを転送する
rsync -P --rsh=ssh $NODE_HOME/Transfer/cardano-cli $for::Server/cardano-cli
転送が完了するまで待つ
rsync -P --rsh=ssh $NODE_HOME/Transfer/cardano-node $for::Server/cardano-node
転送が完了するまで待つ
新しいTMUXセッションを開く
tmux new -s rsync
設定済みの転送先エイリアスを調べる
cat ~/.ssh/config
転送先エイリアスを指定する
変数for
に転送先エイリアスを代入する
for=xxxx
転送先エイリアスは、事前設定の 1-2.SSH設定ファイル作成 で設定した転送先Host名(エイリアス)を指定します。
バイナリファイルを転送する
rsync -P --rsh=ssh $NODE_HOME/Transfer/cardano-cli $for::Server/cardano-cli
転送が完了するまで待つ
rsync -P --rsh=ssh $NODE_HOME/Transfer/cardano-node $for::Server/cardano-node
転送が完了するまで待つ
圧縮ファイルを転送する
rsync -P --rsh=ssh $NODE_HOME/Transfer/8.1.1-db.tar.gz $for::Server/8.1.1-db.tar.gz
転送が完了するまで待つ
3-3.転送先サーバー作業¶
ノードを停止する
sudo systemctl stop cardano-node
バイナリーファイルをシステムフォルダーへコピーする
sudo cp $NODE_HOME/cardano-cli /usr/local/bin/cardano-cli
sudo cp $NODE_HOME/cardano-node /usr/local/bin/cardano-node
cardano-cli version
cardano-node version
cardano-cli 8.1.2 - linux-x86_64 - ghc-8.10
git rev d2d90b48c5577b4412d5c9c9968b55f8ab4b9767cardano-node 8.1.2 - linux-x86_64 - ghc-8.10
git rev d2d90b48c5577b4412d5c9c9968b55f8ab4b9767
新しいTMUXセッションを開く
tmux new -s tar
SSDの空き容量を再確認する
df -h /usr
DBを解凍する
mkdir $NODE_HOME/temp
tar -xzvf $NODE_HOME/8.1.1-db.tar.gz -C $NODE_HOME/temp/
解凍が終わったらTMUXを閉じる
exit
ノードを停止する
sudo systemctl stop cardano-node
バイナリーファイルをシステムフォルダーへコピーする
sudo cp $NODE_HOME/cardano-cli /usr/local/bin/cardano-cli
sudo cp $NODE_HOME/cardano-node /usr/local/bin/cardano-node
cardano-cli version
cardano-node version
cardano-cli 8.1.2 - linux-x86_64 - ghc-8.10
git rev d2d90b48c5577b4412d5c9c9968b55f8ab4b9767cardano-node 8.1.2 - linux-x86_64 - ghc-8.10
git rev d2d90b48c5577b4412d5c9c9968b55f8ab4b9767
DBフォルダを入れ替える
mv $NODE_HOME/db $NODE_HOME/db_old
mv $NODE_HOME/temp/db $NODE_HOME/db
この項目は、1.35.シリーズからアップデートする場合のみ実施してください
設定ファイル追加と更新
cd $NODE_HOME
wget --no-use-server-timestamps -q https://book.world.dev.cardano.org/environments/${NODE_CONFIG}/conway-genesis.json -O ${NODE_CONFIG}-conway-genesis.json
wget --no-use-server-timestamps -q https://book.world.dev.cardano.org/environments/${NODE_CONFIG}/config.json -O ${NODE_CONFIG}-config.json
設定ファイルを書き換える
sed -i ${NODE_CONFIG}-config.json \
-e 's!"AlonzoGenesisFile": "alonzo-genesis.json"!"AlonzoGenesisFile": "'${NODE_CONFIG}'-alonzo-genesis.json"!' \
-e 's!"ByronGenesisFile": "byron-genesis.json"!"ByronGenesisFile": "'${NODE_CONFIG}'-byron-genesis.json"!' \
-e 's!"ShelleyGenesisFile": "shelley-genesis.json"!"ShelleyGenesisFile": "'${NODE_CONFIG}'-shelley-genesis.json"!' \
-e 's!"ConwayGenesisFile": "conway-genesis.json"!"ConwayGenesisFile": "'${NODE_CONFIG}'-conway-genesis.json"!' \
-e "s/TraceMempool\": true/TraceMempool\": false/g" \
-e 's!"TraceBlockFetchDecisions": false!"TraceBlockFetchDecisions": true!' \
-e '/"defaultScribes": \[/a\ \[\n "FileSK",\n "logs/node.json"\n \],' \
-e '/"setupScribes": \[/a\ \{\n "scFormat": "ScJson",\n "scKind": "FileSK",\n "scName": "logs/node.json"\n \},' \
-e "s/127.0.0.1/0.0.0.0/g"
sed -i ${NODE_CONFIG}-config.json \
-e '2i \ "EnableP2P": true,' \
-e 's!"AlonzoGenesisFile": "alonzo-genesis.json"!"AlonzoGenesisFile": "'${NODE_CONFIG}'-alonzo-genesis.json"!' \
-e 's!"ByronGenesisFile": "byron-genesis.json"!"ByronGenesisFile": "'${NODE_CONFIG}'-byron-genesis.json"!' \
-e 's!"ShelleyGenesisFile": "shelley-genesis.json"!"ShelleyGenesisFile": "'${NODE_CONFIG}'-shelley-genesis.json"!' \
-e 's!"ConwayGenesisFile": "conway-genesis.json"!"ConwayGenesisFile": "'${NODE_CONFIG}'-conway-genesis.json"!' \
-e "s/TraceMempool\": true/TraceMempool\": false/g" \
-e 's!"TraceBlockFetchDecisions": false!"TraceBlockFetchDecisions": true!' \
-e '/"defaultScribes": \[/a\ \[\n "FileSK",\n "logs/node.json"\n \],' \
-e '/"setupScribes": \[/a\ \{\n "scFormat": "ScJson",\n "scKind": "FileSK",\n "scName": "logs/node.json"\n \},' \
-e "s/127.0.0.1/0.0.0.0/g"
テストネットの場合はこちら
sed -i ${NODE_CONFIG}-config.json \
-e 's!"EnableP2P": true!"EnableP2P": false!' \
-e 's!"AlonzoGenesisFile": "alonzo-genesis.json"!"AlonzoGenesisFile": "'${NODE_CONFIG}'-alonzo-genesis.json"!' \
-e 's!"ByronGenesisFile": "byron-genesis.json"!"ByronGenesisFile": "'${NODE_CONFIG}'-byron-genesis.json"!' \
-e 's!"ShelleyGenesisFile": "shelley-genesis.json"!"ShelleyGenesisFile": "'${NODE_CONFIG}'-shelley-genesis.json"!' \
-e 's!"ConwayGenesisFile": "conway-genesis.json"!"ConwayGenesisFile": "'${NODE_CONFIG}'-conway-genesis.json"!' \
-e "s/TraceMempool\": true/TraceMempool\": false/g" \
-e 's!"TraceBlockFetchDecisions": false!"TraceBlockFetchDecisions": true!' \
-e '/"defaultScribes": \[/a\ \[\n "FileSK",\n "logs/node.json"\n \],' \
-e '/"setupScribes": \[/a\ \{\n "scFormat": "ScJson",\n "scKind": "FileSK",\n "scName": "logs/node.json"\n \},' \
-e "s/127.0.0.1/0.0.0.0/g"
sed -i ${NODE_CONFIG}-config.json \
-e 's!"AlonzoGenesisFile": "alonzo-genesis.json"!"AlonzoGenesisFile": "'${NODE_CONFIG}'-alonzo-genesis.json"!' \
-e 's!"ByronGenesisFile": "byron-genesis.json"!"ByronGenesisFile": "'${NODE_CONFIG}'-byron-genesis.json"!' \
-e 's!"ShelleyGenesisFile": "shelley-genesis.json"!"ShelleyGenesisFile": "'${NODE_CONFIG}'-shelley-genesis.json"!' \
-e 's!"ConwayGenesisFile": "conway-genesis.json"!"ConwayGenesisFile": "'${NODE_CONFIG}'-conway-genesis.json"!' \
-e "s/TraceMempool\": true/TraceMempool\": false/g" \
-e 's!"TraceBlockFetchDecisions": false!"TraceBlockFetchDecisions": true!' \
-e '/"defaultScribes": \[/a\ \[\n "FileSK",\n "logs/node.json"\n \],' \
-e '/"setupScribes": \[/a\ \{\n "scFormat": "ScJson",\n "scKind": "FileSK",\n "scName": "logs/node.json"\n \},' \
-e "s/127.0.0.1/0.0.0.0/g"
環境変数を追加する
echo export CARDANO_NODE_NETWORK_ID=mainnet >> $HOME/.bashrc
テストネットの場合はこちら
echo export CARDANO_NODE_NETWORK_ID=2 >> $HOME/.bashrc
echo export CARDANO_NODE_NETWORK_ID=1 >> $HOME/.bashrc
環境変数再読み込み
source $HOME/.bashrc
サーバーを再起動する
sudo reboot
SSH接続してノード同期状況を確認する
journalctl --unit=cardano-node --follow
Progress:
が100%になるまで待ちます。
100%になるとDBは自動的に同期します。放置している場合は100%表示を見逃す場合がありますが問題ありません。
バイナリーファイルを移動する
cd $HOME/git
rm -rf cardano-node-old/
mv $HOME/git/cardano-node/ $HOME/git/cardano-node-old/
mkdir cardano-node
mv $NODE_HOME/cardano-cli $HOME/git/cardano-node/
mv $NODE_HOME/cardano-node $HOME/git/cardano-node/
旧DB削除の確認
<バイナリ+DBで転送した場合のみ> ノードの同期が成功しブロック生成に成功し数エポック様子を見たあと、転送用ファイル・バックアップDBを削除してください
rm -rf $NODE_HOME/Transfer
rm -rf $NODE_HOME/db_old
rm $NODE_HOME/8.1.1-db.tar.gz
4. サービス起動確認(BPのみ)¶
BPノードが完全に同期した後、サービス起動状態を確認する
tmux ls
ヒント
ノードを再起動してから、約20秒後に5プログラムがバックグラウンドで起動中であればOKです
- cncli
- leaderlog
- validate
- logmonitor
- blockcheck(ブロック生成ステータス通知を導入している場合)
tmux a -t cncli
「100.00% synced」になるまで待ちます。 100%になったら、Ctrl+bを押した後に d を押し元の画面に戻ります (バックグラウンド実行に切り替え)
5.Grafanaダッシュボード修正¶
この項目は、1.35.シリーズからアップデートする場合のみ実施してください
ピアパネルのMetricsを修正する
ピア
パネルのメニューからEditを開き、metrics browser
欄を以下の文字に置き換える
cardano_node_metrics_peers_connectedPeers_int
アラート修正
1.ダッシュボード左メニュー→「Alerting」→「Alert rules」→「ノード監視」の中にある「BPリレー接続監視」をEdit(ペンマーク)で開く
2.Metrics browser
を以下の文に置き換える
cardano_node_metrics_peers_connectedPeers_int{alias="block-producing-node"}
6.トポロジーアップデータ修正¶
この項目は、リレーノードのみ実施してください
トポロジー更新ファイルに、バックアップコマンドを追加
sed -i '5i cp ${NODE_HOME}/${NODE_CONFIG}-topology.json ${NODE_HOME}/${NODE_CONFIG}-topology-bk.json' $NODE_HOME/relay-topology_pull.sh
7. エアギャップアップデート¶
SFTP機能ソフト導入
ファイル転送に便利なSFTP機能ソフトの導入手順はこちら
7-1.バイナリファイルコピー¶
SFTP機能ソフト(Filezillaなど)で転送元サーバーに接続し以下をダウンロードする
- /home/usr/cnode/Transfer/cardano-cli
をローカルパソコンにダウンロードします
(エアギャップUbuntuとの共有フォルダ)
2.通常アップデートを終えたBPかリレーサーバーで以下を実行する
sudo cp $(find $HOME/git/cardano-node/dist-newstyle/build -type f -name "cardano-cli") ~/cardano-cli
SFTP機能ソフト(Filezillaなど)で転送元サーバーに接続し、以下をダウンロードする
- /home/usr/cardano-cli
をローカルパソコンにダウンロードします
(エアギャップUbuntuとの共有フォルダ)
ヒント
R-loginの転送機能が遅いので、大容量ファイルをダウン・アップロードする場合は、SFTP接続可能なソフトを使用すると効率的です。(FileZilaなど)
エアギャップマシンにファイルを入れる
- $HOME/git/cardano-node2/ に
cardano-cli
を入れる
(cardano-node2が無ければ作成する)
7-2.インストール¶
エアギャップマシンで以下を実行する
cardano-cliをシステムフォルダへコピーする
sudo cp $(find $HOME/git/cardano-node2 -type f -name "cardano-cli") /usr/local/bin/cardano-cli
この項目は、1.35.シリーズからアップデートする場合のみ実施してください
環境変数を追加する
echo export CARDANO_NODE_NETWORK_ID=mainnet >> $HOME/.bashrc
テストネットの場合はこちら
echo export CARDANO_NODE_NETWORK_ID=2 >> $HOME/.bashrc
echo export CARDANO_NODE_NETWORK_ID=1 >> $HOME/.bashrc
環境変数再読み込み
source $HOME/.bashrc
7-3.バージョン確認¶
cardano-cli version
以下の戻り値を確認する
cardano-cli 8.1.2 - linux-x86_64 - ghc-8.10
git rev d2d90b48c5577b4412d5c9c9968b55f8ab4b9767
確認
エアギャップではcardano-nodeは使用しないため転送してもしなくてもOKです。