Skip to main content

RLM Server Setup

This guide covers the installation and configuration of RLM (Reprise License Manager) servers for optimal integration with Vantage License Manager.

Single License Server

Server Installation

# Download RLM license server components
wget http://vendor.com/rlm/rlm
wget http://vendor.com/rlm/vendor_isv

# Make executable
chmod +x rlm vendor_isv

# Create directory structure
sudo mkdir -p /opt/rlm/{bin,licenses,logs,web}
sudo useradd -r -s /bin/false rlm
sudo chown -R rlm:rlm /opt/rlm

# Install binaries
sudo cp rlm vendor_isv /opt/rlm/bin/

# Create web interface directory
sudo mkdir -p /opt/rlm/web/htdocs

License File Configuration

# Example: /opt/rlm/licenses/siemens.lic
HOST rlm-server.vantage.com ANY 5053
ISV siemens

# STAR-CCM+ licenses
LICENSE siemens STARCCM 2023.1000 permanent 20 \
HOSTID=ANY \
PLATFORMS="x64_linux x64_win64" \
BORROW=24 \
SIGN=60B459C90C71ABC123

# NX CAE licenses
LICENSE siemens NXCAE 2023.1000 31-Dec-2024 10 \
HOSTID=ANY \
PLATFORMS="x64_linux x64_win64" \
BORROW=24 \
SIGN=50A348B80B62DEF456

# LS-DYNA licenses (if using RLM)
LICENSE lstc LSDYNA 13.1 permanent 8 \
HOSTID=ANY \
PLATFORMS="x64_linux x64_win64" \
BORROW=12 \
SIGN=789GHI456JKL012

RLM Configuration File

# /opt/rlm/rlm.conf
# Main RLM configuration

# Web interface settings
WEB_INTERFACE_ENABLE 1
WEB_INTERFACE_PORT 5054
WEB_INTERFACE_LOG /opt/rlm/logs/web.log

# License file paths
LICENSE_PATH /opt/rlm/licenses

# Logging configuration
LOG_FILE /opt/rlm/logs/rlm.log
LOG_LEVEL 2

# Security settings
ADMIN_PASSWORD_REQUIRED 1
WEB_INTERFACE_HTTPS 1
WEB_INTERFACE_CERT /opt/rlm/ssl/server.crt
WEB_INTERFACE_KEY /opt/rlm/ssl/server.key

# Performance tuning
MAX_ROAM_COUNT 50
DEFAULT_ROAM_DAYS 7
CONNECTION_TIMEOUT 300

Systemd Service

# /etc/systemd/system/rlm.service
[Unit]
Description=RLM License Server
After=network.target

[Service]
Type=forking
User=rlm
Group=rlm
WorkingDirectory=/opt/rlm
ExecStart=/opt/rlm/bin/rlm -c /opt/rlm/rlm.conf -dlog /opt/rlm/logs/rlm.log
ExecStop=/opt/rlm/bin/rlm -shutdown
PIDFile=/opt/rlm/rlm.pid
Restart=always
RestartSec=10
Environment="RLM_LICENSE_PATH=/opt/rlm/licenses"
Environment="RLM_LOG_FILE=/opt/rlm/logs/rlm.log"

[Install]
WantedBy=multi-user.target

SSL Certificate Setup

# Generate self-signed certificate for web interface
sudo mkdir -p /opt/rlm/ssl
sudo openssl req -x509 -newkey rsa:4096 -keyout /opt/rlm/ssl/server.key \
-out /opt/rlm/ssl/server.crt -days 365 -nodes \
-subj "/C=US/ST=State/L=City/O=Organization/CN=rlm-server.vantage.com"

# Set appropriate permissions
sudo chown -R rlm:rlm /opt/rlm/ssl
sudo chmod 600 /opt/rlm/ssl/server.key
sudo chmod 644 /opt/rlm/ssl/server.crt

Start and Enable Service

# Enable and start the service
sudo systemctl enable rlm
sudo systemctl start rlm

# Check status
sudo systemctl status rlm

# View logs
sudo journalctl -u rlm -f

# Test web interface access
curl -k https://rlm-server.vantage.com:5054

Environment Configuration

System-wide Settings

