ターミナルサービス:ライセンスサーバーを稼動させる

すでに、ライセンスサーバーを稼動させていたが、ターミナルサーバーと同じマシン内だったのでうまく動かない、と思っていた。
しかし、同じマシンで動かすこともできるようだ。

実はすでにライセンスサーバー自体のインストールや、アクティブ化はできている。
しかし、サーバで「ターミナルサービスライセンス」を選んでも、対象となるサーバが見つからない、というメッセージが表示されていた。

そこで、「http://www.microsoft.com/japan/windowsserver2003/techinfo/overview/termservlic.mspx」を読んでいると12ページに次の記述があった。

ライセンス サービスの発見

ターミナル サーバーは、ライセンス サーバーの場所を見つけるために、発見プロセスを使用します。このプロセスは、ターミナル サーバー サービスが起動されたときに開始されます。この発見プロセスは、現在ターミナル サーバーが置かれている環境に応じて変化します。
また、WMI スクリプトを使用して、ターミナル サーバーで 1 つまたは複数の優先するライセンス サーバーを指定することによって、この発見プロセスを置き換えることも可能です。
優先するライセンス サーバーの設定、優先するライセンス サーバーの削除、または優先するライセンス サーバーのクエリに使用できる 3 つのスクリプトについては、このドキュメントの「管理」の項を参照してください。

ふむふむ。どうも、この発見プロセスがうまくいってないために、接続できないのだな。WMI スクリプト云々の部分はとりあえず、おいといて続きを読む。

Active Directory ベースのドメインの場合、ターミナル サーバーはまず、LicenseServers レジストリ キーに指定されている任意のライセンス サーバーへの接続を試みます。失敗した場合は、LDAP (Lightweight Directory Access Protocol) クエリを実行して Active Directory 内の次に示すオブジェクトを探すことによって、任意のエンタープライズ ライセンス サーバーの検出を試みます。

うーん、レジストリキーに指定した覚えないから、うまくいかないのだろう。エンタープライズライセンスサーバーではないから、そのまま失敗しちゃってるわけだ。

すると、次に「重要」と書いた欄が唐突に出現する。

Windows Server 2003 では、非ドメイン コントローラがライセンス サーバーになることは可能ですが、ドメイン ライセンス サーバーは自動的に発見されないことに注意する必要があります。

たしかに、今回のサーバはドメインコントローラじゃない。すると自動的に発見されないんだ。やっぱり…。

ドメイン ライセンス サーバーとして設定された非ドメイン コントローラのライセンス サーバーとの通信が必要なすべてのターミナル サーバーに、優先するライセンス サーバーを設定する必要があります。

ふむふむ、つまり、今回対象となっている Windows Server 2003 のマシンに「優先するライセンスサーバー」を設定すればよいわけだ。今回は、共用するからサーバー自分自身ということになるけれど。どうやったらできるのか。

ということで続きを読むが、非ドメインコントローラーをライセンスサーバーにするための具体的な方法は説明されない。ぶっちゃけて言えば、前述の通り「レジストリキー」に指定があればいいわけだ。それはどうやってやるのかと言えば、そうか、その前に書いてあった WMIスクリプトでできるのかもしれない。もう一回「WMIスクリプト」の部分を読み返す。

また、WMI スクリプトを使用して、ターミナル サーバーで 1 つまたは複数の優先するライセンス サーバーを指定することによって、この発見プロセスを置き換えることも可能です。
優先するライセンス サーバーの設定、優先するライセンス サーバーの削除、または優先するライセンス サーバーのクエリに使用できる 3 つのスクリプトについては、このドキュメントの「管理」の項を参照してください。

そこで「管理」の項を見る。「優先するライセンス サーバーの WMI スクリプト」という項があった。

AddLicenseServer.vbs
'***************************************************************************
'
' 指定されライセンス サーバーをターミナル サーバーのレジストリに追加する WMI VBscript
'
'***************************************************************************
if Wscript.arguments.count<1 then
(以下略)

これを実行すればいいわけだ。

なぜ、この部分だけえらくローテクなコマンドラインを使わなくちゃならんのか疑問だが、私にとってはコマンドラインの方が使いやすい。該当部分をワード文書からコピーして、サーバでエディタを開いて貼り付ける。それを AddLicenseServer.vbs というファイル名で Cドライブのルート C:\ に保存する。

コマンドラインを起動して「cd c:\」でルートに移動。サーバー名を引数にしてコマンドラインで実行する。

AddLicenseServer.vbs サーバ名

これで、レジストリには登録されたようだ。

サーバーの画面で「管理ツール」から「ターミナルサービスライセンス」を選ぶと、以前は「ライセンスサーバーが見つかりません」といったメッセージが表示されていたのだが、今回はライセンスサーバーがすんなりと表示された。うまく行っているようだ。

とりあえず、ライセンスサーバーについては、これでひと段落したと考えよう。