0

私たちの Web アプリケーション (spring + jpa + mysql) のダウンタイム % は非常に低いはずです。現在、3 つの Tomcat クラスターを備えたロード バランサーと、単一のデータ ソース (mySQL) で同じ Web アプリを実行するセッション レプリケーションがあります。

可用性に関しては、これはうまく機能します。

でも今、

ダウンタイムを発生させずに Web アプリケーションをアップグレードしたいと考えています。素朴な人は、Tomcat を 1 つシャットダウンし、新しいバージョンをデプロイして、もう一度起動すると言うだけです。(すべての tomcat に対して行います) これで完了です!

ただし、2 つの Web アプリのバリエーション (古いバージョンと新しいバージョン) が同時に実行されることを考慮すると、いくつかの問題が発生する可能性があります。

リアルタイムでのアップグレードを試みる際に考慮すべき重要な側面について、誰か光を当てることができますか? 良い習慣はありますか?これらの問題について議論している記事はありますか?

どんな助けもします!

ありがとう!

4

1 に答える 1

1

それを行うためのいくつかの戦略が考えられます。これが私が通常使用する2つの方法です-

  1. 両方のバージョンを並べて実行します。あなたが言ったように、これは問題を引き起こす可能性があります。これを行うには、事前にテストして、両方を並べて実行できること、および (スキーマの変更などによる) データの不一致がないことを確認する必要があります。

  2. 実行中のバージョンを置き換えます。これを行うには、新しい tomcat クラスターを作成してから、ロード バランサーを切り替えます。または、クラウド ベースではなく、それができない場合は、ロード バランサーから 1 つまたは 2 つのサーバーを取り出します (できれば、アプリケーションが負荷を処理できるように短時間で行います)。トラフィックが不足しているサーバーのバージョンを置き換えます。それが機能していることをテストします。それらを再びトラフィックに配置し、残りのサーバーを取り出してから更新します。

また、バージョンに何か問題があり、本番環境でのみ発見された場合に備えて、迅速なロールバック方法があることを確認してください...

于 2013-10-31T13:39:04.327 に答える