サーバー障害と移行

私の Discourse ウェブサイトをホストしている DigitalOcean サーバーに何らかの問題が発生し、DigitalOcean はウェブサイトを別のサーバーに移行しようとしています。私は彼らと問題について連絡を取り合っていますが、Discourse コミュニティで以前に同様の問題を経験した方がいるか確認したくて投稿しました。

この状況について何かアドバイスはありますか?このプロセスが完了した際に通常は通知が来るのでしょうか?まだメールへの返信がありません。私のウェブサイトは数日間完全にダウンしており、コミュニティにとって良い状況ではありません。Discourse 側で変更を加えたわけではないので、問題が DigitalOcean サーバーの問題によって発生したことは確実です。私の方で何か特定の対応をするべきでしょうか、それとももう少し待つべきでしょうか?

ドロプレットをオフにしてからオンにし、さらに ./launcher rebuild app で Discourse を再構築しました。再構築後に以下のエラーが発生します:

Error response from daemon: driver failed programming external connectivity on endpoint app (fd1221330787160dee95f94a1256ca0dc8ddb8be2bc3c4d576ab54d3b768613a): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use.

DigitalOcean からのメール:

複数のドロプレットをホストしている物理マシンに問題があることが判明しました。影響を受けるドロプレットは以下の通りです。中断を最小限に抑えるため、これらのドロプレットをより健全な物理マシンへ移行します。移行中は、電源オフ、サイズ変更、ドロプレットの破棄の試行など、コントロールパネルおよび API イベントは影響を受けるドロプレットに対して成功しません。

ダウンタイムを最小限に抑えるため、可能な限りライブ移行を試みます。ライブ移行ではダウンタイムは発生しませんが、ディスク I/O のわずかなパフォーマンス低下や、ネットワークが新しい物理ホストに切り替わる際に 1 秒未満のパケット損失が発生する可能性があります。

ライブ移行ができない場合、オフライン移行を実施します。その場合、ドロプレットは電源がオフになり、移行ウィンドウ中にオフラインで移行されます。

私の推測では、Digital Ocean の問題は関係なく、サーバーに別の Web サーバーがインストールされているか、実行されている可能性があります。Apache や nginx はインストールされていますか?Discourse が実行されていない場合でも、サイト上で何か Web サーバーが起動していますか?

当初セットアップする際に、DigitalOcean の Discourse 自動インストーラーを使用しました。これには Ubuntu とそのパッケージに含まれる他のソフトウェアが含まれています。このドロプレットには他のウェブサイトは存在しません。nginx がアクティブで動作しているようですが、Apache のステータスを確認するとエラーが返されます。

Firefox でダウンしているウェブサイトにアクセスすると、以下のような表示が現れます:

Error 521Ray ID: 5c686964ad310d1a • 2020-08-22 00:17:35 UTC
Web server is down

Browser - Cloudflare - Host
Working - Working - Error

Apache が動作しているか確認するために systemctl status apache2 コードを実行したところ、以下のように表示されました:

    ● apache2.service - The Apache HTTP Server
       Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset:
      Drop-In: /lib/systemd/system/apache2.service.d
               └─apache2-systemd.conf
       Active: failed (Result: exit-code) since Fri 2020-08-21 16:16:24 UTC; 7h ago
      Process: 912 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILUR
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 apachectl[912]: AH0055
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 apachectl[912]: (98)Ad
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 apachectl[912]: (98)Ad
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 apachectl[912]: no lis
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 apachectl[912]: AH0001
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 apachectl[912]: Action
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 apachectl[912]: The Ap
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 systemd[1]: apache2.se
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 systemd[1]: apache2.se
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 systemd[1]: Failed to 
lines 1-17/17 (END)

nginx の状態を確認するために systemctl status nginx コードを実行した結果は以下の通りです:

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en
   Active: active (running) since Fri 2020-08-21 16:16:24 UTC; 8h ago
     Docs: man:nginx(8)
  Process: 972 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=
  Process: 917 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process o
 Main PID: 976 (nginx)
    Tasks: 2 (limit: 1108)
   CGroup: /system.slice/nginx.service
           ├─976 nginx: master process /usr/sbin/nginx -g daemon on; master_proc
           └─977 nginx: worker process

Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 systemd[1]: Starting A
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 systemd[1]: nginx.serv
Aug 21 16:16:24 discourse-beta-ubuntu-s-1vcpu-1gb-nyc1-01 systemd[1]: Started A
lines 1-15/15 (END)

そのメールを見ると、ただ待って相手の動向を見るだけでも良さそうです。ただし、念のためオフサイトバックアップを必ず用意しておくことをお勧めします!

一般的には、公式のインストール方法を使用する方がはるかに優れています。そのドロプレットを Discourse 以外にも併用していないのであれば、この機会に新しいドロプレットを新規作成し、以下の公式サポートされている手順に従ってインストールすることをお勧めします:discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub

その後、旧インスタンスからバックアップをダウンロードし、新しいインスタンスにアップロードすれば、公式サポートを受けられる環境で再び運用を開始できます。その方がメンテナンスも容易になります。