# /etc/environment
RLM_LICENSE=5053@rlm-server.vantage.com
SIEMENS_LICENSE_FILE=5053@rlm-server.vantage.com
LSTC_LICENSE_SERVER=5053@rlm-server.vantage.com

Application-Specific Configuration

STAR-CCM+ Configuration:

# Siemens STAR-CCM+ licensing setup
export CDLMD_LICENSE_FILE="5053@rlm-server.vantage.com"
export RLM_LICENSE="5053@rlm-server.vantage.com"

# For batch mode
starccm+ -batch -license 5053@rlm-server.vantage.com simulation.java

LS-DYNA Configuration:

# LS-DYNA with RLM
export LSTC_LICENSE_SERVER="5053@rlm-server.vantage.com"
export RLM_LICENSE="5053@rlm-server.vantage.com"

# Test LS-DYNA licensing
lsdyna -i test.k -license_server 5053@rlm-server.vantage.com

COMSOL Configuration:

# COMSOL Multiphysics
export COMSOL_LICENSE_FILE="5053@rlm-server.vantage.com"

# Test COMSOL licensing
comsol -nn 4 -license_server 5053@rlm-server.vantage.com

Performance Optimization

Server Tuning

# Increase file descriptor limits
echo "rlm soft nofile 65536" >> /etc/security/limits.conf
echo "rlm hard nofile 65536" >> /etc/security/limits.conf

# Memory optimization
echo "vm.swappiness = 10" >> /etc/sysctl.conf
echo "vm.dirty_ratio = 15" >> /etc/sysctl.conf
echo "vm.dirty_background_ratio = 5" >> /etc/sysctl.conf

# Network optimization for RLM
echo 'net.core.somaxconn = 2048' >> /etc/sysctl.conf
echo 'net.ipv4.tcp_max_syn_backlog = 4096' >> /etc/sysctl.conf
echo 'net.ipv4.tcp_keepalive_time = 300' >> /etc/sysctl.conf
sysctl -p

License File Optimization

# Optimized RLM license with user groups and reservations
HOST rlm-server.vantage.com ANY 5053
ISV siemens

# Define user groups
GROUP engineering smith jones wilson chen
GROUP research brown davis taylor

# Feature with group restrictions and reservations
LICENSE siemens STARCCM 2023.1000 permanent 20 \
HOSTID=ANY \
PLATFORMS="x64_linux x64_win64" \
BORROW=24 \
RESERVE 5 GROUP engineering \
RESERVE 3 GROUP research \
TIMEOUT=7200 \
SIGN=60B459C90C71ABC123

# License with time restrictions
LICENSE siemens NXCAE 2023.1000 permanent 10 \
HOSTID=ANY \
PLATFORMS="x64_linux x64_win64" \
BORROW=24 \
TIMEUSE 8:00-18:00 \
WEEKDAYS \
SIGN=50A348B80B62DEF456

Firewall Configuration

# Open required ports for RLM
sudo firewall-cmd --permanent --add-port=5053/tcp # RLM server port
sudo firewall-cmd --permanent --add-port=5054/tcp # Web interface port
sudo firewall-cmd --permanent --add-port=5055-5060/tcp # ISV server ports
sudo firewall-cmd --reload

# For iptables
sudo iptables -A INPUT -p tcp --dport 5053 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 5054 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 5055:5060 -j ACCEPT
sudo iptables-save > /etc/iptables/rules.v4

Security Configuration

Web Interface Security

# Configure admin password for web interface
echo "admin:$(openssl passwd -1 'SecurePassword123')" > /opt/rlm/admin_password

# Update rlm.conf for enhanced security
cat >> /opt/rlm/rlm.conf << EOF

# Enhanced security settings
WEB_INTERFACE_ADMIN_PASSWORD_FILE /opt/rlm/admin_password
WEB_INTERFACE_RESTRICT_BY_IP 192.168.1.0/24
REQUIRE_STRONG_AUTHENTICATION 1
SESSION_TIMEOUT 3600

# Disable unnecessary features
DISABLE_ACTIVATION_BY_HTTP 1
DISABLE_DEMO_LICENSES 1
EOF

Access Control

# License file access control
HOST rlm-server.vantage.com ANY 5053
ISV siemens

