OpenLM Router を設定する
ライセンスサーバーを OpenLM Router の背後に置くには、Router を OpenLM Platform に接続し、Platform でフェイルオーバーペアを定義してから、クライアントを Router のポートに移します。この順序で作業してください。サーバーヘルス、サーバー一覧、Router の構成はすべて Platform から取得されるため、接続が成功するまでほかの機能は動作しません。
始める前に
次の前提条件を確認します。
- Router がデプロイされ、ポート
8100で応答していること。OpenLM Router をデプロイするを参照してください。 - OpenLM Platform で、Identity にクライアントを作成でき、LicOps Configuration を開けること。
- ペアに含まれる各ライセンスサーバーが、OpenLM Broker を通じて OpenLM に監視されていること。システム要件を参照してください。
- 各ライセンスサーバーを使用しているクライアントを把握しており、そのライセンス変数を変更できること。
Router を Platform に接続する
Router はクライアント ID とシークレットを使って Platform にサインインし、シークレットは暗号化して保存します。Router が必要とする 3 つの値は、すべて Client Type が Router の ID クライアントから取得します。
Router の認証ファイルを取得する
Router の認証ファイルを取得するには、次の手順を実行します。
-
OpenLM Platform で Navigation を選択し、Platform Administration の下にある Identity を選択します。
-
Authorization を選択し、Add Client を選択します。
-
Select Client Type で Router を選択します。説明を入力し、Encrypted authorization client はオフのままにして、Save を選択します。
クライアントの種類として Router を選択します。ほかの種類のクライアントでもサインインはできますが、Router が行う問い合わせは OpenLM Platform に拒否されます。 -
認証ファイルをダウンロードします。
router-authorization.jsonなどの JSON ファイルです。
このファイルには、次の表のとおり、Router が必要とする 3 つの値が含まれています。
| 値 | 内容 |
|---|---|
| Base URL | OpenLM Platform のルートアドレスです。サインインに使うアドレスで、ホストの後ろには何も付けません。Router がトークン URL や API パスを自動的に付加するため、これらではありません。 |
| Client ID | Router クライアントの Client ID です。 |
| Client Secret | 同じクライアントの Client Secret です。手元にない場合は、Authorization ページでクライアントを選択し、Reset Secret を選択します。以前のシークレットは使用できなくなります。 |
種類が Router のクライアントを使用してください。ほかの種類の認証情報でも認証はできますが、Router が行う問い合わせは OpenLM Platform に拒否されます。この問題はサインインの失敗としてではなく、後になってサーバー一覧が取得できないという形で現れます。認証ファイルの詳細は、Identity を参照してください。
Router UI で接続する
Router UI で Router を OpenLM Platform に接続するには、次の手順を実行します。
-
http://<router-host>:8101/router-management/をブラウザーで開きます。 -
Import Auth File を選択し、認証ファイルを選択します。
ファイルをインポートする代わりに、Base URL、Client ID (Optional)、Client Secret (Optional) を手入力することもできます。3 つのフィールドはすべて入力してください。ネットワークが遅い場合を除き、Request Timeout (seconds) は
30のままにします。 -
Check Connection を選択します。
-
Save を選択します。
Platform Connection は、Router が OpenLM Platform への接続方法を設定するページです。接続が機能するまで、フォームの下の通知に Router が同期できない理由が表示されます。
Check Connection は実際に呼び出しを行います。そのため、成功すれば URL の形式が正しいことだけでなく、アドレスを名前解決でき、証明書が受け入れられ、認証情報が受理されたことまで確認できます。ベース URL を入力するまでは使用できません。
後でこのページを開き直すと、フォームには保存済みのシークレットが *** とマスクされて表示されます。マスクされた値のままフォームを保存すると保存済みのシークレットが保持されるため、シークレットを入力し直さずにほかのフィールドを変更できます。
保存してから約 10 秒以内に、フォームの下の通知が消えます。成功メッセージは別に表示されません。通知が表示されていなければ、Router は OpenLM Platform と構成を同期しています。通知が消えない場合は、トラブルシューティングで説明しているとおり、通知にその理由が表示されます。通知はサーバーヘルスを対象としていないため、接続が機能していることを確認するの確認も実行してください。
REST API で接続する
Router UI を使う代わりに、接続設定をスクリプトで行うには、次のコマンドを実行します。
curl -X PUT http://localhost:8100/api/v1/admission-controller/platform-credentials \
-H "Content-Type: application/json" \
-d '{
"baseUrl": "https://platform.example.com",
"clientId": "<client-id>",
"clientSecret": "<client-secret>",
"requestTimeoutSeconds": 30
}'
requestTimeoutSeconds の既定値は 30 で、最小値は 1 です。
接続が機能していることを確認する
次のコマンドを順に実行します。各コマンドは、その前のコマンドが成功していることを前提としています。
# 1. The credentials are stored. The secret reads back masked.
curl http://localhost:8100/api/v1/admission-controller/platform-credentials
# 2. The Router is syncing with the Platform: lastSuccessfulSync has a time,
# and lastFailure is null.
curl http://localhost:8100/api/v1/status
# 3. The Router has the Platform's server list. Allow about ten seconds after saving.
curl http://localhost:8100/api/v1/platform/servers
手順 3 は、OpenLM Platform が監視しているライセンスサーバーを返します。
[
{ "id": 615, "hostName": "lic-primary.example.net", "port": 27005, "lmType": "FLEXlm", "isHealthy": true },
{ "id": 845, "hostName": "lic-backup.example.net", "port": 27005, "lmType": "FLEXlm", "isHealthy": true }
]
Router がこの一覧を取得するまで、このリクエストは空の一覧ではなく、説明付きの 503 を返します。
{
"statusCode": 503,
"message": "The Router has not collected any Platform license-server data yet. Check the snapshot sync job and Platform credentials, then retry once a snapshot exists."
}
新しいデプロイでは、これは通常、接続がまだ機能していないことを意味します。3 つの値を確認し直し、ホストから OpenLM Platform への送信方向のアクセスがあることを確認してください。手順 1 と 2 が成功しているのに、Router を接続してから 1 分経っても手順 3 が 503 を返す場合、Router は構成を同期していますが、サーバーデータを受け取っていません。トラブルシューティングを参照してください。
保存する前に認証情報をテストするには、接続チェックに送信します。このエンドポイントはリクエスト本文の認証情報を確認します。clientSecret が空または *** の場合は、保存済みの認証情報を確認します。
curl -X POST http://localhost:8100/api/v1/admission-controller/platform-credentials/check-connection \
-H "Content-Type: application/json" \
-d '{
"baseUrl": "https://platform.example.com",
"clientId": "<client-id>",
"clientSecret": "<client-secret>",
"requestTimeoutSeconds": 30
}'
有効な認証情報の場合は、次のように応答します。
{
"status": "Ok",
"message": "Connection successful: a Platform access token was acquired."
}
結果はステータスコードではなく、レスポンス本文で判断してください。拒否された認証情報でも 200 が返ります。
{
"status": "Failed",
"message": "Connection failed: the Platform rejected the supplied credentials. Platform token request rejected with HTTP 400: invalid_client"
}
フェイルオーバーペアを定義する
フェイルオーバーペアは、Router ではなく OpenLM Platform で定義します。Router は最初の同期時に自身を OpenLM Platform に登録するため、事前に登録する必要はありません。
-
OpenLM Platform で Navigation を選択し、Licenses and Features の下にある LicOps Configuration を選択します。LicOps Configuration は、OpenLM Router と OpenLM LicOps の両方を設定するアプリです。フェイルオーバー用の Router では、Port Mappings が表示された状態で開きます。
まだどの Router も自身を報告していないとページに表示される場合、Router はまだ OpenLM Platform と同期していません。Router を接続してから約 10 秒待ち、ページを再読み込みします。ページは自動では更新されません。
Port Mappings には、フェイルオーバーペアが一覧表示されます。ペアを選択すると、そのサーバーとポリシーを確認し、編集または削除できます。 -
Add Port Mapping を選択します。
-
フォームに入力します。フォームには、次の初期値が入っています。
フィールド 初期値 Name Mapping 1。フェイルオーバー履歴で見分けがつく名前に置き換えます。Failback mode Auto。復旧したプライマリにクライアントを戻す前にプライマリを確認したい場合は、Manual を選択します。 Router listen port 27000から始まる、次の空きポート。ペアごとに専用のポートを割り当て、Router ホスト上で空いていて、クライアントから接続できるポートを使います。Failure threshold 3。1~10 を指定できます。
Add Port Mapping フォーム。次の空きリッスンポートが提案されます。この例では、27000 と 27001 がすでに使われています。 -
Primary server で Choose server を選択します。
-
サーバーを選択し、Select を選択します。
一覧には、OpenLM Platform が監視しているすべてのライセンスサーバーが、ホスト、ポート、LM の種類、現在のヘルスとともに表示されます。現在の制限事項で説明しているとおり、OpenLM が Router を検証しているのは FlexLM サーバーのみです。
Choose server には、OpenLM Platform が監視しているライセンスサーバーが一覧表示されます。サーバーがここに表示されるのは、そのサーバー上の OpenLM Broker が OpenLM Platform に報告している場合だけです。想定しているサーバーが見つからない場合、OpenLM Platform はそのサーバーを監視していません。OpenLM Broker がサーバーにインストールされていないか、Broker Hub で承認されていないか、サーバーが License Servers で承認されていません。システム要件を参照してください。
-
(任意)Backup server で Choose server を選択し、プライマリと同じベンダーデーモンとフィーチャーを、そのサーバー独自のライセンスファイルで提供するサーバーを選択します。監視はするがフェイルオーバーはしないペアの場合は、空のままにします。
-
Save を選択します。
Router は次の同期時(約 10 秒以内)に変更を取得し、再起動なしでリッスンポートを開きます。Router がペアを適用したかどうかは OpenLM Platform には表示されないため、Router がペアを適用したことを確認するで説明しているとおり、Router 側で確認してください。後でペアを編集または削除するには、Port Mappings でペアを選択し、Edit または Delete を選択します。
ポリシーを選ぶときは、次の点に注意してください。
- Failback mode: Manual のほうが安全なモードです。Auto は正常な読み取り値を 1 回受け取った時点でクライアントをプライマリへ戻すため、プライマリが不安定な場合、クライアントが行き来することがあります。
- Failure threshold: しきい値は、30 秒ごとのヘルスチェックの回数を数えます。しきい値を 2 にすると、約 1 分以内に反応し、1 回の読み取りではクライアントを移しません。しきい値を 1 にすると 1 回の読み取りでクライアントが移るため、一時的な瞬断にも反応してしまいます。
Router がペアを適用したことを確認する
Router に何かがプッシュされることはありません。Router は約 10 秒ごとに OpenLM Platform をポーリングし、変更点を取得して適用し、適用した内容を報告します。Router がペアを適用したことを確認するには、次のコマンドを実行します。
curl http://localhost:8100/api/v1/status
"configurationManagement": {
"shape": "serviceManaged",
"routerId": "3f6c…",
"lastSync": {
"lastSuccessfulSync": "2026-09-07T09:14:22Z",
"lastAppliedConfigVersion": 4,
"lastFailure": null
}
}
lastSuccessfulSync が進まなくなった場合、Router は OpenLM Platform と通信できなくなっています。lastFailure は現在の問題を示し、次に成功するとクリアされるため、ここに表示される内容は履歴ではなく、現在起きている問題です。
Router がペアを適用できない場合は、以前の構成を維持し、リッスンポートを開きません。lastFailure に理由が表示され、Router UI の通知にも同じ理由が表示されます。ペアは OpenLM Platform には引き続き表示されます。
次に、次のコマンドを実行して、リッスンポートが開いていることを確認します。
curl http://localhost:8100/readyz
boundPorts には、Router が適用したすべてのペアのリッスンポートが一覧表示されます。これが desiredPorts と一致すれば、Router はクライアントを受け入れる準備ができています。
クライアントを Router に向ける
切り替えるには、クライアントの接続先を変更します。ライセンスサーバー側は何も変更しません。
FlexLM クライアントは、接続するサーバーを環境変数または licpath.lic ファイルから port@host 形式で読み取ります。サーバーのアドレスを、Router のホストとペアのリッスンポートに変更します。
LM_LICENSE_FILE=27005@lic-primary.example.net # before: straight at the server
LM_LICENSE_FILE=27000@router.example.net # after: at the Router's listen port
Windows ワークステーションでは、システム環境変数として設定します。たとえば、管理者として実行したコマンドプロンプトで次を実行します。
setx /M LM_LICENSE_FILE 27000@router.example.net
多数のワークステーションをまとめて変更する
すべてのワークステーションで変数を変更するには、組織ですでに使用している配布ツール(グループポリシー、Microsoft Intune、Microsoft Configuration Manager など)で配信します。LM_LICENSE_FILE を、値 <listen-port>@<router-host> のシステム環境変数として設定してください。変更の対象指定とスケジュールの方法は、お使いのツールのドキュメントを参照してください。どのツールでも、次の手順が当てはまります。
- 最初に、少人数のテストグループだけを変更します。テスト用のワークステーションで
lmutil lmstat -a -c <listen-port>@<router-host>を実行し、アプリケーションを開きます。 LM_LICENSE_FILEだけでなく、アプリケーションが読み取るすべてのベンダー固有の変数とレジストリ値を含めます。理由は、このセクションにあるベンダー固有の変数に関する警告のとおりです。- 元の値を保管しておき、ロールバックするときに再び配信できるようにします。
- 展開中は、直接接続のフォールバックエントリーの利用を検討します。
- 変更を、残りのワークステーションに段階的に広げます。
多くのアプリケーションは、LM_LICENSE_FILE よりも独自の変数を優先して読み取ります。たとえば、MATLAB 用の MLM_LICENSE_FILE や Autodesk 用の ADSKFLEX_LICENSE_FILE です。これらのいずれかが設定されているとそちらが優先されるため、すべてが正しく設定されているように見えても、アプリケーションは古いサーバーに直接接続し続けます。
ベンダー固有の変数を確認するには、次のコマンドを実行します。
env | grep -i LICENSE_FILE
Windows では、FlexLM がレジストリに保持している値も確認します。多くのインストーラーは、ベンダーの変数をレジストリに書き込みます。次のコマンドを実行します。
set | findstr /i LICENSE_FILE
reg query "HKLM\SOFTWARE\FLEXlm License Manager"
reg query "HKCU\Software\FLEXlm License Manager"
クライアントが Router に到達できることを確認するには、次のコマンドを実行します。
lmutil lmstat -a -c 27000@router.example.net
出力は、ライセンスサーバーに対して直接同じコマンドを実行した場合の結果と一致します。Router ホストからではなく、テスト用のワークステーションから実行してください。
lmstat で確認できるのは、チェックアウトの最初の区間、つまり Router が中継する lmgrd への接続だけです。チェックアウト自体は、その後ワークステーションからアクティブなサーバー上のベンダーデーモンへ直接行われます。Router 経由の lmstat は成功するのにアプリケーションがチェックアウトできない場合、ワークステーションからそのベンダーデーモンのポートに到達できていません。システム要件を参照してください。
直接接続のフォールバックを残す
Router に到達できない場合にクライアントをライセンスサーバーに向けるには、両方のアドレスを列挙します。FlexLM はエントリを左から右へ順に試します。エントリは、Linux と macOS では : で、Windows では ; で区切ります。
LM_LICENSE_FILE=27000@router.example.net:27005@lic-primary.example.net
ただし、この設定では Router の構成ミスも隠れてしまいます。チェックアウトは成功し続けるため、Router をまったく経由していなくても問題があるようには見えません。慎重に展開する場合に使用し、Router 経由の経路が機能することを確認したら削除してください。
フェイルオーバーをリハーサルする
OpenLM Router を運用するで説明しているとおり、フェイルオーバーに頼る前にテストしてください。
OpenLM Router を運用するに進み、フェイルオーバーをリハーサルして、各ペアがどのサーバーを使用しているかを確認します。
関連項目
ドキュメントチームは、大規模言語モデルを使ってこのページを下書きすることがあります。公開前に、テクニカルライターがすべてのページをレビューし、製品と照らし合わせて検証します。最終的な判断は人間が行います。