コンテンツにスキップ

ノードアップデートマニュアル

概要

このガイドは ノードバージョン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バージョン確認
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
TMUXセッション内(緑帯が表示されてる状態)で
ソースコードダウンロード(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 d2d90b48c5577b4412d5c9c9968b55f8ab4b9767

cardano-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 d2d90b48c5577b4412d5c9c9968b55f8ab4b9767

cardano-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以上必要となります。

■事前準備

■転送内容を選べます

  • バイナリのみ・・・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 d2d90b48c5577b4412d5c9c9968b55f8ab4b9767

cardano-node 8.1.2 - linux-x86_64 - ghc-8.10
git rev d2d90b48c5577b4412d5c9c9968b55f8ab4b9767

確認

cardano-node / cardano-cli / 圧縮DBフォルダを転送します

容量確認 転送元・転送先サーバー両方で確認してください

df -h /usr
Availが200GB以上あることを確認してください。

確認

この作業は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 d2d90b48c5577b4412d5c9c9968b55f8ab4b9767

cardano-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 d2d90b48c5577b4412d5c9c9968b55f8ab4b9767

cardano-node 8.1.2 - linux-x86_64 - ghc-8.10
git rev d2d90b48c5577b4412d5c9c9968b55f8ab4b9767

新しいTMUXセッションを開く

tmux new -s tar

SSDの空き容量を再確認する

df -h /usr
Availが140GB以上あることを確認してください。

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 d2d90b48c5577b4412d5c9c9968b55f8ab4b9767

cardano-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です。