.
contact contact

B.08.40 / Release Notes / License server

Eloquence License server

 
.
  The Eloquence license server simplifies licensing and operating Eloquence in flexible environments, such as containers and virtualized environments. It allows to designate licenses based on configured role rather then system id. Licensed systems and roles may be changed as necessary.

Overview

The license server maintains an list of licenses, grouped into different pools (lists), specific to a task or environment. A server process may request a license for a specific system or task and is then provided with a license which includes the configured functionality and number of users. This license is reserved for this system and enables the respective functionality, similarly to a file based license key. A license is released for other use when it is no longer used. No partial licenses are maintained, user specific counts are handled by the individual server process.

To use the license server functionality the eloqld server process must be started on the license server and configured with a list of licenses, separated in groups.

The license server is specified in the license file instead of a license key. Also a group is specified to draw the license from. An example would be a test system or a production system.

Licenses keys for use with a license server are not system specific (dependent on a SWID) but are specific to a license server. They can only be used with the designated license server. A server based license may be requested by any system but a separate license is required for each concurrent system.

For simplicity, system specific license (dependent on a SWID) may also be used with a license server. These behave the same as when used in a license file and can only be used on the specified system.

eloqld configuration overview

The eloqld server is configured with the eloqld.cfg config file (in the Eloquence configuration directory). In addition it requires a license pool file or directory (configured in the eloqld.cfg file).

By default, a license pool file eloqld.pool specifies a license file for use by the license server. It is located in the Eloquence configuration directory.
Alternatively, license keys may also be provided in separate files in a directory. The format is identical to a single pool file. Any file in the configured directory is read to obtain a list of licenses.

The license pool files are read and its licenses are maintained by the eloqld server process. The server process uses a status file eloqld.status that is updated periodically. It is used to restore the current status after the eloqld process was restarted.

The eloqld server process is managed the same way as the other server processes. The eloqld process supports a http status showing the current license pools and leases (reserved licenses).


Eloquence license file

The Eloquence license file may be used to specify a license server as an alternative to using a license key. The license server is then connected to obtain the license.

The following configuration options are supported:

server=host[:service]

The server config option specifies the host name or IP address and (optional) the service name or port number that is used by the license server.

server=localhost
server=example.marxmeier.com:8891
The first example indicates the license server runs on the local system. It uses the default service name eloqld. The second example specifies a system name and port number.

secret=password

The secret config item specifies the password that is used by the license server. It must be specified if the server process uses a password. The license server connection will fail if the password does not match.

secret=aeQu1iev

pool=name

The pool config item defines the license pool that is used. If not present it defaults to the host name.

pool=test


