Gift history
Please access after login.


Wait a moment...

【Symbol Mainnet】Symbolノード運用格闘記(ノード崩壊編)【ShizuiNet】

871
0
2021-03-26 14:56:32
0.00 mXYM
(0)

おひさしぶりです。目指せ北海道です。

 

Symbol-bootstrap 1.0.2へのアップデート時に、カスタム設定や、間違ったエラー対処などの影響によって、Symbolのメインネットに参加していたibone73ノードが停止しました。ノードを運用する上で気をつけるのは、ミスや不具合によりノードが停止してしまわないようにすること。もし停止しても復旧した時に完全な形に戻せるようにしておくこと。今回のトラブルは、比較的経験のあるLinuxユーザーがちょっとした気の緩みからやりがちな失敗談ですので、絶対にこんなことはやってはいけないよと、後進のために記録を残すことにしました。

 

きっかけは、bootstrap 1.0.2へのアップデートでした。とりあえずインストールまでは--upgradeオプションを付けずにおこなって、問題がないことを確認しました。1.0.2のアップデート内容は以下の通り。

  • Fixed link (--unlink) command when voting properties changes.
  • Broker ports (7902) are closed by default in docker compose.
  • Peer role is selected based on syncsource configuration and not on the harvesting flag.

Port 7902はdockerによって開かれてBrokerが使用するポートで、これを閉じるように設定したというのが主要な変更です。それ以外にも、1.0.1でデフォルトの設定がいろいろ間違っていたのも修正されています。とりあえずvotingに参加していないノードにとっては、必ずしも必要でないように思われました。しかも、Allnodesでは委任ハーベストの設定が消えたなどの情報もあり、このアップデートは見送った方が良いという心の声も聞こえていました。

 

しかし、そのようなトラブルの予感がする時こそ、誰かがやらねばなりません。Allnodesは細かな設定上のトラブル解決法などはノウハウですから公開しないでしょうし、わざわざ今得られている委任ハーベストの報酬を捨てるリスクを冒す必要などないから、普通のノード運用者も誰もやりたがりません。

 

だから、やってみました。自分なら多少のトラブルは乗り越えられるだろうという傲りもありました。

 

symbol-bootstrap config -p mainnet -a dual --upgrade -c mypreset.yml 

 

