alexk
(Alex)
1
こんにちは!複数のコンテナでDiscourseを新規インストールしたばかりですが、最適なアップグレード方法について教えていただけますか?
ドキュメントには次のように記載されています。
Discourseの新しいバージョンへのアップグレード時のダウンタイムを最小限に抑えることができます。サイトが稼働している間に新しいWebプロセスをブートストラップし、ビルドが完了してからのみ新しいイメージに切り替えることができます。
この記述から、別のコンテナをアップグレードしている間も、以前のバージョンのDiscourseをライブ環境で実行しても安全なのかと疑問に思いました。
例えば:
2つのWeb専用コンテナが、ロードバランサーの背後にある別々のVM上で実行されていると仮定します。1つのコンテナインスタンスをロードバランサーから外し、最新バージョンでブートストラップを実行します。この間、旧バージョンは引き続きサービスを提供し、ダウンタイムゼロで稼働します(これで問題ありませんか?)。次に、更新されたコンテナをロードバランサーに戻し、もう1つのコンテナで同じ手順を繰り返します。
この認識で合っているでしょうか?
「いいね!」 1
pfaffman
(Jay Pfaffman)
2
おおよそその通りです。真のダウンタイムゼロのアップグレードを行うには、新しいコンテナを SKIP_POST_DEPLOYMENT_MIGRATIONS: 1 でブートストラップし、起動した後、古いコンテナが実行されていないことを確認してから SKIP_POST_DEPLOYMENT_MIGRATIONS=0 rake db:migrate を実行してください。そうしないと、ブートストラップ処理によって(すべてのアップグレードで発生するわけではありませんが)データベースが古いコンテナで使用できない状態になる可能性があります。
「いいね!」 1
alexk
(Alex)
3
それは素晴らしいですね!データベースのマイグレーションがまさに私の懸念点だったので、どのように制御するかを知れて助かります!
「いいね!」 2
system
(system)
クローズされました:
4
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.