ライセンスの制限と確保
制限スクリプトを書く
制限スクリプトは,サイト規模でインストールしてある Mathematica の管理に大変便利である.これを使うと,ネットワーク上で許可されていないユーザが Mathematica にアクセスするのを阻止したり,特定のユーザへのライセンスを確保したりすることができる.制限スクリプトはプラットフォーム間で互換であり,IPv4とIPv6のどちらもサポートし,曖昧さのない制御が可能である.これを書くためには,プログラミングの経験も必要ない.制限スクリプトの文法は,HTMLファイルへのアクセスを制御するためにWebサーバで使用される.htaccessファイルの文法と似ている.
確保されたライセンスは常に確保されている.それが使用中であるかどうかにかかわらず,他のユーザやマシンからはアクセスできない.指定されたユーザあるいはマシンのいずれも Mathematica を実行していないとしても,他のユーザおよびマシン用のライセンスプールは確保されたライセンス数だけ減少する.
典型的な制限スクリプトのレイアウトは次のようになる.定義の後に,制限スクリプトの例が挙げてある.
AuthName Sample
AuthGroupFile mathlmgroup.txt
# Precedence
order ( allow,deny | deny,allow )
# Machine restriction
allow from ( all | machines ... )
allow hostgroup machinegroups ...
deny from ( all | machines ... )
deny hostgroup machinegroups ...
# User restriction
allow user ( all | users ... )
allow group usergroups ...
deny user ( all | users ... )
deny group usergroups ...
# License reservation
reserve [count] from machines ...
reserve [count] hostgroup machinegroups ...
reserve [count] user users ...
reserve [count] group usergroups ...
reservesub [count] user users ...
reservesub [count] group usergroups ...
用語の定義
次は Mathematica ライセンスを確保したり制限したりするために使用する用語である.
名前 | 説明 |
| AuthName Sample | スクリプトの名前を定義する |
| AuthGroupFile mathlmgroup.txt | ユーザあるいはマシンのグループの定義を含むファイルを指定する.この行はキーワードgroupまたはhostgroupに関連するときのみ必要である |
| order ( allow,deny | deny,allow ) | これら2つの指示子の優先順位を定義する.後者が前者に優先する.また,デフォルトのアクセス状態を後者に設定する.デフォルトのアクセス状態は,明示的な規則にマッチしないリクエストに適用される.デフォルト値はorder deny,allowである |
| allow from ( all | machines ... ) | リストされたホスト名,ドメイン,IPアドレス,IPアドレスの範囲からのライセンスリクエストを許可する |
| allow hostgroup machinegroups ... | リストされたマシングループのメンバーからのライセンスリクエストを許可する |
| deny from ( all | machines ... ) | リストされたホスト名,ドメイン,IPアドレス,IPアドレスの範囲からのライセンスリクエストを却下する |
| deny hostgroup machinegroups ... | リストされたマシングループのメンバーからのライセンスリクエストを却下する |
| allow user ( all | users ... ) | リストされたユーザからのライセンスリクエストを許可する |
| allow group usergroups ... | リストされたユーザグループのメンバーからのライセンスリクエストを許可する |
| deny user (all | users ... ) | リストされたユーザからのライセンスリクエストを却下する |
| deny group usergroups ... | リストされたユーザグループのメンバーからのライセンスリクエストを却下する |
| reserve [count] from machines ... | リストされたホスト名,ドメイン,IPアドレス,IPアドレスの範囲のそれぞれに,フロントエンドライセンスとカーネルライセンスを count 個ずつ確保する |
| reserve [count] hostgroup machinegroups ... | リストされたマシングループのメンバーそれぞれに,フロントエンドライセンスとカーネルライセンスを count 個ずつ確保する |
| reserve [count] user users ... | リストの中の各ユーザに,フロントエンドライセンスとカーネルライセンスを count 個ずつ確保する |
| reserve [count] group usergroups ... | リストされたユーザグループの各ユーザに,フロントエンドライセンスとカーネルライセンスを count 個ずつ確保する |
| reservesub [count] from machines ... | リストされたホスト名,ドメイン,IPアドレス,IPアドレスのそれぞれに対して count 個のサブフロントエンドプロセスと count 個のサブカーネルプロセスを確保する |
| reservesub [count] hostgroup machinegroups ... | リストされたマシングループのそれぞれに対して count 個のサブフロントエンドプロセスライセンスと count 個のサブカーネルプロセスライセンスを確保する |
| reservesub [count] user users ... | リストの中の各ユーザに対して count 個のサブフロントエンドプロセスライセンスと count 個のサブカーネルプロセスライセンスを確保する |
| reservesub [count] group usergroups ... | リストされたユーザグループの各ユーザに対して count 個のサブフロントエンドプロセスライセンスと count 個のサブカーネルプロセスライセンスを確保する |
上記の制限スクリプト指示子はすべて,追加の設定をしなくても自動的にIPv4およびIPv6環境をサポートする.
ライセンスの確保
reserveおよびreservesub指示子を使うと,特定ユーザあるいはマシンが使用するライセンスが保証できる.確保されたライセンスは常に確保された状態であり,他のユーザやマシンからはアクセスできないことに注意する.
場合によっては,確保するフロントエンド数とカーネルライセンス数が同じでないこともあろう.この場合はreservefe,reservesubfe,reservekernel, reservesubkernelという追加の指示子を使うとよい.reservefeおよびreservekernelのシンタックスはreserveのシンタックスと同一であり,reservesubfeとreservesubkernelのシンタックスはreservesubのシンタックスと同一である.
並列計算あるいはグリッド計算のためにカーネルおよびフロントエンドを確保する場合,reservesub,reservesubfe,reservesubkernelといったサブプロセスの確保も必要である.例えば,ネットワーク上のユーザが大きいデータをモデル化するために16個の並列カーネルを必要としているとする.このとき,他のユーザがモデル化のプロセスを邪魔しないですむよう,reservesubkernel指示子を使うのである.
制限スクリプトの例
グループを含まないスクリプト
次のスクリプトは,user1およhostname1からの Mathematica ライセンスのリクエストを却下する.それ以外のユーザおよびマシンからのライセンスリクエストは,許可される.
次のスクリプトは,192.168.0.1から192.168.0.5,および192.168.2.1から192.168.2.12までの範囲のuser1からuser5までのユーザからのライセンスリクエストのみを許可する.この他のユーザやマシンからのライセンスリクエストは,却下される.
AuthName Sample2
order deny,allow
deny from all
allow from [192.168.2.1 192.168.2.12] 192.168.0.1 192.168.0.5
deny user all
allow user user1 user2 user3 user4 user5
グループを含むスクリプト
次のスクリプトは上記のスクリプトと同じ制限を課すが,ユーザとマシンがグループおよびホストグループで指定されている.
AuthName Sample3
AuthGroupFile mathlmgroup1.txt
order deny,allow
deny from all
allow hostgroup group1
deny user all
allow group group2 group3
これはmathlmgroup1.txtファイルである.これは1つのマシングループと2つのユーザグループを定義する.
group1: 192.168.0.1 192.168.0.5 [192.168.2.1 192.168.2.12]
group2: user1 user2 user3
group3: user4 user5
デフォルトのアクセス状態を例示するスクリプト
以下のスクリプトでは,すべてのユーザ,host1以外のマシンからのライセンスリクエストが許可される.user1がhost1にログインしているときにライセンスをリクエストしても,ライセンスは許可される.リクエストは,このスクリプトの両方の規則にマッチしなければならない.また,order指示子の値によりallow指示子が優先であることが指定されている.host1にログインしているuser2からのライセンスリクエストは却下されることに注意する.
上のスクリプトと下のスクリプトでは,order指示子の値だけが異なるが,スクリプトの意味は逆転してしまう.下のスクリプトでは,user1からのライセンスリクエストしか許可しない.host1にログインしているuser1からのライセンスリクエストは却下される.そのようなリクエストは,両方の規則にマッチするが,deny規則が優先であるためにリクエストが却下されるのである.
ライセンス確保のスクリプト
以下のスクリプトは,すべてのライセンスリクエストを許可する.これは,アドレス192.168.0.1に3つのカーネルライセンスを,user1にフロントエンドライセンスとカーネルライセンスを1つずつ確保している.確保されたライセンスは常に確保されおり,他のマシンやユーザからはアクセスできない.
AuthName Sample6
order allow,deny
allow from all
allow user all
reservekernel 3 from 192.168.0.1
reserve user user1
以下のスクリプトはすべてのライセンスリクエストを許可する.これはuser1に対してフロントエンドライセンスを2つ,カーネルライセンスを2つ,カーネルサブプロセスライセンスを4つ確保している.これで並列計算に必要なリソースをuser1に保証するのである.並列計算についての詳細は「Parallel Computing Toolsユーザガイド」を参照のこと.
AuthName Sample7
order allow,deny
allow from all
allow user all
reservefe 2 user user1
reservekernel 2 user user1
reservesubkernel 4 user user1
以下のスクリプトは,user1,user2,hostname1,hostname2,domain1.com,192.168.1.1から192.168.2.9の範囲のアドレスからのライセンスリクエストのみを許可する.これではhostname2にカーネルライセンスとフロントエンドライセンスを3つずつ,192.168.1.1から192.168.2.9までの範囲のアドレスにもカーネルライセンスとフロントエンドライセンスを3つずつ,user1にはカーネルライセンスとフロントエンドライセンスを1つずつ,user2にもカーネルライセンスとフロントエンドライセンスを1つずつ確保する.このスクリプトでは,合計で8つのフロントエンドライセンスと8つのカーネルライセンスが確保される.
AuthName Sample8
order deny,allow
deny from all
allow from hostname1 hostname2 .domain1.com [192.168.1.1 192.168.2.9]
deny user all
allow user user1 user2
reserve 3 from hostname2 [192.168.1.1 192.168.2.9]
reserve user user1 user2
reserveの最初のインスタンスが以下の形式でも書けることが分かれば,Sample8で制限されるライセンスの数を可視化したほうが簡単かもしれない.
reserve 3 from hostname2
reserve 3 from [192.168.1.1 192.168.2.9]
グループのライセンス確保スクリプト
以下のスクリプトもSample6のスクリプトと同じ制限を課すが,ユーザとマシンがグループおよびホストグループで指定されている.
AuthName Sample9
AuthGroupFile mathlmgroup2.txt
order deny,allow
deny from all
allow hostgroup group1 group2
deny user all
allow group group3
reservekernel 3 hostgroup group2
reserve group group3
これはmathlmgroup2.txtファイルである.これは2つのマシングループと1つのユーザグループを定義する.
制限スクリプトを使う
制限スクリプトを使うためには,オプション-restrictの後にスクリプトのパス名を置いて MathLM を起動する.制限スクリプトには,どのようなファイル名(および拡張子)を与えることもできる.コマンドラインオプションの詳細については,「MathLM の起動」を参照のこと.
制限スクリプトあるいはAuthGroupFileを変更したら,MathLM を再起動しなければならない.