symbol-bootstrap config -p mainnet -a dual --upgrade -c mypreset.yml 
                         _             _         _                    _         _                      
  ___  _   _  _ __ ___  | |__    ___  | |       | |__    ___    ___  | |_  ___ | |_  _ __  __ _  _ __  
 / __|| | | || '_ ` _ \ | '_ \  / _ \ | | _____ | '_ \  / _ \  / _ \ | __|/ __|| __|| '__|/ _` || '_ \ 
 \__ \| |_| || | | | | || |_) || (_) || ||_____|| |_) || (_) || (_) || |_ \__ \| |_ | |  | (_| || |_) |
 |___/ \__, ||_| |_| |_||_.__/  \___/ |_|       |_.__/  \___/  \___/  \__||___/ \__||_|   \__,_|| .__/ 
       |___/                                                                                    |_|    
? Enter password to use to encrypt and decrypt custom presets, addresses.yml, and preset.yml files. When providing a password, private keys will be encrypted. Ke
ep this password in a secure place! **********
2021-03-25T04:08:38.202Z info     Password has been provided
2021-03-25T04:08:38.459Z info     Upgrading configuration...
2021-03-25T04:08:38.491Z info     Generating config from preset mainnet
2021-03-25T04:08:38.492Z info     Assembly preset dual
2021-03-25T04:08:38.492Z info     Custom preset file mypreset.yml
2021-03-25T04:08:38.545Z info     Reusing Main account NCPPDLXGYBHNPQAXQ6RTNS3T46A7FNTXDFBD43Y
2021-03-25T04:08:38.553Z info     Reusing Transport account NA7WPAE4S2GSHKYF6O7JVSVQ6TJTFO5EVSEGOMQ
2021-03-25T04:08:38.565Z info     Reusing Remote account NBKIRGXRGDK74XDSSGDWIJ6YIY5IN2N6KJWP6FQ
2021-03-25T04:08:38.571Z info     Reusing VRF account NB23ZH4SSDGQQVQBT7WNVTKFRKIJMEBGGUZLNKY
2021-03-25T04:08:38.590Z info     Deleting folder target/nodes/node/server-config
2021-03-25T04:08:38.609Z info     Deleting folder target/nodes/node/broker-config
2021-03-25T04:08:38.616Z info     Deleting folder target/nodes/node/seed
2021-03-25T04:08:38.669Z info     Deleting folder target/gateways/rest-gateway
2021-03-25T04:08:38.848Z info     Deleting folder target/nodes/node/cert
2021-03-25T04:08:38.876Z info     User for docker resolved: 1000:1000
2021-03-25T04:08:38.876Z info     Running image using Exec: symbolplatform/symbol-server:tools-gcc-1.0.0.0 bash createNodeCertificates.sh
2021-03-25T04:08:41.196Z info     Certificate for node node created
2021-03-25T04:08:41.204Z info     Generating node server configuration
2021-03-25T04:08:41.280Z info     Generating broker broker configuration
2021-03-25T04:08:41.321Z info     Non-voting node node.
2021-03-25T04:08:41.328Z info     Upgrading genesis on upgrade!
2021-03-25T04:08:41.328Z info     Deleting folder target/nemesis/seed
2021-03-25T04:08:41.631Z info     Configuration generated.

 

見たところ、正常にアップデートされたように見えます。しかし、次にcomposeをおこなった時に、罠にはまります。

 

tezukalab@ibone73:~/symbol$ symbol-bootstrap compose
                         _             _         _                    _         _                      
  ___  _   _  _ __ ___  | |__    ___  | |       | |__    ___    ___  | |_  ___ | |_  _ __  __ _  _ __  
 / __|| | | || '_ ` _ \ | '_ \  / _ \ | | _____ | '_ \  / _ \  / _ \ | __|/ __|| __|| '__|/ _` || '_ \ 
 \__ \| |_| || | | | | || |_) || (_) || ||_____|| |_) || (_) || (_) || |_ \__ \| |_ | |  | (_| || |_) |
 |___/ \__, ||_| |_| |_||_.__/  \___/ |_|       |_.__/  \___/  \___/  \__||___/ \__||_|   \__,_|| .__/ 
       |___/                                                                                    |_|    
? Enter password to use to encrypt and decrypt custom presets, addresses.yml, and preset.yml files. When providing a password, private keys will be encrypted. Ke
ep this password in a secure place! **********
2021-03-25T04:09:49.082Z info     Password has been provided
2021-03-25T04:09:49.128Z info     /home/tezukalab/symbol/target/docker/docker-compose.yml already exist. Reusing. (run --upgrade to drop and upgrade)

 

分かりますでしょうか。一番最後の行に、docker-compose.ymlを再利用するので、必要なら--upgradeしてくださいとあります。1.0.2ではdockerが7902ポートを使わないようにする変更が含まれていましたので、迷わず--upgradeしました。

 

