Tomcat Parallel Deployment、古いアプリケーションを自動的にアンデプロイします


10

ここしばらく、Tomcat 8のParallel Deploymentをゼロダウンタイムの継続的デプロイメントセットアップの一部として使用しています。

テストガントレットが実行されると、CIサーバーは自動的に.warファイルの名前をapplication ## {version-number} .warに変更し、warを/ webappフォルダーにコピーします。application ## 333はapplication ## 332とうまく共存します。

私が直面している唯一の問題は、すべてのトラフィック(新しいセッション)が新しいアプリケーションに自動的に移行したら、古いアプリケーションを手動でアンデプロイする必要があることです。

Tomcatには、「このサービスがセッション数がゼロになったら削除する必要がある」と言うための組み込みメカニズムはありますか?たぶん、ある種の「最後のセッションが期限切れになった」イベントを利用できます。

他の誰かがこの種のアプリケーションのアンデプロイを自動化した場合は、それについて聞いてみたいと思います。ありがとう!

回答:


9

古いアプリケーションを削除するようにTomcatを構成できます。要素にundeployOldVersions属性を追加してHost、に設定する必要がありますtrue。server.xmlのホストを次のように変更する必要があります。

<Host undeployOldVersions="true" ...>
   ...
</Host>

詳細については、ホストのドキュメントを参照してください。特に、これは自動展開が有効になっている場合にのみ機能します。


Tomcatのどのバージョンで実行していますか?Tomcat 8.5.6を使用していますが、これは機能しません。FarmWarDeployerを有効にしました。新しいリリースが自動的に展開されます。ただし、HostタグでundeployOldVersionsを有効にすると、古いwarファイル(およびデプロイメント)は削除されません。
ピコ

Tomcat 8でこれに関する進展はありますか?
JimmyD 2018年

1
この機能はTomcat 8に実装されています。FarmWarDeployerの使用時に問題が発生する場合は、バグを再現する手順とともに開いて確認してください。
マークトーマス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.