Oficiálně Autodesk License Manager nepodporuje Ubuntu-server, ani ubuntu, ani debian.
Pokud chcete mít operační systém zdarma a provozovat na něm flexera flexnetserver od autodesku, potřebujete RockyLinux 9. Oficiální návod na podporované operační systémy zde.
Následující příklad je spíš „výukový“ a běží za roota (v pozdější fázi článku si vytvoříme uživatele flexlm a za něj necháme server běžet), vytvořte si proto uživatele třeba lmgrd, nebo jako v mém případě flexlm a za něj vše pouštějte.
Nyní se pojďme podívat, jak se toho dá dosáhnout na ubuntu-server 22.04 LTS
Stažení a instalace .rpm balíčku na ubuntu-server 22.04 LTS
Největším zádrhelem licenčního serveru pro autodesk tkví v tom, že neposkytují instalační balíčky pro debian/ubuntu servery ve formátu .deb, ale pro RedHatí systémy ve formátu .rpm. Nás to ale nezastaví.
apt install alien -y
Výsledek:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
alien is already the newest version (8.95.5).
alien set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 2 not upgraded.
root@server:~# alien -V
alien version 8.95.5
Nainstalujeme .rpm balíček na ubuntu-server 22.04 LTS
Zdroj balíčku zde. .Rpm balíček normálně na debianu, ani ubuntu Linuxu nenainstalujete. Ale dá se to pomocí příkazu alien „obejít“.
# stáhneme a rozbalíme balíček pomocí:
wget https://damassets.autodesk.net/content/dam/autodesk/www/files/linux/nlm11-19-4-1-ipv4-ipv6-linux64.tar.gz
tar -xvzf nlm11-19-4-1-ipv4-ipv6-linux64.tar.gz
# A nainstalujeme ho:
root@server:~# alien -i nlm11.19.4.1_ipv4_ipv6_linux64.rpm
Warning: Skipping conversion of scripts in package adskflexnetserverIPV6: postinst
Warning: Use the --scripts parameter to include the scripts.
dpkg --no-force-overwrite -i adskflexnetserveripv6_11.19.4-2_amd64.deb
Selecting previously unselected package adskflexnetserveripv6.
(Reading database ... 97434 files and directories currently installed.)
Preparing to unpack adskflexnetserveripv6_11.19.4-2_amd64.deb ...
Unpacking adskflexnetserveripv6 (11.19.4-2) ...
Setting up adskflexnetserveripv6 (11.19.4-2) ...
Řešení 3 redundantních serverů, 2 jsou Rocky Linux9 a třetí ubuntu-server 22.04 LTS -> FUNGUJE!
Server se nainstaloval do:
/opt/flexnetserver/
Vytvoříme si adresář pro licenční server:
mkdir -p /opt/flexnetserver/licenses/
nakopírujeme do /opt/flexnetserver/licenses/licence.lic
Jak musí vypadat záhlaví licence.lic na všech serverech
SERVER server2 macadresa 27005 PRIMARY_IS_MASTER=1
SERVER server3 macdresa 27005
SERVER server a0a1a2<příkladMACadresy>a3a4a5 27005
USE_SERVER
VENDOR adskflex port=2080
INCREMENT ...a zbytek licence
INCREMENT ...další licence
INCREMENT ...další licence, pokud je potřebujete pokombinovat více licencí do jednoho souboru
Vyřešme errory, než nastanou
Kdybychom teď na ubuntu-server 22.04 LTS pustili flexnet server, vypíše to error:
Can’t make directory /usr/tmp/.flexlm, errno: 2(No such file or directory)
řešení:
mkdir -p /usr/tmp/
chmod 700 /usr/tmp/ -R
Startujeme server
-c odkazuje na cestu k licenčnímu souboru, -l cesta kam server posílá logy.
/opt/flexnetserver/lmgrd -c /opt/flexnetserver/licenses/licence.lic -l /opt/flexnetserver/server_log.log
Funguje!
Tady budu muset hodně cenzurovat, ale vy to určitě pochopíte.
/opt/flexnetserver# cat server_log.log
23:27:34 (lmgrd) -----------------------------------------------
23:27:34 (lmgrd) Please Note:
23:27:34 (lmgrd)
23:27:34 (lmgrd) This log is intended for debug purposes only.
23:27:34 (lmgrd) In order to capture accurate license
23:27:34 (lmgrd) usage data into an organized repository,
23:27:34 (lmgrd) please enable report logging. Use Flexera's
23:27:34 (lmgrd) software license administration solution,
23:27:34 (lmgrd) FlexNet Manager, to readily gain visibility
23:27:34 (lmgrd) into license usage data and to create
23:27:34 (lmgrd) insightful reports on critical information like
23:27:34 (lmgrd) license availability and usage. FlexNet Manager
23:27:34 (lmgrd) can be fully automated to run these reports on
23:27:34 (lmgrd) schedule and can be used to track license
23:27:34 (lmgrd) servers and usage across a heterogeneous
23:27:34 (lmgrd) network of servers including Windows NT, Linux
23:27:34 (lmgrd) and UNIX.
23:27:34 (lmgrd)
23:27:34 (lmgrd) -----------------------------------------------
23:27:34 (lmgrd)
23:27:34 (lmgrd)
23:27:34 (lmgrd) Server's System Date and Time: Tue Sep 03 2024 23:27:34 CEST
23:27:34 (lmgrd) Changing message security level from -1 to 0
23:27:34 (lmgrd) SLOG: Summary LOG statistics is enabled.
23:27:34 (lmgrd) The license server manager (lmgrd) running as root: <- na tohle pozor, vytvořte si vlastního uživatele a pod ním server spusťte, v mém příkladu jsem to kvůli demonstračním účelům jel všechno za roota. Později v článku vytvoříme uživatele flexlm
23:27:34 (lmgrd) This is a potential security problem
23:27:34 (lmgrd) and is not recommended.
23:27:34 (lmgrd) FlexNet Licensing (v11.19.4.1 build 291070 x64_lsb) started on server (linux) (9/3/2024)
23:27:34 (lmgrd) Copyright (c) 1988-2023 Flexera. All Rights Reserved.
23:27:34 (lmgrd) World Wide Web: http://www.flexerasoftware.com
23:27:34 (lmgrd) License file(s): /opt/flexnetserver/licenses/licence.lic
23:27:34 (lmgrd) lmgrd tcp-port 27005
23:27:34 (lmgrd) (@lmgrd-SLOG@) ===============================================
23:27:34 (lmgrd) (@lmgrd-SLOG@) === LMGRD ===
23:27:34 (lmgrd) (@lmgrd-SLOG@) Start-Date: Tue Sep 03 2024 23:27:34 CEST
23:27:34 (lmgrd) (@lmgrd-SLOG@) PID: 399450
23:27:34 (lmgrd) (@lmgrd-SLOG@) LMGRD Version: v11.19.4.1 build 291070 x64_lsb ( build 291070 (ipv6))
23:27:34 (lmgrd) (@lmgrd-SLOG@)
23:27:34 (lmgrd) (@lmgrd-SLOG@) === Network Info ===
23:27:34 (lmgrd) (@lmgrd-SLOG@) Listening port: 27005
23:27:34 (lmgrd) (@lmgrd-SLOG@)
23:27:34 (lmgrd) (@lmgrd-SLOG@) === Startup Info ===
23:27:34 (lmgrd) (@lmgrd-SLOG@) Server Configuration: 3-Server Certificate
23:27:34 (lmgrd) (@lmgrd-SLOG@) Command-line options used at LS startup: -c /opt/flexnetserver/licenses/licence.lic -l /opt/flexnetserver/server_log.log
23:27:34 (lmgrd) (@lmgrd-SLOG@) License file(s) used: /opt/flexnetserver/licenses/licence.lic
23:27:34 (lmgrd) (@lmgrd-SLOG@) ===============================================
23:27:34 (lmgrd) Redundant server configuration enabled. Attempting to establish quorum...
23:27:34 (lmgrd) Trying to establish connections to other redundant servers...
23:27:34 (lmgrd) Attempting connection to primary redundant server server2
23:27:34 (lmgrd) Attempting connection to secondary redundant server server3
23:27:39 (lmgrd) Established connection to primary redundant server server2
23:27:39 (lmgrd) Established connection to secondary redundant server server3
23:27:39 (lmgrd) Redundant server quorum established. Master is server2
23:27:39 (lmgrd) Starting vendor daemons ...
23:27:39 (lmgrd) Starting vendor daemon at port 2080
23:27:39 (lmgrd) Using vendor daemon port 2080 specified in license file
23:27:54 (lmgrd) The TCP port number in the license, 2080, is already in use.
23:27:54 (lmgrd) Possible causes:
23:27:54 (lmgrd) 1) The license server manager (lmgrd) is already running for this license.
23:27:54 (lmgrd) 2) The OS has not "cleared" this port since lmgrd died.
23:27:54 (lmgrd) 3) Another process is using this port number (unlikely).
23:27:54 (lmgrd) Solutions:
23:27:54 (lmgrd) 1) Make sure lmgrd and all vendor daemons for this
23:27:54 (lmgrd) license are not running.
23:27:54 (lmgrd) 2) You may have to wait for the OS to clear this port.
23:27:54 (lmgrd) Retrying for about 5 more minutes
23:28:12 (lmgrd) Still trying...
23:28:30 (lmgrd) Still trying...
23:28:36 (lmgrd) Started adskflex (internet tcp_port 2080 pid 399459)
23:28:36 (lmgrd) Disconnected from primary redundant server server2
23:28:36 (lmgrd) Disconnected from secondary redundant server server3
23:28:36 (lmgrd) Lost redundant server quorum.
23:28:36 (lmgrd) Lost redundant server quorum. Shutting down adskflex pid=399459
23:28:36 (adskflex) Unable to initialize access to trusted storage: 2
23:28:36 (adskflex) FlexNet Licensing version v11.19.4.1 build 291070 x64_lsb
23:28:36 (adskflex) SLOG: Summary LOG statistics is enabled.
23:28:36 (adskflex) SLOG: FNPLS-INTERNAL-CKPT1
23:28:36 (adskflex) SLOG: VM Status: 4
23:28:36 (adskflex) SLOG: FNPLS-INTERNAL-CKPT5
23:28:36 (adskflex) SLOG: TPM Status: 0
23:28:36 (adskflex) SLOG: FNPLS-INTERNAL-CKPT6
23:28:37 (adskflex) Server started on server for: 3DSMAX_2024_0F
23:28:37 (adskflex) 3DSMAX_2025_0F ACD_2024_0F ACD_2025_0F
23:28:37 (adskflex) CIV3D_2024_0F CIV3D_2025_0F NAVMAN_2024_0F
23:28:37 (adskflex) NAVMAN_2025_0F RVT_2025_0F
23:28:37 (adskflex) EXTERNAL FILTERS are OFF
23:28:39 (lmgrd) Trying to establish connections to other redundant servers...
23:28:39 (lmgrd) Attempting connection to primary redundant server server2
23:28:39 (lmgrd) Attempting connection to secondary redundant server server3
23:28:39 (lmgrd) adskflex using TCP-port 2080
23:28:39 (lmgrd) Established connection to primary redundant server server2
23:28:39 (lmgrd) Established connection to secondary redundant server server3
23:28:39 (adskflex) Changing message security level from -1 to 0
23:28:39 (lmgrd) Redundant server quorum established. Master is server2
23:28:39 (lmgrd) Starting vendor daemons ...
23:28:39 (lmgrd) Still trying to kill daemon adskflex pid 399459
23:28:44 (lmgrd) Sending SIGKILL to adskflex pid 399459
23:28:44 (lmgrd) adskflex exited with status 0 signal = 17
23:28:44 (lmgrd) Since this is an unknown status, license server
23:28:44 (lmgrd) manager (lmgrd) will attempt to re-start the vendor daemon.
23:28:44 (lmgrd) Starting vendor daemon at port 2080
23:28:44 (lmgrd) Using vendor daemon port 2080 specified in license file
23:28:44 (lmgrd) REStarted adskflex (internet tcp_port 2080 pid 399504)
23:28:44 (adskflex) Unable to initialize access to trusted storage: 2
23:28:44 (adskflex) FlexNet Licensing version v11.19.4.1 build 291070 x64_lsb
23:28:44 (adskflex) SLOG: Summary LOG statistics is enabled.
23:28:44 (adskflex) SLOG: FNPLS-INTERNAL-CKPT1
23:28:44 (adskflex) SLOG: VM Status: 4
23:28:44 (adskflex) SLOG: FNPLS-INTERNAL-CKPT5
23:28:44 (adskflex) SLOG: TPM Status: 0
23:28:44 (adskflex) SLOG: FNPLS-INTERNAL-CKPT6
23:28:45 (adskflex) Server started on server for: 3DSMAX_2024_0F
23:28:45 (adskflex) 3DSMAX_2025_0F ACD_2024_0F ACD_2025_0F
23:28:45 (adskflex) CIV3D_2024_0F CIV3D_2025_0F NAVMAN_2024_0F
23:28:45 (adskflex) NAVMAN_2025_0F RVT_2025_0F
23:28:45 (adskflex) EXTERNAL FILTERS are OFF
Další chyby k rozebrání
23:29:17 (adskflex) TCP_NODELAY NOT enabled <- googlil jsem a na foru uvádí, že tohle není problém, že to lze ignorovat.
Nezapomeňte na zbývajících 2 serverech s Rocky Linux 9 povolit porty na firewallu
firewall-cmd --zone=public --add-port=2080/tcp --permanent
firewall-cmd --zone=public --add-port=27005/tcp --permanent
# Port 2080 je pro klienty, aby se napojily, 27005 TCP používají servery mezi sebou.
Na klientovi
Klienti musí být schopní název nebo doménu pingnout a samozřejmě vidět port 2080.
Ověření – help / about application (o aplikaci) / správce licencí
Stále vám to nefunguje a vy už nevíte, kde je problém?
V tomto videu se dozvíte, že pro plnou redundanci vám musí běžet 3 servery. Já nakonfiguroval na začátku 1 server a divil jsem se, že to nefunguje. 🙂 Když jeden umře, rozdávání licencí stále funguje. Ale jakmile už jsou dole 2 ze 3 serverů, rozdávání licencí přestává fungovat. Defakto se jedná o RAID 5 ekvivalent licenčních serverů. Jeden server vám umřel? Fajn, ještě to fungovat bude. Při úmrtí kteréhokoliv dalšího z nich už končíte, všem programy popadají. Odkaz na video.
Dárek navíc – jednoduchý skript na deployment pro RockyLinux9
#!/bin/bash
dnf install wget tar -y
echo "https://knowledge.autodesk.com/search-result/caas/downloads/content/autodesk-network-license-manager-for-linux.html"
wget https://damassets.autodesk.net/content/dam/autodesk/www/files/linux/nlm11-19-4-1-ipv4-ipv6-linux64.tar.gz
tar -xvzf nlm11-19-4-1-ipv4-ipv6-linux64.tar.gz
rpm -vhi nlm11.19.4.1_ipv4_ipv6_linux64.rpm
ls -laht /opt/flexnetserver/
echo "Kombinovani licencnich souboru: https://www.autodesk.com/support/download-install/admins/network-deploy/combine-license-files"
/opt/flexnetserver/lmutil lmhostid
/opt/flexnetserver/lmutil lmhostid -hostname
echo "https://www.autodesk.com/support/technical/article/caas/sfdcarticles/sfdcarticles/How-to-set-up-a-Network-License-Server-Manager-on-Linux.html"
sudo /opt/flexnetserver/licenses
Servery se pod hostnamem navzájem nevidí
Server nevidí server2 a naopak?
v /etc/hosts na server2 si vložte řádek ostatních serverů:
10.15.20.31 server server.vasedomena.pokud.mate
10.15.20.33 server3 server3.vasedomena.pokud.mate
v /etc/hosts na server si vložte řádek např:
10.15.20.32 server2 server2.vasedomena.pokud.mate
10.15.20.33 server3 server3.vasedomena.pokud.mate
v /etc/hosts na server3 si vložte řádek např:
10.15.20.31 server server.vasedomena.pokud.mate
10.15.20.32 server2 server2.vasedomena.pokud.mate
Systemd script na automatické restartování a vytvoříme flexlm uživatele
Perfektní příspěvek na foru zde. A oficiální dokumentace zde. Další zdroj.
Vytvořme si na všech 3 linuxových strojích tedy uživatele flexlm (používají stejného uživatele i na foru v odkaze).
adduser flexlm
na RockyLinux9 a Redhatích distribucích musíme následně zadat příkaz:
passwd flexlm
a nastavit uživateli heslo, v případě ubuntu-server 22.04 LTS se při vytváření uživatele skript zeptá na to, jaké nastavit uživateli heslo.
obsah skriptu /root/flexlmrestarter.sh
#!/bin/bash
echo "
#!/bin/bash
/opt/flexnetserver/lmgrd -c /opt/flexnetserver/licenses/license.lic -l /opt/flexnetserver/server_log.log
" > /opt/flexnetserver/start.sh
mkdir -p /usr/local/flexlm/licenses/
ln -s /opt/flexnetserver/licenses/licence.lic /usr/local/flexlm/licenses/license.dat
chown flexlm:flexlm /usr/local/flexlm/ -R
chmod 700 /usr/local/flexlm/ -R
echo "
[Unit]
Description=FlexNet Server
After=network.target
[Service]
Type=simple
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Type=forking
ExecStart=/bin/bash /opt/flexnetserver/start.sh
User=flexlm
Restart=on-failure
[Install]
WantedBy=multi-user.target
" > /etc/systemd/system/flexnetserver.service
chmod 644 /etc/systemd/system/flexnetserver.service
usermod -d /opt flexlm
usermod -c "Privileged FlexLM User" flexlm
usermod -u 123 flexlm
groupmod -g 123 flexlm
usermod -s /sbin/nologin flexlm
find /opt/flexnetserver/ -exec chown flexlm {} \;
find /opt/flexnetserver/ -exec chgrp flexlm {} \;
find /usr/tmp/ -exec chown flexlm {} \;
find /usr/tmp/ -exec chgrp flexlm {} \;
systemctl daemon-reload
systemctl enable flexnetserver.service
systemctl start flexnetserver.service
systemctl status flexnetserver.service
spustíme pomocí:
chmod 755 flexlmrestarter.sh && ./flexlmrestarter.sh
Skript nám nainstaluje flexnetserver službu do systemd, po restartu serveru, služba automaticky naběhne.
ps aux|grep lmgrd
flexlm 758 0.0 0.0 14076 6072 ? Sl 01:45 0:00 /opt/flexnetserver/lmgrd -c /opt/flexnetserver/licenses/license.lic -l /opt/flexnetserver/server_log.log
Ikdyž server killneme pomocí:
kill $(pgrep lmgrd)
tak server zase znovu naběhne zcela automaticky. :)
Skript otestován na RockyLinux 9.4 a ubuntu-server 22.04 LTS
Spuštění serveru ručně jako jiný uživatel
runuser -l flexlm -c '/opt/flexnetserver/lmgrd -c /opt/flexnetserver/licenses/license.lic -l /opt/flexnetserver/server_log.log'
ověření, že už vidíme běžet server za flexlm uživatele:
ps aux|grep lmgrd
flexlm 2775 0.0 0.0 14024 5568 ? Sl 01:28 0:00 /opt/flexnetserver/lmgrd -c /opt/flexnetserver/licenses/license.lic -l /opt/flexnetserver/server_log.log
Kde na autodesku vygeneruju licence pro licenční server?
(pokud spadám do Education programu)
Všichni, kdo jste zaplatili těžké peníze za pár kusů licencí, následující odstavce vás budou extrémně bolet, protože Autodesk např. pro vzdělávací zařízení rozdává licence po multilicencích nabitých na 3000 kusů.
Prvně musíte licence získat a vyklikat na autodesk.com/education/edu-software/overview
Už mám licenci, kde k ní vygeneruji licenční soubor?
Zde a dávám to sem přesně proto, že je vždycky hrozná otrava se k tomu linku doklikat, ten návod, jak se k tomuto odkazu doklikat má asi 11 bodů, které vás dovedou pouze k licenci, která tam je vygenerovaná pro použití s jejich servery, ale ne s tím vaším: https://registeronce.autodesk.com/prodreg/
Ještě musím přidat další licence, jak na to?
Přidáte na konec licence.lic souboru v /opt/flexnetserver/licenses/licence.lic licenci začínající od INCREMENT až na konec toho, co vám autodesk vygeneroval. A pozor, na všech 3 serverech.
Pak dáte za chodu reread (znovu načíst licence). Udělal jsem to jen na jednom ze serverů a licence hned obratem na to šla aktivovat.
/opt/flexnetserver/lmutil lmreread -c /opt/flexnetserver/licenses/licence.lic
/opt/flexnetserver/server_log.log pak ukazuje:
21:12:16 (adskflex) Rereading options file...
21:12:16 (adskflex) =====================================================================================
21:12:16 (adskflex) ==== Reread : Feature List and Client Validation Initiated ===
21:12:16 (adskflex) =====================================================================================
21:12:16 (adskflex) === ls_client_removal_on_reread is enabled ===
21:12:16 (adskflex) =====================================================================================
21:12:16 (adskflex) ==== Reread : Feature List and Client Validation Completed ===
21:12:16 (adskflex) =====================================================================================
21:12:16 (adskflex) (@adskflex-SLOG@) ===============================================
21:12:16 (adskflex) (@adskflex-SLOG@) === Reread Info ===
21:12:16 (adskflex) (@adskflex-SLOG@) Reread time: Wed Sep 04 2024 21:12:16 CEST
21:12:16 (adskflex) (@adskflex-SLOG@) Number of rereads since vendor daemon startup: 1
21:12:16 (adskflex) (@adskflex-SLOG@) Reread mechanism: Manual
21:12:16 (adskflex) (@adskflex-SLOG@) Is FlexNet Licensing Service installed and compatible: No
21:12:16 (adskflex) (@adskflex-SLOG@) FlexNet Licensing Service Version: -NA-
21:12:16 (adskflex) (@adskflex-SLOG@) Is TS accessed: No
21:12:16 (adskflex) (@adskflex-SLOG@) TS access time: -NA-
21:12:16 (adskflex) (@adskflex-SLOG@) Daemon select timeout (in seconds): 1
21:12:16 (adskflex) (@adskflex-SLOG@) Options file used: None
21:12:16 (adskflex) (@adskflex-SLOG@) License file(s) used: /usr/local/flexlm/licenses/license.dat
21:12:16 (adskflex) (@adskflex-SLOG@) ===============================================
21:12:16 (adskflex) ...Finished rereading
Ve stejném logu pak uvidíte Updating feature číslo3DSMAX_2025 (příklad) jako důkaz, že novou licenci autodesk license manager detekoval a ví o ní.
Závěr
Zajímavé, že Autodesk servery používají quorum pro synchronizací licencí mezi sebou, tak jako používá quorum např. Proxmox, nebo Ceph. K tomu potřebují na sebe neustále vidět. Když server vypadne, okamžitě to vidíme v logu, že se na něj ostatní servery nemohou připojit. Když máte k dispozici tyto skripty, tak už vás nic nezastaví v tom, si to rozjet na vašich strojích. 😉
zdroj řešení chyby s /usr/tmp/