# IP-based restrictions
INCLUDEIP 192.168.1.0/24 192.168.10.0/24

# User and host exclusions
EXCLUDE USER baduser HOST compromised-host.vantage.com

# Time-based restrictions
LICENSE siemens STARCCM 2023.1000 permanent 20 \
HOSTID=ANY \
PLATFORMS="x64_linux x64_win64" \
INCLUDEIP 192.168.1.0/24 \
TIMEUSE 6:00-22:00 \
SIGN=60B459C90C71ABC123

Monitoring Setup

Log Configuration

# Enhanced logging configuration in rlm.conf
LOG_FILE /opt/rlm/logs/rlm.log
LOG_LEVEL 3
LOG_ROTATE_SIZE 100000000 # 100MB
LOG_ROTATE_COUNT 10

# Usage reporting
REPORT_LOG /opt/rlm/logs/usage.log
REPORT_LOG_FORMAT extended

# Debug logging for troubleshooting
DEBUG_LOG /opt/rlm/logs/debug.log
DEBUG_LOG_LEVEL 2

Log Rotation

# Configure log rotation
cat > /etc/logrotate.d/rlm << EOF
/opt/rlm/logs/*.log {
daily
rotate 30
compress
delaycompress
missingok
create 644 rlm rlm
postrotate
systemctl reload rlm
endscript
}
EOF

Health Check Scripts

#!/bin/bash
# /opt/rlm/bin/health-check.sh

RLM_SERVER="5053@rlm-server.vantage.com"
LOG_FILE="/var/log/rlm/health-check.log"
WEB_URL="https\://rlm-server.vantage.com:5054"

check_rlm_server() {
if timeout 10 /opt/rlm/bin/rlmutil rlmstat -c "$RLM_SERVER" > /dev/null 2>&1; then
echo "$(date): RLM server is running" >> "$LOG_FILE"
return 0
else
echo "$(date): RLM server is down" >> "$LOG_FILE"
return 1
fi
}

check_web_interface() {
if timeout 10 curl -k -s "$WEB_URL" > /dev/null 2>&1; then
echo "$(date): RLM web interface is accessible" >> "$LOG_FILE"
return 0
else
echo "$(date): RLM web interface is down" >> "$LOG_FILE"
return 1
fi
}

restart_rlm() {
echo "$(date): Attempting to restart RLM server" >> "$LOG_FILE"
systemctl restart rlm
sleep 30

if check_rlm_server && check_web_interface; then
echo "$(date): RLM server restart successful" >> "$LOG_FILE"
else
echo "$(date): RLM server restart failed" >> "$LOG_FILE"
# Send alert
mail -s "RLM Server Critical Failure" admin@vantage.com < "$LOG_FILE"
fi
}

# Main health checks
if ! check_rlm_server; then
restart_rlm
elif ! check_web_interface; then
echo "$(date): Web interface issue, restarting RLM" >> "$LOG_FILE"
restart_rlm
fi

# Check license utilization and alert if high
UTIL=$(/opt/rlm/bin/rlmutil rlmstat -c "$RLM_SERVER" | grep -E "in use" | \
awk '{print $7}' | tr -d '()' | cut -d'/' -f1)
if [ "$UTIL" -gt 18 ]; then # Alert at 90% utilization (18/20)
echo "$(date): High license utilization: $UTIL licenses in use" >> "$LOG_FILE"
echo "RLM license utilization is at $UTIL/20 (90%+)" | \
mail -s "RLM High Utilization Alert" admin@vantage.com
fi

Usage Monitoring Script

#!/bin/bash
# /opt/rlm/bin/usage-monitor.sh

RLM_SERVER="5053@rlm-server.vantage.com"
USAGE_LOG="/opt/rlm/logs/usage-summary.log"

get_license_usage() {
/opt/rlm/bin/rlmutil rlmstat -c "$RLM_SERVER" -a | \
awk '/^License server/ {server=$0}
/Users of/ {
feature=$3
gsub(/:/,"",feature)
total=$(NF-1)
used=$NF
gsub(/[()]/,"",used)
gsub(/[()]/,"",total)
split(used,u,"/")
print strftime("%Y-%m-%d %H:%M:%S") "," feature "," u[1] "," total
}'
}

# Log usage every hour
echo "timestamp,feature,used,total" > "$USAGE_LOG.tmp"
get_license_usage >> "$USAGE_LOG.tmp"
mv "$USAGE_LOG.tmp" "$USAGE_LOG"

Cron Jobs for Monitoring

# Add to crontab (crontab -e)
*/5 * * * * /opt/rlm/bin/health-check.sh
0 * * * * /opt/rlm/bin/usage-monitor.sh

