スケジュールでシート数を制限する
バッチジョブと人が同じライセンスサーバーを共有していると、エンジニアが席にいる時間帯にジョブがすべてのシートを使ってしまうことがあります。予約を使うと、これを防げます。指定した時間帯には、LicOps が各サーバーで割り当てるシートは設定した数までになり、残りのシートには手を付けません。その時間帯以外は、ジョブがすべてのシートを使用できます。
予約は 1 つのベンダーと、そのベンダーの 1 つ以上のフィーチャーを対象とし、期間からなるスケジュールを持ちます。各期間では、指定したサーバーごとに、LicOps がそのサーバーで割り当てられるシートの最大数を設定します。
各期間は、LicOps が割り当てるシートに上限を設けます。期間が有効な間、LicOps はサーバー上で Maximum seats を超えて許可することはなく、Blocked during this period のサーバーでは何も許可しません。
Reserved seats は予約とともに保存されますが、LicOps はライセンスサーバー上でそれらのシートを確保しません。そのため、LicOps を経由せずにチェックアウトするユーザーは、それらのシートも使用できます。そのようなユーザーのためにシートを空けておくには、Maximum seats をサーバーの総数より小さく設定してください。
予約を作成する
予約を作成するには、次の手順を実行します。
- OpenLM Platform で Navigation を選択し、Licenses and Features の下にある LicOps Configuration を選択します。
- Rules、New Reservation の順に選択します。
- Pool で Vendor を選択し、続いて 1 つ以上の Features を選択します。LicOps はフィーチャーごとに 1 つの予約を保存し、それらはすべてここで設定したスケジュールを共有します。1 つのフィーチャーに設定できる予約は 1 つだけです。
- Schedule で Period 1 を設定します。
- 期限なく適用する制限には Applies all day, every day をオンにし、時間帯を指定する場合は From と To を設定します。08:00 から 18:00 のような時間帯は毎日適用されます。18:00 から 08:00 のような時間帯は午前 0 時をまたぎます。
- Servers not in the list では、他のサーバーを制限しない場合は No limit を選択します。期間が有効な間、それらのサーバーで LicOps がこのフィーチャーをまったく割り当てないようにする場合は Blocked during this period を選択します。
- 上限を設けるサーバーごとに + Add server を選択し、Maximum seats を設定します。これは、期間中に LicOps がそのサーバーでこのフィーチャーを割り当てるシートの最大数です。Maximum seats は
1以上で、サーバーのライセンスシート数以下です。Reserved seats は予約とともに保存される値で、0以上、Maximum seats 以下です。LicOps はライセンスサーバー上でこれらのシートを確保しません。
- 別の時間帯を追加するには、+ Add period を選択します。期間を重複させることはできません。
- Save rule を選択します。
どの期間が有効かを確認するには、Currently active を確認します。これはお使いのコンピューターの時計に基づきます。LicOps 自体は動作しているマシンの時計で判断するため、結果が異なることがあります。スケジュールをタイムゾーンに合わせるを参照してください。
次のスクリーンショットは、日中と夜間の期間を持つ予約を示しています。
日中と夜間の期間を持つ予約。Currently active には、お使いのコンピューターの現地時刻で有効な期間が表示されます。
予約は、アドミッションルールとともに Rules リストに、アクション Reserve seats per server for time periods として表示されます。変更または削除するには、そこで予約を選択します。
期間中の動作
LicOps は 1 分ごとにスケジュールを確認します。期間が始まると、それ以降の新しいリクエストにその制限が適用されます。期間が終わると制限が解除されるか、次の期間の制限に切り替わります。LicOps が各状況で行う動作を次の表に示します。
| 状況 | LicOps の動作 |
|---|---|
| リストにあるサーバーが Maximum seats に達していない | 通常どおり許可します。 |
| リストにあるサーバーが Maximum seats に達した | 新しいリクエストをプール内の他のサーバーに配置します。 |
| リストにないサーバーで、No limit が選択されている | 通常どおり許可します。 |
| リストにないサーバーで、Blocked during this period が選択されている | これらのフィーチャーについて、そのサーバーには何も配置しません。 |
| 空きシートのあるすべてのサーバーが、上限に達しているかブロックされている | ConstraintBlocked でリクエストを拒否します。 |
Maximum seats で数えるのは、LicOps が割り当てたシートだけです。ユーザーがライセンスサーバーから直接チェックアウトしたシートはこれに含まれませんが、サーバーの空きシートは減ります。
期間が始まっても、シートが回収されることはありません。新しい最大数を超えるジョブがすでにサーバー上で実行中の場合、それらのジョブはシートを保持し、十分な数のジョブが終了するまで、LicOps はそのサーバーで新しいジョブを許可しません。
予約はアドミッションルールと併せて機能します。ルールは、LicOps がシートをどこに配置したいかを決めます。予約は、サーバーにまだ上限内の余裕があるかどうかを決めます。
スケジュールをタイムゾーンに合わせる
LicOps は、動作しているマシンから時刻を読み取ります。Docker では、タイムゾーンを指定しない限りコンテナーは UTC で動作するため、現地時刻の 08:00 のつもりで設定した期間が、数時間早く、または遅く始まることがあります。routerapi の環境変数にタイムゾーンを追加します。
- TZ=Europe/Berlin
続いて、docker compose up -d routerapi でコンテナーを再作成します。アドミッションルールの time of day 条件にも同じことが当てはまります。
有効な制限を確認する
各サーバーの上限をシート数と並べて確認するには、可用性レポートを確認します。
curl http://localhost:8100/api/v1/admission-controller/availability
各サーバーには constraints が表示され、上限が limit(9223372036854775807 は上限が適用されていないことを示します)、その上限の範囲で LicOps が保持しているシートが held、残りが headroom として示されます。空きシートはあるのに上限までの余裕がないサーバーがあることが、リクエストが ConstraintBlocked で拒否された理由です。OpenLM LicOps を運用するを参照してください。
ドキュメントチームは、大規模言語モデルを使ってこのページを下書きすることがあります。公開前に、テクニカルライターがすべてのページをレビューし、製品と照らし合わせて検証します。最終的な判断は人間が行います。