3

クラスターを形成する多数の複数のサーバーに 1 行で Maven をデプロイしようとしています。

このソリューションは、繰り返し (サーバーのインストールごとに 1 回) 実行する必要があることと、統合サーバー (jenkins) が成功したアーティファクトをビルドした後に実行することを除いて、問題なく機能します。現時点では、マトリックス機能を使用することは実際にはオプションではありません。デプロイする必要があるだけなのに、サーバーごとにプロジェクトを再構築する必要はありません。(さらに、これに費やす時間)

私たちは Maven プロファイル (サーバーごとに 1 つ、一度にすべてをアクティブ化しようとする、またはすべてのサーバーを含む 1 つの大きなプロファイル) を使用して実験を行ってきましたが、そのオプションでは運が悪く、tomcat-maven-plugin はそのようには機能しません。

Jenkinsには、貨物に基づくデプロイプラグインがあるようですが、一度に1つのサーバーしか処理しません

これを達成する方法はありますか?maven-tomcat-plugin を使用していますか? またはJenkins/Hudsonプラグイン?

ビルドが成功した後にクラスターに戦争を展開する方法について、専門家からの他のアイデアはありますか? (移植性の問題のため、シェルスクリプトを避けようとしています)

4

1 に答える 1

1

1行だけで実行する必要がある場合は、CMD、Ant、bashなどのスクリプトを「1行」として実行し、そのスクリプトに複数のことをさせることをお勧めします。

たとえば、Antを使用した場合... 1 行は次のようになりますant DeployToCluster。また、build.xml ファイルDeployToClusterには、多くのステップを含む可能性のあるターゲットが含まれている可能性があります。多くのことを行うコードのメソッドをリファクタリングするようなものだと考えてください。メソッドを呼び出すコードはワンライナーになります。

他の誰かが書いた既存のスクリプトを実行して、あなたが望むことを実行するだけでない限り、あなたが求めていることを実行するための単一のコマンドを見つけることはおそらくないでしょう。

どちらの場合でも、一度に個々のサーバーにコードを展開できるようにすることをお勧めします。これにより、一度に 1 つのノードのみに影響を与え、他のノードは実行を継続できるため、アプリ/サービスを常に稼働状態に保つことができます。また、何かがひどくうまくいかない場合、クラスター内の 1 つのノードを再度有効にして、1 つのサーバーの問題を診断することができないという利点もあります。スクリプトが従う展開戦略の手順は次のとおりです。

  1. 単一ノードの監視を無効にする
  2. そのノードをクラスタから引き出します
  3. それに新しいコードをデプロイする
  4. ノードが新しいコードで正しく動作していることを確認する
  5. ノードをクラスターに戻す
  6. そのノードの監視を再度有効にします
  7. 他のノードごとに手順を繰り返します

いずれかのステップで問題が発生した場合でも、ユーザーのための作業環境が常に用意されています。

于 2012-08-01T21:01:45.063 に答える