最近,GPU 入れ替え案件があり,せっかくなので License Server を Linux 版で作り直す事にしました.
はい,タイトル通り Photon に入れます.今回は自分の備忘録ですw.
Photon OS は Minimal Install して tdnf update しておきます.
vGPU License Server の Document はこちらを参考にしています.Requirement 通りの VM を作成し,MAC address "Manual" にしておきます.
Java の Install
利用可能な Version を確認します.
root@vmug [ ~ ]# tdnf list available | grep jdk openjdk10.x86_64 1.10.0.23-7.ph4 photon-release openjdk10-doc.x86_64 1.10.0.23-7.ph4 photon-release openjdk10-src.x86_64 1.10.0.23-7.ph4 photon-release openjdk11.x86_64 11.0.9-1.ph4 photon-release openjdk11-doc.x86_64 11.0.9-1.ph4 photon-release openjdk11-src.x86_64 11.0.9-1.ph4 photon-release openjdk8.x86_64 1.8.0.265-2.ph4 photon-release openjdk8-doc.x86_64 1.8.0.265-2.ph4 photon-release openjdk8-sample.x86_64 1.8.0.265-2.ph4 photon-release openjdk8-src.x86_64 1.8.0.265-2.ph4 photon-release
新しいモノ好きなので,迷わず 11 を Install します.
root@vmug [ ~ ]# tdnf install openjdk11 Installing: slang x86_64 2.3.2-1.ph4 photon-release 3.12M 3273998 newt x86_64 0.52.21-1.ph4 photon-release 179.54k 183846 chkconfig x86_64 1.9-2.ph4 photon-updates 737.55k 755248 openjdk11 x86_64 11.0.9-1.ph4 photon-release 300.78M 315393368 Total installed size: 304.80M 319606460 Is this ok [y/N]: y Downloading: slang 826995 100% newt 101755 100% chkconfig 187201 100% openjdk11 168242283 100% Testing transaction Running transaction Installing/Updating: slang-2.3.2-1.ph4.x86_64 Installing/Updating: newt-0.52.21-1.ph4.x86_64 Installing/Updating: chkconfig-1.9-2.ph4.x86_64 Installing/Updating: openjdk11-11.0.9-1.ph4.x86_64 Complete!
Java 用の環境変数を /etc/profile で設定します.
# Set JAVA environmentavariables export JAVA_HOME=/usr/lib/jvm/OpenJDK-1.11.0 export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
Java の動作確認,問題なさそうです.
root@vmug [ / ]# source /etc/profile 10:37:26 up 2 min, 0 users, load average: 0.00, 0.00, 0.00 tdnf update info not available yet! root@vmug [ / ]# which java /usr/lib/jvm/OpenJDK-1.11.0/bin/java root@vmug [ / ]# java -version openjdk version "11.0.9-internal" 2020-10-20 OpenJDK Runtime Environment (build 11.0.9-internal+0-adhoc..openjdk-11.0.9) OpenJDK 64-Bit Server VM (build 11.0.9-internal+0-adhoc..openjdk-11.0.9, mixed mode)
Tomcat の Install
Group と User 作成しておきます.
root@vmug [ / ]# groupadd tomcat root@vmug [ / ]# useradd -d /usr/share/tomcat -g tomcat -M -s /bin/false tomcat
Apache Tomcat サイトから Binary をダウンロードします.
こちらも,迷わず Latest の Tomcat 10 を!と試したのですが,License Server がまだ jakarta.servlet.Filter 対応してないので,泣く泣く 9.0.55 を入れ直しました.
Tomcat 用ディレクトリ作成.
root@vmug [ / ]# mkdir -p /usr/share/tomcat
Binary 展開.
root@vmug [ /usr/local/src ]# tar xvf apache-tomcat-9.0.55.tar.gz -C /usr/share/tomcat --strip-components 1 root@vmug [ /usr/local/src ]# chgrp -R tomcat /usr/share/tomcat/
ディレクトリのアクセス権・オーナー変更
root@vmug [ /usr/local/src ]# cd /usr/share/tomcat/ root@vmug [ /usr/share/tomcat ]# chmod -R g+r conf root@vmug [ /usr/share/tomcat ]# chmod g+x conf root@vmug [ /usr/share/tomcat ]# chown -R tomcat webapps/ work/ temp/ logs/
Tomcat の自動起動設定
自動起動 script を用意します.
/etc/systemd/system/tomcat.service を以下の内容で作成して chmod 644 しておきます.
[Unit] Description=Apache Tomcat Server After=network.target [Service] Type=forking Environment=JAVA_HOME=/usr/lib/jvm/OpenJDK-1.11.0 Environment=CATALINA_PID=/usr/share/tomcat/temp/tomcat.pid Environment=CATALINA_HOME=/usr/share/tomcat Environment=CATALINA_BASE=/usr/share/tomcat Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC' Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom' ExecStart=/usr/share/tomcat/bin/startup.sh ExecStop=/usr/share/tomcat/bin/shutdown.sh User=tomcat Group=tomcat UMask=0007 RestartSec=15 Restart=always [Install] WantedBy=multi-user.target
Service Unit File を load して systemctl で enable にします.
root@vmug [ / ]# systemctl daemon-reload root@vmug [ / ]# sudo systemctl enable tomcat.service Created symlink /etc/systemd/system/multi-user.target.wants/tomcat.service → /etc/systemd/system/tomcat.service.
Tomcat を起動して確認します.問題なさそうです.
root@vmug [ / ]# sudo systemctl start tomcat.service root@vmug [ / ]# systemctl status tomcat.service ● tomcat.service - Apache Tomcat Server Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2021-12-02 19:03:36 JST; 20s ago Process: 2256 ExecStart=/usr/share/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS) Main PID: 2263 (java) Tasks: 20 (limit: 4713) Memory: 132.7M CGroup: /system.slice/tomcat.service └─2263 /usr/lib/jvm/OpenJDK-1.11.0/bin/java -Djava.util.logging.config.file=/usr/share/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.> Dec 02 19:03:36 vcslic systemd[1]: Starting Apache Tomcat Server... Dec 02 19:03:36 vcslic startup.sh[2256]: Tomcat started. Dec 02 19:03:36 vcslic systemd[1]: Started Apache Tomcat Server.
http://fqdn:8080/ に接続してお馴染みのページが表示されたら OK !
License Server Install
準備が整ったので,License Server を Install します.
License Portal から Binary を入手して適当なディレクトリで解凍します.
Photon を Minimal で入れたせいで, unzip コマンドも無いので,必要に応じて足りないものは tdnf install しましょう.
root@vmug [ /usr/local/src ]# unzip NVIDIA-ls-linux-2021.07-2021.07.0.30193485.zip
ディレクトリ名が長いので NVIDIA-ls-linux に変更し,setup.bin に実行権限付けて Install 開始,console で必要項目に答えながら進めるだけ.
root@vmug [ /usr/local/src/NVIDIA-ls-linux ]# chmod +x setup.bin root@vmug [ /usr/local/src/NVIDIA-ls-linux ]# ./setup.bin -i console (省略) Install Complete ---------------- License Server has been successfully installed to: /opt/flexnetls/nvidia PRESS <ENTER> TO EXIT THE INSTALLER:
http://fqdn:8080/licserver にアクセスして無事 License Server の稼働を確認できました.
ここまでくれば,あとはドキュメントの通り管理者ユーザー設定したり,HTTPS 化するだけですね.
今回の教訓
いつもの事ですが,Ver X.X.X or later とあるとすぐに Latest で試そうとする悪い癖が治っていませんw.
/licserver アクセスでエラーになり,catalina.out の中探りました.
02-Dec-2021 19:36:46.777 SEVERE [main] org.apache.catalina.core.StandardContext.startInternal One or more Filters failed to start. Full details will be found in the appropriate container log file 02-Dec-2021 19:36:46.777 SEVERE [main] org.apache.catalina.core.StandardContext.startInternal Context [/fne] startup failed due to previous errors 02-Dec-2021 19:36:48.088 SEVERE [main] org.apache.catalina.core.StandardContext.startInternal One or more Filters failed to start. Full details will be found in the appropriate container log file 02-Dec-2021 19:36:48.088 SEVERE [main] org.apache.catalina.core.StandardContext.startInternal Context [/licserver] startup failed due to previous errors
localhost.日付.log で cast NG 発見.
03-Dec-2021 08:46:43.861 SEVERE [main] org.apache.catalina.core.StandardContext.filterStart Exception starting filter [struts2] java.lang.ClassCastException: class org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter cannot be cast to class jakarta.servlet.Filter (org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @50825a02; jakarta.servlet.Filter is in unnamed module of loader java.net.URLClassLoader @6d7b4f4c)
切り分けどーしようと悩んでいたら,VMUG の友・ポメさんが Java 11 で Lisence Server 動くよと教えてくれたので,Tomcat 10 -> 9 に入れ直すだけで長短時間解決できました!ポメさん,今度一杯奢りますね!
追記 2021/12/08
ついでに,HTTPS 化についても加えておきます.
まず,HTTPS for Connections Between the Management Interface and the License Server ですが,これはドキュメントにもある通り,同一ホスト内のプロセス間なので,今回はスキップしますw.
License Server の Web U/I 経由でログインするので,HTTPS for Connections from a Web Browser to the License Server Management Interface は必須ですね.
keytool で キーストアファイルを作成します.CN, OU 等証明書に必要な事項に答えながら進めましょう.
root@vmug [ /usr/share/tomcat/conf ]# keytool -genkey -alias tomcat -keyalg RSA -keystore keystore.jks
キーストアに tomcat のアクセス権を加えます.
root@vmug [ /usr/share/tomcat/conf ]# chown root:tomcat ./keystore.jks
/usr/share/tomcat/conf/server.xml で JSSE スタイルの SSL Connector 部分を有効にして,certificateKeystoreFile に先程作成したキーストアファイル名を,certificateKeystorePassword にキーストアのパスワードを設定.
(省略) <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true"> <SSLHostConfig> <Certificate certificateKeystoreFile="conf/keystore.jks" certificateKeystorePassword="キーストアのパスワード" type="RSA" /> </SSLHostConfig> (省略)
あとは tomcat restart して https://FQDN:8443/licserver にアクセスできれば完了です!