symbol-bootstrap compose --upgrade
                         _             _         _                    _         _                      
  ___  _   _  _ __ ___  | |__    ___  | |       | |__    ___    ___  | |_  ___ | |_  _ __  __ _  _ __  
 / __|| | | || '_ ` _ \ | '_ \  / _ \ | | _____ | '_ \  / _ \  / _ \ | __|/ __|| __|| '__|/ _` || '_ \ 
 \__ \| |_| || | | | | || |_) || (_) || ||_____|| |_) || (_) || (_) || |_ \__ \| |_ | |  | (_| || |_) |
 |___/ \__, ||_| |_| |_||_.__/  \___/ |_|       |_.__/  \___/  \___/  \__||___/ \__||_|   \__,_|| .__/ 
       |___/                                                                                    |_|    
? Enter password to use to encrypt and decrypt custom presets, addresses.yml, and preset.yml files. When providing a password, private keys will be encrypted. Ke
ep this password in a secure place! **********
2021-03-25T04:10:05.616Z info     Password has been provided
2021-03-25T04:10:05.663Z info     Deleting folder /home/tezukalab/symbol/target/docker
    Error: EACCES: permission denied, unlink '/home/tezukalab/symbol/target/docker/ssl-certs/default_server/default_server.crt'
    Code: EACCES

 

これが、最初のエラーメッセージです。dockerフォルダーを削除しようとしたけれども、内部にあるssl-certsディレクトリがパーミッションエラーを出しています。つまりbootstrapのユーザーである僕が、root権限で作られたssl-certsディレクトリを変更しようとしたわけです。このような現象は、testnetの時から起きており、有名どころではdbディレクトリがよくパーミッションエラーの原因となっていました。

 

sudo symbol-bootstrap compose --upgrade
                         _             _         _                    _         _                      
  ___  _   _  _ __ ___  | |__    ___  | |       | |__    ___    ___  | |_  ___ | |_  _ __  __ _  _ __  
 / __|| | | || '_ ` _ \ | '_ \  / _ \ | | _____ | '_ \  / _ \  / _ \ | __|/ __|| __|| '__|/ _` || '_ \ 
 \__ \| |_| || | | | | || |_) || (_) || ||_____|| |_) || (_) || (_) || |_ \__ \| |_ | |  | (_| || |_) |
 |___/ \__, ||_| |_| |_||_.__/  \___/ |_|       |_.__/  \___/  \___/  \__||___/ \__||_|   \__,_|| .__/ 
       |___/                                                                                    |_|    
? Enter password to use to encrypt and decrypt custom presets, addresses.yml, and preset.yml files. When providing a password, private keys will be encrypted. Ke
ep this password in a secure place! **********
2021-03-25T04:10:27.173Z info     Password has been provided
2021-03-25T04:10:27.219Z info     Deleting folder /home/tezukalab/symbol/target/docker
2021-03-25T04:10:27.262Z info     User for docker resolved: 0:0
2021-03-25T04:10:27.263Z error    YOU ARE RUNNING BOOTSTRAP AS ROOT!!!! THIS IS NOT RECOMMENDED!!!
2021-03-25T04:10:27.263Z info     Creating docker-compose.yml from last used profile.
2021-03-25T04:10:27.271Z info     The docker-compose.yml file created /home/tezukalab/symbol/target/docker/docker-compose.yml

 

こういう場合には、root権限でdockerディレクトリを全部消してやりなおすというのが正攻法なのですが、僕は非推奨のroot権限でのbootstrap実行をしてしまいました(失敗その1)。その結果、rootで実行しているよというエラーは出ていますが、bootstrapによるアップグレードには成功しているように見えるログが出ました。

 

symbol-bootstrap compose --upgrade
                         _             _         _                    _         _                      
  ___  _   _  _ __ ___  | |__    ___  | |       | |__    ___    ___  | |_  ___ | |_  _ __  __ _  _ __  
 / __|| | | || '_ ` _ \ | '_ \  / _ \ | | _____ | '_ \  / _ \  / _ \ | __|/ __|| __|| '__|/ _` || '_ \ 
 \__ \| |_| || | | | | || |_) || (_) || ||_____|| |_) || (_) || (_) || |_ \__ \| |_ | |  | (_| || |_) |
 |___/ \__, ||_| |_| |_||_.__/  \___/ |_|       |_.__/  \___/  \___/  \__||___/ \__||_|   \__,_|| .__/ 
       |___/                                                                                    |_|    
? Enter password to use to encrypt and decrypt custom presets, addresses.yml, and preset.yml files. When providing a password, private keys will be encrypted. Ke
ep this password in a secure place! **********
2021-03-25T04:10:52.801Z info     Password has been provided
2021-03-25T04:10:52.845Z info     Deleting folder /home/tezukalab/symbol/target/docker
    Error: EACCES: permission denied, unlink '/home/tezukalab/symbol/target/docker/docker-compose.yml'
    Code: EACCES

 

しかし、もう一度ユーザー権限でアップグレードをかけてみると、今度はdocker-compose.ymlという重要ファイルがルート権限でしかアクセスできなくなりました。ここで僕の長年のLinux経験から来る悪い癖が出ました。パーミッションなんて変えちゃえばいい(失敗その2)。

sudo chmod 777 docker-compose.yml

これは、Linuxを長く扱っている人が、パーミッションエラーと遭遇した時に自動的に打ち込んでしまうコマンドです。実際多くのパーミッションエラーはこれで解決したりします。しかし、失敗した時には重大な問題を引き起こす可能性のある怖いコマンドでもあります。見かけ上の問題は解決していると思われたので、docker-compose.ymlにhttps化のためのhttps-portalの設定を追記(失敗その3)して、ノードを起動しました。

 

symbol-bootstrap run
                         _             _         _                    _         _                      
  ___  _   _  _ __ ___  | |__    ___  | |       | |__    ___    ___  | |_  ___ | |_  _ __  __ _  _ __  
 / __|| | | || '_ ` _ \ | '_ \  / _ \ | | _____ | '_ \  / _ \  / _ \ | __|/ __|| __|| '__|/ _` || '_ \ 
 \__ \| |_| || | | | | || |_) || (_) || ||_____|| |_) || (_) || (_) || |_ \__ \| |_ | |  | (_| || |_) |
 |___/ \__, ||_| |_| |_||_.__/  \___/ |_|       |_.__/  \___/  \___/  \__||___/ \__||_|   \__,_|| .__/ 
       |___/                                                                                    |_|    
    Error: EACCES: permission denied, mkdir 'target/docker/ssl-certs'
    Code: EACCES

 