Integration with Vantage

Register Server with Vantage

# Register the configured RLM server
vantage licenses add \
--type rlm \
--vendor siemens \
--server rlm-server.vantage.com:5053 \
--web-port 5054 \
--name "Production Siemens RLM" \
--description "Main RLM server for Siemens applications"

# Enable monitoring and analytics
vantage licenses monitor enable siemens-rlm \
--interval 60 \
--alerts high_usage,server_down,web_interface_down \
--webhook https://alerts.vantage.com/webhooks/rlm

# Configure usage tracking
vantage licenses analytics enable siemens-rlm \
--track-users \
--track-projects \
--cost-allocation department

Validation and Testing

# Test server connectivity
vantage licenses test siemens-rlm

# Check discovered features
vantage licenses features siemens-rlm

# View real-time usage
vantage licenses usage siemens-rlm --watch

# Test web interface integration
vantage licenses web-interface siemens-rlm

# Validate license checkout
vantage licenses checkout siemens-rlm STARCCM --user testuser --test

Backup and Recovery

Comprehensive Backup Script

#!/bin/bash
# /opt/rlm/bin/backup-rlm.sh

BACKUP_DIR="/backup/rlm"
DATE=$(date +%Y%m%d-%H%M%S)
HOSTNAME=$(hostname)

# Create backup directory
mkdir -p "$BACKUP_DIR"

# Stop RLM briefly for consistent backup
systemctl stop rlm
sleep 5

# Create comprehensive backup
tar -czf "$BACKUP_DIR/rlm-complete-$HOSTNAME-$DATE.tar.gz" \
/opt/rlm/licenses/ \
/opt/rlm/rlm.conf \
/opt/rlm/ssl/ \
/opt/rlm/logs/*.log \
/etc/systemd/system/rlm.service \
/etc/logrotate.d/rlm

# Restart RLM
systemctl start rlm

# Verify backup and log
if [ $? -eq 0 ]; then
echo "$(date): RLM backup successful: $BACKUP_DIR/rlm-complete-$HOSTNAME-$DATE.tar.gz"

# Keep only last 30 days of backups
find "$BACKUP_DIR" -name "rlm-complete-*.tar.gz" -mtime +30 -delete
else
echo "$(date): RLM backup failed" | mail -s "RLM Backup Failure" admin@vantage.com
fi

Disaster Recovery Documentation

# Create disaster recovery information
cat > /opt/rlm/DISASTER_RECOVERY.md << EOF
# RLM Server Disaster Recovery

## Server Information
- Hostname: $(hostname)
- IP Address: $(hostname -I | awk '{print $1}')
- MAC Address: $(ip link show | grep ether | head -1 | awk '{print $2}')
- OS Version: $(cat /etc/os-release | grep PRETTY_NAME | cut -d'"' -f2)
- RLM Version: $(/opt/rlm/bin/rlm -version 2>&1 | head -1)

## License Server Configuration
- Server Port: 5053
- Web Interface Port: 5054
- License Files: /opt/rlm/licenses/
- Configuration: /opt/rlm/rlm.conf
- SSL Certificates: /opt/rlm/ssl/

## Recovery Steps
1. Install RLM software on new server
2. Restore configuration from backup
3. Update hostname/IP in license files if changed
4. Start RLM service
5. Verify web interface access
6. Test license checkout
7. Update Vantage License Manager configuration
8. Notify users of server change

## Emergency Contacts
- System Administrator: admin@vantage.com
- License Administrator: licenses@vantage.com
- Vendor Support: support@siemens.com

## Backup Location
- Daily backups: /backup/rlm/
- Offsite backups: (specify location)
EOF

Next Steps


Important: Always test RLM server configuration in a development environment before deploying to production. The web interface provides additional monitoring and administration capabilities beyond command-line tools.