3.3へのアップデートが失敗しています

UI を使用してアップグレードを試みましたが、3.3.0.beta2-dev update error で説明されているように失敗しました。
そのため、バックアップからドロップレットを復元し、手動でアップグレードを試みました。

cd /var/discourse
git pull
./launcher rebuild app

これにより、次のようになります。

WARNING: Docker version 20.10.7 deprecated, recommend upgrade to 24.0.7 or newer.
x86_64 arch detected.

WARNING: We are about to start downloading the Discourse base image
This process may take anywhere between a few minutes to an hour, depending on your network speed

Please be patient

2.0.20240825-0027: Pulling from discourse/base
e4fff0779e6d: Pulling fs layer 
04dda0e597e7: Pulling fs layer 
0b0ac7902d91: Pulling fs layer 
1ea0327cd622: Waiting 
459f11cf96b2: Waiting 
cd49b55154ee: Waiting 
4f4fb700ef54: Pull complete 
890a63bee26b: Pull complete 
1d239a1092e9: Pull complete 
7439767d748f: Pull complete 
19e63282f9d1: Pull complete 
6da4866029f1: Pull complete 
3274548c87f4: Pull complete 
fb2589b81eef: Pull complete 
da453ab7ba03: Pull complete 
260969aca4e8: Pull complete 
0c7927423a10: Pull complete 
cfdfd8bdc03e: Pull complete 
f837c184a2c0: Pull complete 
d14903daf553: Pull complete 
01422fc4dc02: Pull complete 
e918b15c8f19: Pull complete 
3202b43401af: Pull complete 
3fa0a48e923e: Pull complete 
2f1f96b416a1: Pull complete 
b5376d8069b5: Pull complete 
259e102648be: Pull complete 
807236570b2a: Pull complete 
e98845c05b05: Pull complete 
578a5e3e249f: Pull complete 
6b0bf88c86e8: Pull complete 
9551a14ee15e: Pull complete 
8bbcc4c7a11d: Pull complete 
5aff35532071: Pull complete 
f73f45300530: Pull complete 
42888ce727c0: Pull complete 
e8467a663928: Pull complete 
d2fb91f4643c: Pull complete 
88fc9778a448: Pull complete 
2a19d28a5a17: Pull complete 
6a2d56837370: Pull complete 
933885f686e0: Pull complete 
aecf6df6a6bb: Pull complete 
33fcdcfe61e2: Pull complete 
12726a4d34c8: Pull complete 
Digest: sha256:6de68cb49198b5281f79ed9401b3fe818c854d220dcf0238549fe2f2adb19146
Status: Downloaded newer image for discourse/base:2.0.20240825-0027
docker.io/discourse/base:2.0.20240825-0027
WARNING: containers/app.yml file is world-readable. You can secure this file by running: chmod o-rwx containers/app.yml
Ensuring launcher is up to date
Fetching origin
Launcher is up-to-date
Stopping old container
+ /usr/bin/docker stop -t 600 app
app
2.0.20240825-0027: Pulling from discourse/base
Digest: sha256:6de68cb49198b5281f79ed9401b3fe818c854d220dcf0238549fe2f2adb19146
Status: Image is up to date for discourse/base:2.0.20240825-0027
docker.io/discourse/base:2.0.20240825-0027
/usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
/usr/local/bin/pups --stdin
I, [2024-10-15T06:14:37.390458 #1]  INFO -- : Reading from stdin
I, [2024-10-15T06:14:37.395803 #1]  INFO -- : > echo cron is now included in base image, remove from templates
I, [2024-10-15T06:14:37.398391 #1]  INFO -- : cron is now included in base image, remove from templates

I, [2024-10-15T06:14:37.408024 #1]  INFO -- : File > /etc/service/postgres/run  chmod: +x  chown: 
I, [2024-10-15T06:14:37.412237 #1]  INFO -- : File > /etc/service/postgres/log/run  chmod: +x  chown: 
I, [2024-10-15T06:14:37.416506 #1]  INFO -- : File > /etc/runit/3.d/99-postgres  chmod: +x  chown: 
I, [2024-10-15T06:14:37.420758 #1]  INFO -- : File > /root/install_postgres  chmod: +x  chown: 
I, [2024-10-15T06:14:37.424824 #1]  INFO -- : File > /root/upgrade_postgres  chmod: +x  chown: 
I, [2024-10-15T06:14:37.425837 #1]  INFO -- : Replacing data_directory = '/var/lib/postgresql/13/main' with data_directory = '/shared/postgres_data' in /etc/postgresql/13/main/postgresql.conf
I, [2024-10-15T06:14:37.426590 #1]  INFO -- : Replacing (?-mix:#?listen_addresses *=.*) with listen_addresses = '*' in /etc/postgresql/13/main/postgresql.conf
I, [2024-10-15T06:14:37.427073 #1]  INFO -- : Replacing (?-mix:#?synchronous_commit *=.*) with synchronous_commit = $db_synchronous_commit in /etc/postgresql/13/main/postgresql.conf
I, [2024-10-15T06:14:37.427713 #1]  INFO -- : Replacing (?-mix:#?shared_buffers *=.*) with shared_buffers = $db_shared_buffers in /etc/postgresql/13/main/postgresql.conf
I, [2024-10-15T06:14:37.428194 #1]  INFO -- : Replacing (?-mix:#?work_mem *=.*) with work_mem = $db_work_mem in /etc/postgresql/13/main/postgresql.conf
I, [2024-10-15T06:14:37.428633 #1]  INFO -- : Replacing (?-mix:#?default_text_search_config *=.*) with default_text_search_config = '$db_default_text_search_config' in /etc/postgresql/13/main/postgresql.conf
I, [2024-10-15T06:14:37.429175 #1]  INFO -- : Replacing (?-mix:#?checkpoint_segments *=.*) with checkpoint_segments = $db_checkpoint_segments in /etc/postgresql/13/main/postgresql.conf
I, [2024-10-15T06:14:37.429569 #1]  INFO -- : Replacing (?-mix:#?logging_collector *=.*) with logging_collector = $db_logging_collector in /etc/postgresql/13/main/postgresql.conf
I, [2024-10-15T06:14:37.430001 #1]  INFO -- : Replacing (?-mix:#?log_min_duration_statement *=.*) with log_min_duration_statement = $db_log_min_duration_statement in /etc/postgresql/13/main/postgresql.conf
I, [2024-10-15T06:14:37.430562 #1]  INFO -- : Replacing (?-mix:^#local +replication +postgres +peer$) with local replication postgres  peer in /etc/postgresql/13/main/pg_hba.conf
I, [2024-10-15T06:14:37.430964 #1]  INFO -- : Replacing (?-mix:^host.*all.*all.*127.*$) with host all all 0.0.0.0/0 md5 in /etc/postgresql/13/main/pg_hba.conf
I, [2024-10-15T06:14:37.431353 #1]  INFO -- : Replacing (?-mix:^host.*all.*all.*::1\\/128.*$) with host all all ::/0 md5 in /etc/postgresql/13/main/pg_hba.conf
I, [2024-10-15T06:14:37.431673 #1]  INFO -- : > if [ -f /root/install_postgres ]; then
  /root/install_postgres && rm -f /root/install_postgres
elif [ -e /shared/postgres_run/.s.PGSQL.5432 ]; then
  socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
fi

I, [2024-10-15T06:14:37.974529 #1]  INFO -- : Generating locales (this might take a while)...
Generation complete.

I, [2024-10-15T06:14:37.975013 #1]  INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main
I, [2024-10-15T06:14:37.976577 #1]  INFO -- : Terminating async processes
2024-10-15 06:14:38.136 UTC [36] LOG:  starting PostgreSQL 13.16 (Debian 13.16-1.pgdg120+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
2024-10-15 06:14:38.138 UTC [36] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2024-10-15 06:14:38.139 UTC [36] LOG:  listening on IPv6 address "::", port 5432
2024-10-15 06:14:38.143 UTC [36] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2024-10-15 06:14:38.154 UTC [37] LOG:  database system was shut down at 2024-10-15 06:14:28 UTC
2024-10-15 06:14:38.176 UTC [36] LOG:  database system is ready to accept connections

この時点でアップグレードは停止し、それ以上何も起こらず、サーバーはオフライン(Web接続が全くない)になります。
次に何を試すべきですか?

UIのアップグレードには、サイトの実行と再構築を同時に行おうとしているため、より多くのメモリが必要になると思われます。

スワップが十分にあることを確認してください。少なくともRAMと同量です。

したがって、4GBサーバーには4GBのスワップがあることを確認してください。

ちなみに、ここのgit pullは冗長です。ビルドスクリプトが自動的に行ってくれます。

「いいね!」 1

私のサーバーには 4GB の RAM と 4GB のスワップがあります。再構築は database system is ready to accept connections で停止し、完了せず、フォーラムはダウンしたままです。Droplet バックアップに復元することはできますが(再度)、動作する 3.2 フォーラムに戻ることができますが、これを解決する方が良いでしょう。

# free
              total        used        free      shared  buff/cache   available
Mem:           3919         286        1443          20        2189        3360
Swap:          4095           2        4093
Total:         8015         288        5537
「いいね!」 2

このような状況では、通常(自己責任で)再起動しますが、まだ失敗したことはありません。少なくとも、これでサイトは復旧します。

OSは比較的最新のLTSであることを確認し、dockerの警告には注意する価値があるようです。

再構築中にhtopでメモリを監視して確認してください。

ただし、スワップが多いようです。:+1:

「いいね!」 2

私のOSはUbuntu 20.04.6 LTSです。

へえ。OK、再起動したらフォーラムが復旧しました。

ああ、でもまだインストールされているのは3.2.4と表示されており、最新は3.3.2なので、更新されていません。

ですから、これでどうなるのかよくわかりません。もう一度アップデートを試してみます。

はい、同じ場所で止まってしまいます。Dockerの新しいバージョンではUbuntuのメジャーバージョンを更新する必要があると思いますが、それは現時点では計画していませんでした。

OSとDockerを更新して、念のため確認することをお勧めします。

ビルドスクリプトでは、さまざまな時点で大きな遅延が発生することがあります。どのくらいの時間ですか?

「いいね!」 2

15〜20分後に戻ってきたとき、その時点でスタックしていました。それ以降は特に長く待っていません。何か処理をしている可能性もありますが、その証拠はありません。CPUを使用しているものはありません。

「いいね!」 1

現時点では、2つの選択肢があると思います。

  • OSとDockerのインプレースアップグレードを実行してから、再試行する
  • 新しいDropletを作成する

後者の方が早いかもしれません。

まあ、現在のスナップショットがあるので、この時点でUbuntuのアップグレードを行っても害はないと思います。いつでも元に戻せます。

「いいね!」 1

ああ、拒否されるのは、

申し訳ありませんが、このストレージドライバーは、新しいリリース用のカーネルではサポートされていません。

aufsストレージドライバーのカーネルサポートを提供するUbuntuのリリースは、今後ありません。

コンテナがaufsストレージドライバーを使用していないことを確認し、/var/lib/docker/aufs ディレクトリを削除してから、もう一度お試しください。

ため息。何も簡単にはいかないものですね?

「いいね!」 2

新しいドロップレット。 :).\n\nSteps involved to downgrade from 2GB to 1GB on DO? - #3 by merefield

「いいね!」 3

OK、まあ、そのアップグレードプロセス全体は、まったくの悲劇として終わってしまいました。

ドロップレットを以前の状態(Ubuntu 20.04.6 LTS および Discord 3.2.4)に戻し、頭を砂に突っ込んで 3.3 のことはすべて忘れ、また別の日に再挑戦します。

助けてくれてありがとう。

「いいね!」 2

ボーナス機能 - ドロップレットを復元すると、なぜかログアウトさせられ、サイトが読み取り専用モードの間は管理者としてもログインできません!

「いいね!」 1

ふと思ったのですが、(Change the Docker storage backend) に記載されているように、Ubuntu をアップデートできるように Docker を overlay2 に切り替えることができません。overlay に切り替えるには ./launcher rebuild app が必要ですが、これは失敗します(overlay2 に切り替えることで問題が解決する場合を除き、それだけでは解決する可能性は低いと思われます)。したがって、新しいドロップレットに移行するのが唯一の現実的な方法のようですが、それには通常非常に遅い DNS 変更が必要になるでしょう。うーん。

「いいね!」 1

以下のコマンドでコンテナを再起動できる可能性があります。

  docker start app

また、以下のコマンドで問題を解決できる可能性もあります。

 apt install docker-ce docker-ce-cli

overlayに関する問題については、よくわかりません。以前のUbuntuからOSのアップグレードを行ったことはありますか?

DigitalOceanをご利用の場合、古いサーバーを指す静的IPを作成し、DNSをそれにポイントさせることができます。その後、新しいサーバーに移行する際に、IPを新しいサーバーにリダイレクトできるため、DNSの遅延が発生しません。

「いいね!」 2

はい、コンテナは再起動しましたが、アップグレードはありませんでした。

database system is ready to accept connections の後、アップグレードプロセスで何が起こるのかわかりませんが、そこまでしか進まず、それ以上進むことはありません(次のステップに非常に時間がかかる場合を除く)。

はい、Ubuntuは以前に更新されました。そのため、Dockerは常にaufs上にあります。

アップグレードせずに再構築することは可能ですか?それがうまくいけば、現在のDockerをaufsからoverlay2に切り替えることができるかもしれません。そうすれば、Ubuntuを22にアップグレードできる可能性があります。それは他のものが機能するようになることを意味するかもしれませんが、現時点では、アップグレードがその時点で停止する理由がわからないため、解決策となる可能性のあるものに希望を託すしかありません。

いいえ、指定されたブランチの最新コミットにアップグレードされます。

新しいサーバーへの移行は最短30分で完了する可能性があることを忘れないでください。

はい、その方法をとる必要がありそうです。感傷的かもしれませんが、フォーラムをアップグレードするためだけに(Discourseだけでなく、他にもいくつかのことを実行している)新しいサーバー全体をセットアップしたくはありませんでした。

まあ、それが自分のサーバーを運用している人の人生です。

「いいね!」 2

はい、何らかの理由でそこで停止しているようです。理由はわかりませんが、dockerのアップグレードを行ったところ、いくつかのサイトで改善が見られました。

私が上で述べたように、dockerのアップグレードを試しましたか?

もし他の場所で検索を試みるなら、オーバーレイを修正できる可能性はあります。だから私はOSのアップグレードを信頼しないのです。

まだ試していませんが、次に試してみます。別のメンテナンス期間をスケジュールする必要があります。私のプロセスは常にドロップレットをシャットダウンしてスナップショットを作成することですが、これにはかなりの時間がかかり、ダウンタイムの大部分を占めます。しかし、プロセスを非常に簡単に元に戻すことができることを保証します。これは数回役立ちました。

そのため、火曜日に別のメンテナンスウィンドウをスケジュールしてからDockerの更新を試みます(そしてそれがうまくいけば、オーバーレイに切り替えることも試みます)。失敗した場合は、翌週に新しいサーバーを試すことに進みます(または、テストドロップレットで新しいサーバーをセットアップできるため、並行して行うかもしれません)。

ありがとうございます。