分かりますでしょうか。上でroot権限で無理やり通した--upgradeが、dockerディレクトリもroot権限でしか操作できないようにしたために起きたと思われるパーミッションエラーです。ここでもう一度禁断の一手を繰り出してしまいました(失敗その4)。

 

sudo chmod 777 docker

 

ここでノードを立ち上げてみたところ、最初はうまく立ち上がった様にみえたのですが、

 

 

node, brokerがダウンして、mongoへのアクセスも問題を抱えた状態になりました。この時点で、データベースや設定に予想できないダメージを受けたと考えられたため、ノードを一旦すべてリセットして、再起動すべきだという結論に達しました(次回に続く)。

Writer
歯の神経の中にいる「歯髄(しずい)細胞」を再生医療に活用するための研究をしています。再生医療の実用化に足りないものは細胞のトレーサビリティだと気づき、Symbolのブロックチェーン技術を使って、細胞の流通や製造管理のための「ShizuiNet」を開発中。現在、実用化のための大学発ベンチャー起業を準備しています。しずいノード(symbol.shizuilab.com)を運用しており、委任ハーベスト収入は研究開発費として使わせていただきます。下記リンクからノード実績を御覧いただけます。

Comment
Login required to post comment
Loading...
https://symbol-sakura-16.next-web-technology.com:3001,https://symbol.harvest-monitor.com:3001,https://hideyoshi-node.net:3001,https://harvest-01.symbol.farm:3001,https://criptian-xym-node.net:3001,https://35665.xym.stir-hosyu.com:3001,https://yuna.keshet.finance:3001,https://cryptocat-xym-node.com:3001,https://misaki-xym.com:3001,https://ik1-305-12844.vs.sakura.ne.jp:3001,https://17107.xym.stir-hosyu.com:3001,https://23639.xym.stir-hosyu.com:3001,https://sym-main-01.opening-line.jp:3001,https://sym-main-02.opening-line.jp:3001,https://sym-main-03.opening-line.jp:3001,https://sym-main-04.opening-line.jp:3001,https://sym-main-05.opening-line.jp:3001,https://sym-main-06.opening-line.jp:3001,https://sym-main-07.opening-line.jp:3001,https://sym-main-08.opening-line.jp:3001,https://sym-main-09.opening-line.jp:3001,https://sym-main-10.opening-line.jp:3001,https://symbol-node-01.kokichi.tokyo:3001,https://50038.xym.stir-hosyu.com:3001,https://27423.xym.stir-hosyu.com:3001,https://angel.vistiel-arch.jp:3001,https://xym.stakeme.tokyo:3001,https://00-symbol-node.yagiyoshi.com:3001,
6BED913FA20223F8,051FAEC15105C808,73019335A785A3AE,5289A9B0DBB7EB25,6B245EAF1302E444,2C4A4893229DD0A9,63509D495CAD7B80,481D74291A71FD1F,009388A38C91A8B2,4E94920841641B77,027C6AD49DE2C9F9,