Matlabライセンスサーバー入れ替え作業
所内で運用していた Matlab のライセンサーバーを最新に更新するためには、OS を上げる必要が生じたので、別途ライセンスサーバー用として Linux にて構築した
今まで CentOS6 上で Matlab 2019 までのライセンスサーバーを稼働していたが、現在の 2021b(まもなく 2020a)へ更新するには、システム要件が Red Hat 7.5 以上が必須要件となった。
現在の CentOS6 上で更新をダメ元で試してみたが、やはりライブラリ関連で無理でした。
OS の選定
Windows や Mac でもライセンスサーバーを起動出来るが、安定稼働するなら Linuxが良いだろうと、RedHat 系と Debian 系で悩みましたが、EOL が 2029 年までのAlmaLinux8 に決め、構築することにした
AlmaLinux8 の構築については、ほぼ CentOS8 構築と変わらないので、割愛
ちなみに、SELinux,Firewall,ipv6 無効、時刻同期設定は行なっている
また、root での起動は推奨されていないので、matlab ユーザーアカウントを作成した
Matlab ライセンスサーバー変更手順
基本的に、公式の手順通り進めていけば良い
新しいサーバーの HostID(MAC)を調べておく
ライセンスセンターへログイン
マイアカウントからソフトウェアのラベルを選ぶ
インストールとアクティベーションから該当のラベルを選んで、アクティベーション停止
をクリック新たに HostID とラベルを入力し、インストール用のファイルインストレーションキー(FIK)およびライセンスファイル(license.lic)をダウンロード
新しいサーバーにインストール用 ISO ファイル及び、FIK と licence.lic を転送しておく
旧サーバーのライセンスサーバーを停止及び自動起動停止に設定する
CentOS6なので、
service flexnet stop
とかchkconfig flexnet off
とか
Matlab ライセンスサーバーインストール手順
非対話(Silent)モードでもインストールが可能かもしれないが、トラブル報告が多いので、無難に GUI の対話式でインストールを行なった
- インストール用の ISO をマウント
sudo mount -t iso9660 -o loop R2021b_Linux.iso /mnt/matlab
- 保存先を/usr/local/MATLAB/にするので、MATLAB フォルダを書き込み可にしておく
- マウントした ISO ファイル内のインストーラーを起動
- サインインしないで、
詳細オプション
をクリック ライセンスマネージャーインストール
を選択- ライセンスファイル(license.lic)を読み込む
- 保存先を指定(/usr/local/MATLAB/R2021b)
R2021b フォルダは自動で作成されるので、予め作成してはいけない - インストール完了
起動テスト
インストールされたバイナリファイルは、/usr/local/MATLAB/R2021b/etc/glnxa64/
内のファイルを実行するはずなのだが、lmuttil や lmgrd のどれもファイルがないとの謎のエラーが出る
./lmgrd
zsh: no such file or directory: ./lmgrd
$ file lmgrd
lmgrd: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-lsb-x86-64.so.3, for GNU/Linux 2.6.18, stripped
どうやら、ld-lsb-x86-64.so.3 が原因らしく、 $ /lib64/ld-linux-x86-64.so.2 ./lmgrd
としたら起動した
あまりスマートな解決方法ではないかもしれないが、ライブラリを誤魔化す
$ sudo ln -s /lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3
$ ldd lmgrd
linux-vdso.so.1 (0x00007fffb0ffb000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f78d9522000)
libm.so.6 => /lib64/libm.so.6 (0x00007f78d91a0000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f78d8f88000)
libc.so.6 => /lib64/libc.so.6 (0x00007f78d8bc3000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f78d89bf000)
/lib64/ld-lsb-x86-64.so.3 => /lib64/ld-linux-x86-64.so.2 (0x00007f78d9742000)
Systemd 用ファイル
インストール時に flexnet.boot.linux なる設定ファイルがあるものの、Systemd 用には対応していないので、自分で作成する必要がある
/etc/systemd/system/matlab.service を下記の内容で作成(ファイル名は任意)
File: matlab.service
[Unit]
Description=MATLAB FlexLM license manager
[Service]
Type=forking
ExecStart=/usr/local/MATLAB/R2021b/etc/lmstart
ExecStop=/usr/local/MATLAB/R2021b/etc/lmdown
KillMode=none
Restart=on-failure
RestartSec=90
#
User=matlab
[Install]
WantedBy=multi-user.target
起動・自動起動設定
$ sudo systemctl status matlab
● matlab.service - MATLAB FlexLM license manager
Loaded: loaded (/etc/systemd/system/matlab.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2022-02-14 17:06:43 JST; 7min ago
Process: 869 ExecStart=/usr/local/MATLAB/R2021b/etc/lmstart (code=exited, status=0/SUCCESS)
Main PID: 1534 (lmboot)
Active: active(running)になっていなければ起動されているので、inactive になっていなかったら起動する
$ sudo systemctl start matlab
OS 立ち上げ時に自動で起動設定
$ sudo systemctl enable matlab
その他
/usr/local/MATLAB を読み込みモードに戻しておきましょう
lmstat や/var/tmp/lm_TMW.dat のログで通信しているか確認しておきましょう
firewall導入する場合は、デフォルトポートの 27000,27001 を通しておく
エンドユーザへ license.dat を配布する場合は、licence.dat 内の DAEMON 行を削除し、
USE_SERVER
に変えておきましょう(ちなみに、license.datはライセンスサーバー上の
/usr/local/MATLAB/R201b/etc
に作成されている)