SchedulerX は、ジョブにマシンをランダムに割り当てます。カナリアリリースやストレステストのために、一部のマシンで異なるジョブ実装クラスを実行する場合、ランダムな割り当てでは、必要なクラスを持たないマシンにジョブがルーティングされてしまう可能性があります。
タグはこの問題を解決します。SchedulerX エージェントにタグを登録し、コンソールでジョブを設定する際にそのタグを選択します。これにより、ジョブは一致するタグを持つマシンでのみ実行され、すべてのマシンは同じアプリケーショングループ内に留まります。
個別のアプリケーショングループの代わりにタグを使用する理由
従来の方法では、カナリアリリースやストレステスト用のマシン専用のアプリケーショングループを作成します。このアプローチには 2 つの欠点があります。
リソースの無駄: 通常のジョブは、カナリアグループ内のマシンがアイドル状態であっても実行できません。カナリアトラフィックは通常少ないため、専用マシンは十分に活用されません。
複雑な昇格ワークフロー: カナリアリリースが検証に合格した後、既存のジョブを昇格させるのではなく、元のグループに重複したジョブを作成し、カナリアジョブを削除する必要があります。
タグを使用すると、すべてのマシンが同じアプリケーショングループに留まります。通常のジョブはすべてのマシンで実行され続けますが、タグ付けされたジョブは指定したマシンでのみ実行されます。カナリアリリースが合格した後、タグを削除すると変更はすぐに有効になり、ジョブを作成または削除する必要はありません。
前提条件
開始する前に、以下の準備ができていることを確認してください。
SchedulerX に接続された Spring Boot アプリケーション。設定手順については、「SchedulerX への Spring Boot アプリケーションの接続」をご参照ください。
SchedulerX コンソールへのアクセス
ステップ 1:SchedulerX エージェントにタグを登録
Spring Boot 構成ファイルに spring.schedulerx2.label プロパティを追加します。次の例では、application.properties のタグを gray に設定しています。
# SchedulerX 接続設定 (設定済み)
spring.schedulerx2.endpoint=<your-endpoint>
spring.schedulerx2.namespace=<your-namespace>
spring.schedulerx2.groupId=<your-group-id>
spring.schedulerx2.appKey=<your-app-key>
# このマシンをカナリアリリースジョブ用にタグ付け
spring.schedulerx2.label=graygray を、canary、stress-test、staging など、マシンのロールを説明する任意の文字列に置き換えてください。
アプリケーションが起動すると、エージェントはこのタグを SchedulerX に自動的に登録します。
ステップ 2:タグの登録を確認
MSE SchedulerX コンソールにログインします。
SchedulerX コンソールにログインします。
左側のナビゲーションウィンドウで、タスクスケジューリング (SchedulerX) をクリックします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、アプリケーション管理 をクリックします。
アプリケーション管理 ページで、対象のアプリケーションを見つけ、操作 列の インスタンスの表示 をクリックします。
インスタンスへの接続 パネルで、tag 列を確認します。設定したタグ値 (例:
gray) が、対応するインスタンスの横に表示されます。
注意: タグ列が空の場合は、spring.schedulerx2.label プロパティを追加した後にアプリケーションが再起動されたことを確認してください。ステップ 3:タグ付けされたマシンにジョブをルーティング
MSE SchedulerX コンソールにログインします。
左側のナビゲーションウィンドウで、ジョブ をクリックします。
タスク管理 ページで、対象のジョブを見つけ、操作 列の その他 をクリックします。
マシンを指定 をクリックします。
[マシンの指定] ページで、[名前付きタイプ] を [タグ] に設定します。
ジョブを実行するマシンを選択し、OK をクリックします。
これで、ジョブは選択されたタグ付きのマシンでのみ実行されるようになります。
カナリアリリース後のタグの削除
カナリアリリースが検証に合格し、新しいジョブ実装クラスがすべてのマシンで利用可能になった後:
コンソールでマシンの指定をクリアします。ジョブの マシンを指定 ページに移動し、タグの割り当てを削除します。この変更は動的に有効になります。
(任意) アプリケーション設定から
spring.schedulerx2.labelプロパティを削除し、アプリケーションを再起動します。
タグの制限が解除されると、同じジョブ定義がすべてのマシンで機能するようになります。