A hash sign (#) at the beginning of the line considered a comment and is ignored. The current implementation does not allow for spaces around the equal sign.

The chklic utility may be used to verify the information in the license file. It will request and then immediately release a license and report the results.

Checking license ...
License file is "/etc/opt/eloquence/8.4/license"

System ID:
251096700793713

License server configured ...
>> server=example.marxmeier.com
>> secret=aeQu1iev
>> pool=test

** Summary **
License type              : Temporary
License version           : B.08.40 13 1709311191
License name              : pool#1
TurboIMAGE compatibility  : Available
Replication               : Available
Encryption                : Available
FTS compatibility         : Available
Number of users           : Unlimited
License expires in        : 24 day(s)

...

Possible problems include a bad or non-accessible server, a bad password or a license not available. An error message as shown below is returned.

Unable to connect [111] Connection refused
[lconn] Unable to connect license server example:9999
Invalid license server address or inaccessible server
[lconn] ERR: Server secret not matching
A missing or bad password
Q1: [lreq] ERR: No license available (#0,no pool)
The specified license pool does not exist
Q1: [lreq] ERR: No license available (15,in use)
The license is currently in use by another system


eloqld startup configuration

The eloqld server process is managed the same way as the other server processes.

Please note that on Linux and HP-UX a user (UID) and group (GID) must be configured to start the eloqld process.

Linux

On Linux, systemd is used to manage the eloqld server process. The eloqld84.service systemd unit file is used. The .service suffix may be omitted.

systemctl start eloqld84
systemctl stop eloqld84
The status can be queried with:
systemctl status eloqld84
To enable or disable that the eloqld84 systemd unit is started and stopped automatically.
systemctl enable eloqld84
systemctl disable eloqld84

HP-UX

The eloqld is started/stopped with the /sbin/init.d/eloq84 script:

/sbin/init.d/eloq84 start eloqld
/sbin/init.d/eloq84 stop eloqld
The status can be queried with:
/sbin/init.d/eloq84 status eloqld
The START_ELOQLD configuration in the /etc/rc.config.d/eloquence84 startup configuration file specifies if the eloqld daemon is started and stopped automatically.

/etc/rc.config.d/eloquence84

# If START_ELOQLD is set to 1 the eloqld daemon is started
# automatically. The ELOQLD_ARGS allows to specify eloqld command 
# line arguments.
#START_ELOQLD=0
#ELOQLD_ARGS=""

Windows

The Windows Service Control Manager is used to start/stop the eloqld Windows service. Alternatively, eloqld may be started/stopped on the command line (as Administrator):

net start eloqld
net stop eloqld
The Windows Service Control Manager may be used to configure the eloqld Windows service to start/stop automatically and to use an account different from SYSTEM.

The status can be checked in the configured LogFile or with the Windows Event Viever (expand the Windows Logs folder and select the Application event log).


The eloqld.cfg configuration file

The eloqld.cfg configuration file defines eloqld configuration. It is read when the eloqld process is started.

The config file has multiple sections enclosed in square brackets. Section names are not case sensitive. String values can be enclosed in double quotes to protect leading or trailing spaces. An unquoted hash character (#) starts a comment.

Server configuration [server]

Service
The service name (as defined in /etc/services) or the port number where the server should listen for requests. The default value is eloqld.

A suffix /4, /6, or /46 may be used for establishing IPv4 only, IPv6 (with implied IPv4) or separate IPv4 and IPv6 listening sockets. By default, separate IPv4 and IPv6 sockets are used. For example: eloqld/46

ServiceHttp
The service name (as defined in /etc/services) or the port number where the server should listen for HTTP requests. If neither ServiceHttp nor ServiceHttps are specified, the HTTP/HTTPS status is disabled.
A suffix may specify support of the IPv4 and IPv6 protocol. By default, separate IPv4 and IPv6 sockets are used.

ServiceHttps
The service name (as defined in /etc/services) or the port number where the server should listen for HTTPS (secure HTTP) requests. If neither ServiceHttp nor ServiceHttps are specified, the HTTP/HTTPS status is disabled.
Enabling the secure HTTP protocol requires that TLS is configured (see TLSCertChainFile and TLSCertKeyFile).
A suffix may specify support of the IPv4 and IPv6 protocol. By default, separate IPv4 and IPv6 sockets are used.

TLSCertChainFile
Absolute path to a file in PEM format containing the server certificate and optionally any additional intermediate certificates which represent the chain up to the root certificate.
The certificates in this file must be sorted in the verification order, starting with the server certificate. The file may in addition contain the private key associated with the server certificate, in which case the TLSCertKeyFile configuration may be omitted.

Note: TLS (Transport Layer Security) configuration is required to enable the HTTPS (secure HTTP) status (see ServiceHttps above).
To enable HTTPS, a server certificate is needed for the eloqld host name. Web browsers require a certificate which is issued by a known authority. Using a self-signed certificate typically requires to configure each browser which are used to access the HTTPS status.

TLSCertKeyFile
Absolute path to a file in PEM format containing the private key associated with the server certificate. If this key is contained in the TLSCertChainFile configuring TLSCertKeyFile is not necessary.

UID (HP-UX and Linux)
The name (or numeric id) of the account used by the eloqld process when started as root.

Please note, that the server will refuse to start as root unless UID and GID are valid.

GID (HP-UX, Linux)
The name (or numeric id) of the group used by the eloqld process when started as root.

Please note, that the server will refuse to start as root unless UID and GID are valid.

LogFile
This defines where log messages are written to. This configuration value either specifies a path/file or one of the keywords below:

  • console - log messages are written to the console
  • syslog - log messages will be sent to the syslog daemon (HP-UX, Linux) or the Windows Event Log.

The default value is "syslog".

SysIdent (HP-UX, Linux)
SysFacility (HP-UX, Linux)
When logging to the syslog daemon, these config items may be used to define a syslog identifier and facility. Supported facility values are: USER/DAEMON/LOCAL0..LOCAL7. The default syslog identifier is "eloqld". The default syslog facility is "USER". Please refer to syslogd(1M) for more information.

SysIdent = eloqld
SysFacility = USER

LogFlags
Each log message has an associated origin and severity. The log flags define which messages are be logged. The "*" origin matches all message origins, so it can be used to setup a default which can be overridden for a specific message origin (e.g. "*1N0"). The default LogFlags are "*0".

The following origin are in use:

  • * = All origins
  • A = Address filter
  • C = Configuration subsystem
  • H = HTTP requests
  • N = Network transport
  • S = Server framework
  • T = Thread kernel
  • L = License parsing
  • P = Protocol

The following severities are in use:

  • 0 = error messages
  • 1 = information
  • 2 = debug
  • 3 = verbose debug

When using syslog, the following priorities are mapped:

  • 0 = LOG_ERR
  • 1 = LOG_NOTICE
  • 2 = LOG_DEBUG
  • 3 = LOG_DEBUG

Enabling log messages with debug or verbose debug severity may result in a large number of log messages.
Set LogFlags = *0 to enable fatal messages only. Set LogFlags = *1 to enable regular log messages, or *1H0 to suppress HTTP protocol status messages. Set LogFlags = *1S2 to enable more detailed connection and disconnection messages.

StatusFile
Specifies the name of a file that is used to restore the eloqld server process status after a restart. If is updated continuously while the eloqld process is active and read on server startup.

The default is: eloqld.status

HP-UX and Linux: StatusFile may either specify a file name (relative to /var/tmp) or an absolute file name.

HTTPUser
If set, the eloqlb HTTP status display will require a matching user name (HTTP basic authentication) before allowing access to the eloqld HTTP status. The default value is empty.

HTTPPswd
If set, the eloqlb HTTP status display will require a matching password (HTTP basic authentication) before allowing access to the eloqld HTTP status. The default value is empty.

Allow|Deny
The Allow or Deny config item may be used to allow or deny license requests based on the client network address.

Allow/Deny argument syntax:

{ All | hostname |ip-address [/{addrbits|netmask}] }
  • Multiple Allow/Deny entries are recognized and combined.

  • hostname is the name of a host or network that is resolved into one or more ip addresses.

  • ip-address is either an IPv4 or IPv6 address.

    • An IPv6 address, enclosed in square brackets, such as [::1]. The addrbits option may be used to specify the number of relevant bits in the IP address.

    • An IPv4 address, such as 127.0.0.1. The addrbits option may be used to specify the number of relevant bits in the IP address. The netmask option allows to specify an IPv4 network mask, such as 255.255.255.0.
If neither Allow nor Deny are configured, connections are allowed from all network addresses (implied Allow=All).

If Allow and/or Deny are configured, connections are denied unless specifically allowed (implied Deny=All).

For example:

allow = localhost
allow = 10.64.71.0/24

AllowHttp|DenyHttp
AllowHttps|DenyHttps
The AllowHTTP(s) or DenyHTTP(s) config items may be used to allow or deny HTTP or HTTPS access to access the license server status based on the client network address.


Server Limits [limits]

WorkerThreads
Sets the number of worker threads. A higher setting allows for more parallel activity. The default is: 2

MessageTimeout
This config item specifies the time in seconds a connection waits before closing a connection. The default is: 30 (seconds)

HTTPKeepAlive
If nonzero, the HTTP persistent connection mode is enabled so that the web browser may use a single connection for multiple requests. This typically speeds up page loading because it minimizes the overhead required to establish new connections and, in case of HTTPS, process the TLS handshake. The default is: 15 (seconds)

RateBlock
RateResume
Connection rate limiting is a defense against DoS (Denial of Service) attacks. The number of new connection attempts per second is monitored. If it reaches or exceeds the configured RateBlock limit, new connections are refused until the rate drops to RateResume at most.

The defaults are: RateBlock=500 and RateResume=50


License Pool [pool]

LicenseFile
Specifies a file name (relative to the Eloquence config directory) or an absolute name and path of a file. This file is read on eloqld startup and provides a list of licenses organized in sections. The default is eloqld.pool
LicenseFile = eloqld.pool

LicenseDir
Specifies a directory name (relative to the Eloquence config directory) or an absolute path of a directory. Any files in this directory are read on eloqld startup and provide files to hold licenses organized in sections. This is not set by default.

Secret
Specifies a password that is shared by the server and client. If present a connection can only succeed if the secret is matching.
secret = aeQu1iev

Renew
Specifies the default timeout (in seconds) after which a license is considered unused. A leased licenses is periodically renewed to indicate its continued use. The default timeout is 4 hours (14400 seconds).


License pool file

A license pool file specifies the licenses available to the eloqld server, organized in sections (in square brackets). A single license pool file may be specified in the eloqld configuration with the LicenseFile configuration item (eloqld.pool). Alternatively, a directory holding license pool files may be specified with the LicenseDir configuration item.

The example below specifies the pool "test" with 2 licenses and the pool "beta" with one license:

[test]

ELOQ B.08.40 id=13 type=server name="pool#1"
 opt=hp3k,repl,enc,ftc users=unlimited server=145588981027104
 valid-from=2024-01-01 valid-to=2024-03-31
 seq=1709311191 valid=9df49eff2d8f5fd42cb3f6eba3c87441

ELOQ B.08.40 id=14 type=server name="pool#2"
 opt=hp3k,repl,enc,ftc users=unlimited server=145588981027104
 valid-from=2024-01-01 valid-to=2024-03-31
 seq=1709311250 valid=a9307bc33f20dcd65f25efc72bbcb602

[beta]

ELOQ B.08.40 id=1 type=temp name="EQ beta test" 
 opt=hp3k,repl,enc,ftc users=unlimited
 valid-from=2023-11-22 valid-to=2024-03-31
 seq=1706217850 valid=156a05f877b824b69c5b0dea4fa08118
Any license pool files are read and its licenses are maintained by the eloqld server process.

A single license key can only be specified once and can only belong to a single pool section. Any subsequent ocurrence is ignored. A license key is defined by the product (ELOQ), license key id (id=). If different versions of a license key are present (eg. different product versions), only the most recent version is used, older versions are ignored. A license key is usually specific to a license server and then specifies the SWID of the applicable license server (server=).

Typically license keys managed by a license server are not system specifc but for convenience any licenses may be added to a license server.

When reading the a license pool file the following problems are logged in the message log.

Invalid license entry
Invalid or currupted license key

Unsupported product or version

License not applicable to this server.
The license key specifies a server swid that does not match this server

License may only be used with a swid
The license type must either specify a swid or an expiration date to be used with a license server.

License may only be used with a server id
The license type must either specify a license server id or an expiration date to be used with a license server.

License not yet active
The license specifies a start date that is not yet reached.

License expired
The license specifies an expiration date that has passed.

License expires in ## days
This is a note that the license specifies an expiration date and will expire.

Duplicate license entry
A duplicate license key is ignored. This message is only logged if a newer (or same) license key version was already encountered.

 
 
 
  Privacy | Webmaster | Terms of use | Impressum Revision: 2024-03-20  
  Copyright © 1995-2024 Marxmeier Software AG