You are on page 1of 54

Server Deployment Manager &

Multi-Server Load Balancer

A Deployment Management
System for ClarioNETTM
Programs

Version 1.0
17-May-2002

1
2
C opyright 2002 by Michael D. Brooks, All Rights Reserved

This publication is protected by copyright and all rights are reserved by Michael D. Brooks. It may not,
in whole or in part, be copied, photocopied, reproduced, translated, or converted to any machine-
readable form or medium without prior written consent from Michael D. Brooks.

Michael D. Brooks
ClarioNET Solutions
mdbrooks@clarionet.com
P.O. Box 188
Corona del Mar,CA 92625
USA

Fax: 949-645-3881

Trademark Acknowledgements:

ClarioNET is a trademark of Michael D. Brooks

TopSpeed, Soft Velocity, Clarion, Clarion Application Broker, Internet Connect,


Web Edition are or are believed to be registered trademarks of Soft Velocity Corporation.

3
4
Table of Contents
Simple & Robust Management of ClarioNET Applications.............................7
ClarioNET Deployment Manager capabilities.......................................................7
ClarioNET Load Balancer capabilities...........................................................................................9

Installation ...........................................................................................10
Security Key & Deployment Password ...............................................................11
System Requirements.....................................................................................12

File Locations for ClarioNET Deployment Manager......................................13

Main Program Files ................................................................................14


Server Monitor (MONITOR.EXE) .....................................................................14
Client Listening (LISTEN.EXE) .........................................................................14
Load Balancer (LOADBAL.EXE) .......................................................................14

ClarioNET Server Deployment Management Philosophy ..............................15

EXE versus ISAPI Clarion Application Brokers............................................17

Your Server Programs : Added Code Required...........................................18

Connecting the Client to the Server Program ............................................19


CNMANAGR.LIB..............................................................................................19
CNManager:GetProgramList.............................................................................19
CNManager:GetBalancerConnection..................................................................20
CNManager:GetServerConnection.....................................................................21
CNManager:Ping...........................................................................................................................21

MONITOR.EXE ......................................................................................23
Status Tab ....................................................................................................24
Details Tab ....................................................................................................26
Program List Tab............................................................................................28
Ports / IP / Listening Tab.................................................................................29
Cleanup Tab ..................................................................................................31
Drive & File Settings Tab .................................................................................32
Licensing Tab.................................................................................................33
Contact Tab...................................................................................................34

LISTEN.EXE ..........................................................................................35

LOADBAL.EXE .......................................................................................36

5
About Server “Polling” ....................................................................................37
Screen Descriptions ........................................................................................38
Server List Tab ..............................................................................................40
Process List Tab .............................................................................................42
Available Programs Tab...................................................................................44
Load Balancing Preferences Tab .......................................................................45
Client Request Activity Log Tab ........................................................................46
Licensing Tab.................................................................................................47
Contact Tab...................................................................................................48

Tutorial ................................................................................................49
Install the Server Deployment Manager, Copy Files, Start App Broker...................49
Add Performance Monitoring ............................................................................49
Check that your ClarioNET Program Runs Properly..............................................49
Run MONITOR.EXE and LISTEN.EXE .................................................................50
Test the CONNECT.EXE program provided .........................................................50
Run LOADBAL.EXE..........................................................................................51

Troubleshooting ....................................................................................51

Technical Support..................................................................................52

License Agreement ................................................................................53

6
Simple & Robust Management of ClarioNET Applications
Introducing the best way to manage your ClarioNET applications.

The ClarioNET Deployment Manager provides you with a management system to


manage individual servers and provide load balancing to a group of servers.

It consists of:

• Deployment Manager : Two programs that run on each application server to


monitor the status of all ClarioNET applications and “listen” for incoming requests
from client applications and the Multi-Server Load Balancer.

• Multi-Server Load Balancer: A program that runs on a selected server and keeps
track of all the “application” servers and provides a single program listing and
launching point for the “client” programs.

The ClarioNET Server Deployment Manager provides these capabilities....

1) Provides a single control panel to manager your server deployment.

2) Provides a single point of contact for the client program to query available
programs.

3) Automatically launch and close copies of the ClarioNET EXE Application Broker for
each program instance. Only in-use broker EXE's are "live".

4) Allows single or multiple program instances per EXE broker.

5) Automatic clean-up…
a) Checks that no temporary directories or files remaining
b) Deletes orphaned temporary directories
c) Deletes temporary files left in the \PUBLIC directory
d) Removes orphaned running EXE brokers
e) Senses crashed program EXE files and terminates them

6) Uses a winsock protocol to listen to incoming client requests so that application


broker instances and open ports are eliminated.

7) Provides detailed statistics for each running program: EXE name, Start time,
Process ID, port, Broker Process ID, Client IP Address, activity time information,
temporary directory under \PUBLIC.

8) Also provides performance information for each running instance: Total events,
dataflow, processing time, running average event timing, dataflow per event, and
processing time per event. This information is use by the Load Balancer module to
launch new instances on the server that fits your load-balancing scheme (see later).

MONITOR.EXE is the main control panel that provides complete supervision of your
server deployment and can be run as a ClarioNET program for remote server

7
management.

LISTEN.EXE is a small, high performance program that listens to the port of your
choice for status requests from the LOADBAL.EXE program and launching reqests from
your “client” program. It uses direct Winsock and give instantaneous feedback to the
client.

8
The ClarioNET Multi-Server Load Balancer provides you with these capabilities...

1) Enables you to add an infinite number of application servers to your server pool and
specify their active status. (Server count based on licenses purchased).

2) Automatically polls each server to determine if it is on-line and records its


performance statistics and current user load. The status of your server pool is
displayed for easy monitoring.

3) Allows you to view a complete list of all running applications on all active servers with
flexible sorting ability. This list includes the running time, performance statistics, and
client addresses of each application.

4) When a request to launch a new program is received, the Load Balancing scheme of
your choice is used to determine the next available server. Balancing schemes
include...
a) Equalize Users per Server
b) Equalize Actual/Allow Users per Server
c) Assign to Highest Free Memory
d) Assign to Lowest Processing Load
e) Assign to Fewest Events per Second
f) Assign to Lowest Bandwidth Usage
g) Assign Randomly
h) Assign in Round-Robin Order

5) Provide one-click launching of the Monitoring (as a ClarioNET client) program for an
individual server. This allows you remote control of any server in your pool.

6) Continuously listens for requests from a client program and provides available
program listings and program launching.

The ClarioNET server DLL (clrnt55s.dll) contains internal performance monitoring


information, which has been enhanced in Version 1.2. The ClarioNET server side DLL
directly records performance information to a file for use by the monitoring and
“listening” modules.

Our chosen solution to ClarioNET program deployments uses multiple EXE brokers that,
in effect, provide direct client-to-program connections without any multi-client
datastream redirection. This avoids any problems with "blocking" connections and
enables the Operating System to handle processor allocation between programs.

LOADBAL.EXE is the central point of contact for your client application programs. It
provides the list of available programs and assigns the proper server for the next launch
of your ClarioNET program.

9
Installation
Run the CSDM_SETUP.EXE program to install the ClarioNET Server Deployment
Manager.

Note: This installs ALL THE FILES into a single directory. YOU MUST COPY THE FILES TO
DIRECTORIES AS NEEDED.

Here is a list of the files that are installed and where the files go:

MONITOR.EXE Copy to C:\CWICWEB\EXEC


MONITOR.ICO Copy to C:\CWICWEB\EXEC
Monitoring program that resides on each server deploying ClarioNET applications
and runs continuously. It Cleans up after programs close, allows you to set ports
and IP addresses, specify programs to deploy, set limits on system statistics to
decline more programs to launch, and more.

LISTEN.EXE Copy to C:\CWICWEB


Listening program that resides on each application server and runs continuously.
This program “listens” for requests from LOADBAL.EXE and your client program
and replies to their requests.

LOADBAL.EXE Copy to C:\CWICWEB


Multi-Server Load Balancing program that resides on one server chosen as the
single point of contact for the client programs. Continuously maintains status and
program information for all servers. Assigns next server to client for program
launching.

RUNMNTR.EXE Copy to C:\CWICWEB


A ClarioNET client program launched by the Load Balancer to provide remote
access to the MONITOR.EXE program on each server.

C55NETX.DLL Copy to C:\CWICWEB –or- accessible in PATH


Capesoft “winsock” communication library used by LISTEN.EXE and
LOADBAL.EXE.

CLRNTAPW.TPL Copy to C:\C55\TEMPLATE


Clarion template file that should be added to ALL PROGRAMS that will be deployed
as ClarioNET programs and will be managed by the ClarioNET Deployment
Manager. This template adds code that triggers the internal procedures in the
ClarioNET server DLL file (CLRNT55S.DLL) to record performance information to a
file named PERFINFO.TPS. (Please see later section).

CNMANAGR.LIB Copy to C:\C55\LIB


This file will need to be added to your client program to provide linkage for the
new ClarioNET client side procedure calls you can use to access the Multi-Server
Load Balancer.

CONNECT.PRJ, CONNECT.CLW
This Clarion program is a model of how to code the client to start a ClarioNET
program from the Lad Balancer (LOADBAL.EXE)

10
C55APS10.EXE
This is the Soft Velocity EXE Application Broker. It is supplied for your
convenience. This file may not be redistributed to others, however you may be
able to download this from Soft Velocity and redistribute it.

You also need the following files to be available in the computers “PATH”:

C55RUNX.DLL ! Clarion 5.5 file


C55TPSX.DLL ! Clarion 5.5 file
C55DOSX.DLL ! Clarion 5.5 file
C55ASCX.DLL ! Clarion 5.5 file
WININET.DLL ! Windows ™ file included with Internet Explorer Version 5
PSAPI.DLL ! Windows ™ file

Please note…

1) The installation program will ask you to select the “Root” ClarioNET deployment
directory. This is typically “C:\CWICWEB” and this “root” directory should
already contain the C55APS??.EXE file and several subdirectories.
2) A program group item “ClarioNET” and an entry “Srvr Deploy Mgr (SDM)” and
“Uninstall SDN” will be added.
3) You will need to enter your “Security Key” in the MONITOR.EXE program and
both the “Security Key”and “Deployment Password” in the LOADBAL.EXE
program.

Security Key & Deployment Password

These two items are assigned to you when you purchased your license for the
ClarioNET Server Deployment Manager.

The deployment manager can manage deployment of programs created by one


licensed ClarioNET Thin Client developer. This is done by comparing the “License
Password” that is compiled into the server program with the Security Key you are
assigned.

Between the License Password compiled into your programs and the Security Key
that is entered into the MONITOR.EXE and LOADBAL.EXE programs your complete
deployment is secured.

The “Deployment Password” enables the number of servers to be managed


according to your purchased license. Additional servers can be added with just a
simple purchase of a new Deployment Password. The Deployment Password is an
encrypted string that contains elements of your Security Key, License Password, and
allowable server count.

NOTE: This system was carefully designed for your convenience and security
and to safeguard the distribution of our software . If you encounter problems,
frustrations, or inconveniences please be sure to let us know.

11
System Requirements

ClarioNET Version 1.2


Clarion Version 5.5 G
Screen Resolution: 1024 x 768 with Small fonts

Running Programs as Services

You will probably want the system to restart automatically on a server reboot.
However, because a user actually needs to “lob in” for programs in the “Startup”
group to be run you will need to install the programs to run as services.

We have found that Basta Computing’s program “AppToService” does a nice job
starting up the ClarioNET Deployment Manager programs to run before the user
actually logs on. You can check:

http://www.basta.com/ProdAppToService.htm

to get more information.

Typical Application Server Directory/File Layout

C:\ CWICWEB
| LISTEN.EXE Always runs, reads info from TPS files
| C55APS10.EXE Clarion Application Broker EXE
| PERFINFO.TPS Performance file, maintained by CLRNT55S.DLL
| PROGLOST.TPS List of available programs, maintained by MONITOR.EXE
| LOADBAL.EXE Main point of contact, install and run on the one server that manages the others.
| RUNMANGR.EXE Launches MONITOR.EXE as ClarioNET session, install and run with LOADBAL.EXE
|
|-- EXEC Subdirectory where your deployed programs reside at or below
| MONITOR.EXE Always runs, performs all cleanup and sets up deployment manager.
| MONITOR.ICO
| YourProgramDir A directory that holds one of your programs wth it's related data
| YourProgram.EXE
| YourIcons.ICO
| YourDatabases
|
|-- PUBLIC Directory where temporary files are created
TemporaryFiles ClarioNET created temp. print files
InstanceDirectory Directory created for each user who launches a program. Directory and files temporary.
*.tmp Working files used by ClarioNET to send info to
client.
*.ico, *.gif, etc. Many files might be put here by ClarioNET for transfer to client.

12
File Locations for ClarioNET Deployment Manager
Only three executable files are needed to fully deploy the Server Deployment Manager.
Two operate on each individual application server and the third installs on the server
specified as the central Load Balancer point. You should already have a directory set up
for your ClarioNET applications to be deployed in and your ClarioNET applications should
be working.

The ClarioNET documentation details this information and we repeat it here for your
convenience...

C:\CWICWEB - Contains App. Broker : C55APS10.EXE or C55APS.EXE


- Contains LISTEN.EXE (installed from this package)
- Contains C55NETX.DLL ((installed from this package)
- Contains LOADBAL.EXE (installed from this package)
Install on only ONE Server in the deployment !
Contains RUNMNTR.EXE (installed from this package)
Install on only ONE Server in the deployment !
-

C:\CWICWEB\EXEC - Contains subdirectories that contain your applications


- Contains MONITOR.EXE (installed from this package)
- Contains MONITOR.ICO (installed from this package)

Note: Other files are required to be accessible to your Clarion, ClarioNET, and the
Server Deployment Manager that are NOT supplied here BUT ARE SUPPLIED with your
Clarion, ClarioNET, and Windows installation. These files are:

Clarion: C55RUNX.DLL, C55DOSX.DLL, and C55TPSX.DLL


ClarioNET: CLRNT55S.DLL, LSCOMP.DLL
Windows: PSAPI.DLL, WININET.DLL, WINSOCK.DLL
PSAPI.DLL can be obtained from:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate
Your program: Any additional DLL’s used in your Clarion program must also
be available in the “PATH”.

C:\C55\LIB - CNMANAGR.LIB (installed from this package) contains new


Calls that you will use to contact either the LOADBAL.EXE or
LISTEN.EXE programs.

C:\C55\TEMPLATE - CLRNTAPW.TPL (installed from this package) an extension


to be added to your program to record information about the
program instance to the performance information file.

13
The Main Program Files & Their Purpose
Server Monitor (MONITOR.EXE)
This is the main monitoring, configuration, and cleanup center for your deployment on
each individual server. It displays information on the status of that server’s running
ClarioNET programs and allows you to specify setup and control information.

This program continually scans the database of performance information


(PERFINFO.TPS) and performs cleanup operations on sessions that have finished or
become inactive. This includes terminating the Application Broker running on an
unused port, removing temporary directories, removing left over temporary files, and
terminating program instances that appear to be “hung”.

Settings include range of ports to use for hosting, performance limits for starting more
instances, directory structure, list of programs available, and manual “cleanup”
options.

You must leave this program running at all times so that automatic cleanup operations
are continually running.

MONITOR.EXE can also be run remotely as a ClarioNET application so that you can
manage your individual servers from the Load Balancer program (LOADBAL.EXE).

Client Listening (LISTEN.EXE)


This program must run at all times on each server used to provide ClarioNET
applications. This program “listens” on a specified “port” using direct “winsock”
protocol for incoming requests from either a “Client” program or from the Load
Balancer module.

The “port” this program is listening to receives requests from:


• LOADBAL.EXE when it rquests status information and available programs lists from
the server.
• The client program contacts LISTEN.EXE through the port when it has received
information from LOADBAL.EXE directing it to this server to start a program.

Load Balancer (LOADBAL.EXE)


Only one copy of this program is needed per set of servers providing ClarioNET
deployment.

This program is run on a “main” server and constantly “listens” for requests from the
client.

1) When the client sends a request for a list of programs available the Load Balancer
replies with a list of all programs available across the managed servers. Your client
side code can offer the user choices or simply restrict them to a single choice.

2) When the client sends a request to start a program, the Load Balancer scans it’s
database of current performance information for all servers and responds to the
client with the server ID and Port Number to contact. The client then contacts the

14
LISTEN program on the assigned server directly, receives the port number to use,
and then launches the program. All of this is handled effortlessly with three simple
procedure calls on the client.

The Load Balancer contains specific setup information for building a list of servers to
manage. The servers can be located anywhere on the global Internet.

15
ClarioNET Server Deployment Management Philosophy
After much trial and error we have determined that the preferred method to deploy
ClarioNET Thin Client applications on a large scale is to use individual copies of the
Clarion Application Broker running on specific ports connected to each client. The
Application Broker sessions are launched when a program is starting up and terminated
when a program has ended. This leaves no ports “open” except for the port used by the
“LISTEN” and “LOADBAL” programs. Those two programs use direct winsock and can
listen to any available port for security.

Because ClarioNET has it’s own built-in 56-bit encryption stacked on top of a proprietary
compression algorithm and alternate encoding system, the resulting datastreams are
extremely secure and there is no need for HTTPS protocol is questionable. With direct
broker-to-port connection no datastream routing among multiple programs is needed,
thus eliminating connection blocking or possible datastream corruption when one
application is managing multiple clients.

16
EXE versus ISAPI Clarion Application Brokers
The Clarion Application Broker is provided by Soft Velocity in two versions: ISAPI for
Microsoft Internet Information Server and a stand-alone “EXE” broker. Because of the
simplicity of the EXE broker using a single Broker/Port/Client design it’s advantages for
stability and management from experience seem to define it as the preferred soution.

There are several versions of the Clarion Application Broker EXE that have been
available since late 1999. Any version will work fine as long as it is intended for Clarion
5.5.

17
Your Server Programs : Some Added Code Required
To allow the ClarioNET Server Deployment Manager to work, internal procedures within
the CLRNT55S.DLL ClarioNET application extension are brought into play. Performance
information is generated and written to a file called PERFINFO.TPS that resides in your
C:\CWICWEB\EXEC (or similar) directory. All running instances of your ClarioNET
programs write to this file. When your program runs as a non-ClarioNET “local”
application no performance writing is done.

To trigger the updating of the performance file some added code needs to be inserted
into your main “PROGRAM” CLW file. You can do this in either of two ways:

1) Add the extension template “CLRNTAPW.TPL” to your application. “CLRNTAPW”


stands for ClarioNET Application Performance Writer”. This template simply adds
the code shown on item #2 to your program.

2) Add the following code BEFORE the call to ClarioNETServer:Init :

!---------------------------------------------------------
! ClarioNET Application Performance Writer Startup
! This MUST be before the call to ClarioNETServer:Init
RunCall.ProgramName = ''
RunCall.Parameter = ''
RunCall.Frequency = -2
! No other uses of "RunCall" are allowed !
!---------------------------------------------------------

When this code is used the ClarioNET Server DLL will internally keep track of:
Client/Server Events, Average Events per Minute, Total Processing Time, Average
Processing Time, Server->Client datasize, Client->Server datasize, and Average
datastream size. In addition, all the details of the particular instance are recorded:
Client IP, ServerIP, Instance Process ID, Broker Port and Process ID, Temporary files
and directories created, Start, Update, and Time-Out times, and the “Active” status of
the program instance.

All of this information is written to the PERFINFO file in a speed-optimized manner so


that the impact to your running program is at or near zero.

With all of this information available the MONITOR and LOADBAL program can fully
maintain your running ClarioNET programs, provide complete cleanup capabilities, and
have the data needed about the running applications to do intelligent load balancing
across your servers.

18
Connecting the Client to the Server Program
The other change you will need to make is to use new procedure calls available to you
in your client program. These procedures are contained in the CNMANAGR.LIB. You
will need to add CNMANAGR.LIB to your client program project.

We have provided CONNECT.PRJ/CLW to show you how to connect your client program
to the load balancer program and to the individual application server.

Here are the four new procedure calls that are available:

1) CNManager:GetProgramList (STRING Server, USHORT Port, USHORT


Timeout),SHORT,PROC

This procedure contacts the LOADBAL.EXE program and obtains a list of programs
available.

Server: The domain name or IP address of the server where the LOADBAL.EXE
program is running

Port: Port where the LOADBAL.EXE is listening.

Timeout: Time in seconds to wait for a response.

If unsuccessful at contacting the server this procedure returns “0”.

19
If there are no programs available this procedure returns “-1”.
If there are programs available this procedure returns “1” and a QUEUE of the
program EXE file names and descriptions are placed in a QUEUE named
“ProgramList”. You can get access to the QUEUE by using the following prototype:

ProgramList QUEUE,PRE(PL),EXTERNAL
EXEName CSTRING(25)
Description CSTRING(200)
END

The important item is PL:EXEName. Use this string as the “request” parameter to
the CNManager:GetServerConnection procedure when starting a program.

2) CNManager:GetBalancerConnection(STRING Server, USHORT Port, STRING


ProgramName, USHORT Timeout),STRING

This procedure contacts the LOADBAL.EXE program and requests the IP Address
and PORT where the program can be started.

If there is a server that can make the requested program available, the server IP
address, and port number to use in the next call to
CNManager:GetServerConnection are returned in CLRNT_C.ServerName and
CLRNT_C.ServerPort.

Server: The domain name or IP address of the server where the LOADBAL.EXE
program is running
Port: Port where the LOADBAL.EXE program is listening.
ProgramName : This contains the program EXE name needed and must be the
string returned from PL:EXEName –or- the exact program name as it appears on
the list of programs specified in the MONITOR.EXE program on each application
server.
Timeout: Time in seconds to wait for a response.

If there is a problem this procedure returns an error string.

Returns “1” if the procedure was successful and the following values are set:
CLRNT_C.ServerName
CLRNT_C.ServerPort

If successful LOADBAL.EXE has determined which server best conforms to the


load balancing method selected (memory, processor usage, event frequency,
or other items.). The items CLRNT_C.ServerName and CLRNT_C.ServerPort
are set so you can call CNManager:GetServerConnection next to actually
get the port, directory, and program name to use when launching the
program, for example….

CNManager:GetServerConnection(CLRNT_C.ServerName,
CLRNT_C.ServerPort, CLRNT_C.HostProgramName, 30).

NOTE: You can NOT call CNMANAGER:GetConnection without calling


CNManager:GetBalancerConnection first. Additional internal information is

20
returned from the load balancer that is needed in the subsequent call to
CNManager:GetServerConnection

3) CNManager:GetServerConnection(STRING Server, USHORT Port, STRING


ProgramName, USHORT Timeout),STRING

This procedure contacts the LISTEN.EXE program and requests the PORT where
the program can be started.

This call does many things. It checks that the program is available (and the
specified number of copies has not been reached), it checks Clarion Application
Broker availability and makes sure one is available, and other housekeeping
issues.

Server: The domain name or IP address of the server where the LISTEN.EXE
program is running
Port: Port where the LISTEN.EXE is listening.
ProgramName : This contains the program EXE name needed and must be the
string returned from PL:EXEName –or- the exact program name as it appears on
the server.
Timeout: Time in seconds to wait for a response.

If there is a problem this procedure returns an error string.

If the procedure was successful it returns the number “1” as the string and the
following values are set:
CLRNT_C.ServerName
CLRNT_C.HostProgramDirectory
CLRNT_C.HostProgramName
CLRNT_C.ServerPort

IF SUCCESSFUL you can proceed to call ClarioNET:StartServerProgram() and


ClarioNET:StartClientSession() as usual to start using the program on the
server. The LISTEN.EXE program has already made sure that an Application
Broker is available for you at CLRNT_C.ServerName and is listening on
CLRNT_C.ServerPort.

The MONITOR.EXE program is aware that a program is about to be started,


and if not started the broker will be terminated on the next automatic or
manual cleanup.

4) CNManager:Ping(STRING Server, USHORT Port, USHORT Timeout),STRING

This procedure contacts either the LOADBAL.EXE or LISTEN.EXE program and


receives a simple response if the program is listening.

Server: The domain name or IP address of the server where the LOADBAL.EXE or
LISTEN.EXE program is running
Port: Port where the LISTEN.EXE or LOADBAL.EXE is listening.
Timeout: Time in seconds to wait for a response.

21
Here’s a sample “ping” response….

22
MONITOR.EXE Screen Descriptions
The MONITOR.EXE program displays a screen that provides continually updated
information on the server deployment of your ClarioNET program. For this to work YOU
MUST add the code to your server program as described in Your Server Programs : Some
Added Code Required. This code triggers the ability of the CLRNT55S.DLL application
extension to maintain the performance information file PERFINFO.TPS that MONITOR.EXE
and LISTEN.EXE use.

Here is the main monitor screen….

(1) This area lists all the currently running programs on this server. Using the
mouse to highlight a line will display all the details for that instance on the
“Details” tab. As programs are started, ended, and while running you will
see the statistics constantly being updated.
(2) The “Remove” button will terminate the program and broker and remove
all files and directories for the highlighted running program. This button is
most commonly used for program instances that appear to be “hung” or
otherwise not responding. The “Refresh” button re-reads the
PERFINFO.TPS file and refreshes the list to display all currently running
instances. This is commonly used to force a complete reload of the list
from the file.

23
(3) These tabs allow you to sort nearly all of the data according to the
particular field value.
(4) These are the tabs that allow you to review, specify, and clean the entire
ClarioNET deployment on this server. Each of these tabs and their contents
are detailed below.

From this one screen you can monitor all activity on a server. The Load Balancer
program also has a similar ability to display statistics for each server being balanced
with a similar screen and set of tabs.

Status Tab
This tab display the overall status information for the combination of ALL RUNNING
PROGRAMS deployed as ClarioNET application on this server.

The “Limit To” column of entries controls how high the related values can go before
the LISTEN.EXE program will prohibit the startup of additional program instances.

Current Active Sessions


The number of active program instances.

Average Dataflow per Second


Using data from all active programs this value is the average number of bytes
transmitted every second from the server to the clients. This value is an average of
the last 100 Server to Client data transmissions within each program instance,
averaged across all running programs.

Average Client/ Server Event Frequency


The average spacing in seconds between events received from the client. This value
is the average of the last 100 events for each program.

Average Client/ Server Event per Minute


Similar to event frequency, this value is the average number of events per minute
that the server is processing for all currently open programs.

Average CPU Loading from all Instances


Within each program the ClarioNET extension DLL keeps track of the time elapsed
between receipt of a client event and when the program has sent a response. We call

24
this the “Process Time”. Each client “event” causes the program to process the event
through the ACCEPT loop and thus processing time is used.

Each program keeps track of the average processing time for the last 100 events,
and this average per program is then ADDED for all currently running programs. This
value represents the percentage of computer time that the processes have run. The
actual value is (seconds or processing time) per (second of computer time) and
represents a relative CPU processing load on the server.

There are two major factors that can make this number somewhat imaginary…1)
Because the operating system is multi-tasking between programs the actual CPU
time dedicated to each specific program might be much less than the time reported,
and 2) Because the average is for the last 100 events it will be inaccurate when the
client is having the program perform processor intensive work (big database
searches or reports, extensive numerical procedures, etc).

% Memory Load
This is the amount of memory that is used compared to the measurable RAM
available. This DOES NOT INCLUDE VIRTUAL MEMORY. When a server must run
dozens of users simultaneously it is considered bad design to use virtual memory
because of the time required to swap memory spaces when a page fault occurs.

Free Memory
This is the amount of free memory currently reported by the Windows API call
GlobalMemoryStatus to the “dwAvailPhys” structure member.

Total Memory
This is the amount of free memory currently reported by the Windows API call
GlobalMemoryStatus to the “dwTotalPhys” structure member.

Monitor Refresh Time


This value controls the window timer frequency used to re-read the PERFINFO.TPS
performance information file and update the LIST of statistics for the running
programs. The value here will directly effect how up-to-date the information being
reported in the list and on the “Status” and “Detail” tabs will be. We recommend a
value of 3 seconds. Automatic cleanup is also performed at this time interval.

Cleanup Scheduling
You can specify “Automatic” and “Manual” here. When “Automatic” is chosen the
program will automatically review the status list for the applications and cleanup
when the instance is marked inactive or there is missing information. Extensive
checks are made before terminating either the program process instance or the
Application Broker process. The cleanup also includes removing files from the
temporary directory created for that program instance and also removing the
temporary directory itself if the program has failed to do so. The cleanup check is
performed on every “refresh” cycle.

Press to START/STOP Listening Module


This button starts and stops the LISTEN.EXE program.

25
Details Tab
This tab provides all the specific information for the program instance that is
highlighted in the list.

Active Status
Indicates whether the program instance is active or has terminated normally. When
an automatic cleanup cycle is used normally all inactive program records will be
removed and this will not say “N”. Normally this value is always “Y” and Active =
Yes.

Program EXE Name


The executable program name used by the client when launching this program

Process ID for this Instance


The internal operating system “Process ID” for the EXE program instance. You can
easily match program EXE name and Process ID on the Task Manager screen on the
Process tab.

Public Directory
The full drive and path to the root public directory where any icons or graphic files
should be placed if they do not reside in the same directory as the EXE file. This is
also the “root” PUBLIC directory where the temporary directories are created for
each program instance.

Temporary Directory for Instance


This is the name of the directory, which resides under “Public Directory” that is being
used for all the temporary files for this particular program instance. When the
program exits normally this directory and any files within it should be deleted. If not
the cleanup process of this Monitoring program will take care of it.

Application Broker Process ID


This is the operating system assigned Process ID for the copy of the Clarion
Application Broker being used and listening to the port for this program instance.

Application Broker Port Used


This is the computer port used for communication between the client program and
Clarion Application Broker for the duration of this program instances life.

Start Time for this Instance


This is the time (on this server) when this program EXE was started.

26
Last Update Time
This was the time (on this server) when the last event from the client was received.

Time since last “Event”


This is the elapsed time since the last client event was received.

Automatic Stop Time


This the time (on this server) when the program instance should be considered
“dead” if there has been no updating activity (events) received from the client. When
this time has passed this program instance and broker process are terminated and
the temporary instance directory and component files are deleted.

Server IP Address
This is the “name” or “Address” address used by the client to contact this server.

Client IP Address
This is the Internet IP address of the client computer connected to this program
instance, port, broker, etc.

Total “Events” for this Instance


This is the running total of events received by the server for this program instance
since it was started.

Average frequency of “Events” (seconds)


This is the average frequency at which events have been received from the client.
This is the average of the times between the last 100 events receives and so can be
considered a longer term average (perhaps minutes) rather then a measure of
intense short term activity.

Total Bytes Sent So Far


This is the running total of bytes for all datastreams SENT from server to client since
the program instance started.

Total Bytes Received So Far


This is the running total of bytes for all datastreams RECEVIED by the server from
the client since the program instance started.

Average Data Size Sent To Client


This is the average size of he datastream sent from the server to the client. The
datastream sizes of the last 100 transmissions from server to client are used to
calculate this average value. Because of this the average value is for a large
sampling of program activity rather than for momentary short bursts of activity.

Total Processing Time


This is the total of all time that the program has spent processing events received
from the client.
Average In/Out Time for this Instance. Because each program instance might be
interrupted so that the CU can work on another instance, this value is only indicative
of the time spent processing tasks for this program instance.

27
Program List Tab
This tab is used to define all the programs that can be launched on this server as
ClarioNET programs.

Program EXE Name


Program EXE name as it is on disk and will be reported to the client.

OK To Allow?
Indicates whether to allow usage of the program. This is useful to suspend execution
of a program so those new users are not permitted until an update is completed.

Max # of Allowed Instances


The maximum number of simultaneous instances of this program that are allowed.
This is useful when you are deploying several programs and one takes up a much
larger share of memory and resources than the others. By limiting the number of
executions for the large program you can effect a balance of server usage between
all programs.

Inactive Time Out


Recall that each of your server programs already has a timeout setting where the
program will automatically terminate if there is no activity received from the client.

This entry adds another level of protection. Here you can set a time where the
MONITOR.EXE program will forcefully remove the program (any instance of this EXE)
when there has been no activity from the client side for a certain length of time.

Program Directory
This is the location of the EXE file as a subdirectory of the “Main Executable Root”
(see description for this in the “Directories & Files” tab section).

Description
This is a description of the EXE program. When the client requests the list of
programs available the EXE name and this Description are sent to the client.

Add/Edit/Delete
These buttons give you access to the following window which allows adding and
editing program records.

28
Ports / IP / Listening Tab
This tab controls the IP addresses and ports used for various tasks by MONITOR.EXE
and LISTEN.EXE use.

Computer IP Address
This is the IP address for this server and is the IP address that will be sent to the
client for use in launching a ClarioNET program on this server. This IP address will
also be reported to the Load Balancer for use by the client for program launching.

Computer Name
This is the “name” given to this computer and is the name that identifies this
computer on a network. It is not used by the Deployment Manager except for
display.

Tests Reveal…..
These values for IP Address and Computer Name are for your reference so you know
what the operating system is reporting for this server. The IP address reported is
what the command line program IPCONFIG would report. The Computer Name is the
result from a call to the Windows API function “GetComputerNameA”. The [Use]
button can be used to transfer the “Tests Reveal” information to the main entries for
Computer IP Address and Computer Name discussed previously. (This information
may not be available if internal checks are unsuccessful).

29
Port Availability
This section of input values defines the range of ports to use for the deployment of
ClarioNET programs. After practical testing we found it unnecessary to provide
specific controls over each port as all ports are simply conduits for a connection.

First & Last Port Number


These are the low and high range of port numbers to be used as a “pool” of ports for
application deployment. The “Listening Port” and “External Access Port” should NOT
be within this range.

Total Ports Available


This is the total ports in the port pool by calculating (High Port – Low Port + 1).

Instances per Port


This specifies the number of program instances that you will allow on each port.
Recall that the Clarion Application Broker was designed to handle anywhere between
10 and 255 program instances (client connections) per port and is capable of routing
the specific datastreams to the specific program instances.

So you can specify a range of 100 ports with just one instance per port, or you can
specify one port with 100 instances.

Total Program Instances Available


This is the product of “Total Ports Available” times “Instances Per Port” and represent
the maximum allowable number of program instances that can be launched.

"LISTEN.EXE" Setup
The following three entries control the LISTEN.EXE program. The LISTEN.EXE
program is the vital link between this server and the client program or load balancer.

Listening for Client on Port


This specifies the port number that the LISTEN.EXE program will monitor for
incoming information requests from either the Client program or the Load
Balancer program. This port can not be within the Low/High range of ports
allowed for application deployment.

The LISTEN.EXE program uses direct winsock programming for port


monitoring….it DOES NOT use the Clarion Application Broker.

Start Listening Module at Startup ?


This checkbox controls the automatic startup of LISTEN.EXE when this monitoring
program starts up.

“External Address” Port


This port defines where the Load Balancer module will send the startup commands to
launch a ClarioNET session of the MONITOR.EXE program. To launch the
MONITOR.EXE program remotely you must have an EXE Application Broker
listening to this port AND that Application Broker MUST be running.

30
Cleanup Tab
This tab has buttons to initiate cleanup operations and checkboxes to set the default
behavior during an automatic cleanup operation.

Cleanup/Remove Highlighted Program Record


For the program record that is currently highlighted in the status list box, pressing
this button will fully terminate all aspects of the program.

This includes:
• Terminating the program instance if still running
• Terminating the Application Broker instance if still running and no other instances
are using it,
• Deleting the temporary instance directory and it’s component files,
• Looking for and deleting orphaned temporary directories (and component files)
when the directory name is not found as a match in the list of directories for
currently running applications, and
• Deleting temporary files in the “Public” directory. The Application performance
Writer portion of the CLRNT55S.DLL application extension keeps track of the
temporary files created by ClarioNET and when a file is detected not to have been
deleted properly this monitoring program knows it and can delete it.

Cleanup ALL Inactive Program Records


This button searches through the list (and performance information file) looking for
records that either indicate the program instance is “dead” or a bogus record exists.
This button DOES NOT terminate active programs.

Terminate program Process During Cleanup?


Allows the automatic cleanup process to terminate an active process.

Terminate Broker Process on Cleanup?


Allows the automatic cleanup process to terminate an active broker if running and no
other program instances are using that broker (and port).

Delete Directories & Files for Inactive Program on Cleanup?


Allows the automatic cleanup process to delete the instance temporary directory for
the related program instance in the list.

31
Delete Orphaned Instance Directories on Cleanup?
Allows the automatic cleanup process to search for and delete directories (under
Public) that appear to be unused for any currently active program.

Delete Orphan Temporary Files on Cleanup?


Allows the automatic cleanup process to remove temporary files created in the Public
directory that have not been properly removed by the program during it’s operation
or shutdown.

Scan & Delete Orphaned Directories/Files


This button forces a scan for directories under the Public directory. Checking the
“Verify” box displays an approval message before deleting. All subdirectories not
associated with “in-use” programs listed in the Server Manager are judged to be
unused and deleted. This is IMPORTANT when you are launching ClarioNET programs
directly through an Application Broker and not using the deployment manager.

Scan & Delete Orphaned Temp Files


This button forces a cleanup of verified temporary files that have not been properly
removed. Checking the “Verify” box displays an approval message before deleting.

Drive & File Settings Tab


This tab provides an easy way to specify the directory layout of your ClarioNET
deployment.

32
Main Deployment Root
This is the main root directory under which all the ClarioNET programs, support files,
and Server Deployment Manager files exist.

Application Broker EXE


This is the application broker EXE file that should be launched to provide
communication between client and server program on the range of ports allowed.
This file is typically either C55APS.EXE or C55APS10.EXE. This file MUST be in the
“Main Deployment Root” directory.

Client Interfacing program File


This is the LISTEN.EXE program. Use this name unless you need to rename it for
some reason.

Main Executable Root


This is the directory under the Main Deployment Root where the MONITOR.EXE
program and all the program files, data files, graphics files, and all other files or
directories with programs needed to run your program are located. (Exception: Any
DLL files accessible with the global operating system PATH).

Performance Management File


The name and location of this file is determined by the directories chosen previously.
This is the main file that each program instance writes to and the MONITOR and
LISTEN programs read from and manage. This name is PERFINFO.TPS and is an
encrypted, password protected file.

Available program List File


The name and location of this file is determined by the directories chosen previously.
This file contains the program information that you entered on the “Program List”
tab. This name is PROGLIST.TPS.

INI Settings File


This file is used by LISTEN.EXE, MONITOR.EXE, and the ClarioNET server DLL
CLRNT55S.DLL to determine all parameters used in the ClarioNET Server
Deployment Manager. We do not specify a directory location and simply let the
Windows operating system choose. Typically this file is created and stored in the
Windows directory.

Licensing Tab
This tab provides a location for you to enter your Security Key. The Security Key is
assigned to you when you purchase your Server Deployment Manager license and is

33
based upon your ClarioNET License Password assigned by Soft Velocity. When entered
you will also see a partial view of the License Password that was used to create this
Security Key.

Also showing on this tab is the ClarioNET Server Deployment Manager End User
License Agreement (EULA). Be sure to read this because you are bound to the terms!

Contact Tab
This tab provides a button to launch an outgoing email to technical support for the
product, and also gives copyright and trademark ownership information.

34
LISTEN.EXE
This program runs continuously on each application server and listens to the port
established on the Ports/IP/Listening tab within the MONITOR.EXE program.

This program screen lists the requests for information received from the LOADBAL.EXE
Load Balancer program –or- incoming start-up requests from the client.

Note! If for any reason it appears that the Client program or Load Balancer can not
reach this “Listening” module, simply press [Stop Listening] then [Start Listening] to
briefly reset the internal WINSOCK communication system. If that does not work just
exit and restart the program.

This program gets all of its information from the PERFINFO.TPS, PERFINFO.INI, and
PROGLIST.TPS files. When it’s restarted no information is lost and it can immediately
restore all information it needs.

35
Load Balancer : LOADBAL.EXE
The Load Balancing module provides monitoring and program launching control for your
ClarioNET program deployment on an unlimited number of servers. Because HTTP is
used to contact and monitor all servers, your servers can reside locally or globally….all
you need is a TCP/IP connection between the two.

The Load Balancer allows you to establish a list of servers, by IP address, and have
them automatically “polled” to determine their operational status (for deploying
ClarioNET programs), collect the programs available on each server, and monitor the
currently running ClarioNET programs on each and all servers.

In addition, with a single mouse click you can launch a ClarioNET session to the
MONITOR.EXE program on any of the servers, allowing you to change settings, remove
users, and other tasks from your single server that contains the Load Balancer.

Note: Because all the programs that make up the ClarioNET Deployment Manager
perform tasks on timers there will ALWAYS be a certain lag time between when
something takes place and when it will show up on the Load Balancer screen.

For instance, when a new program is started by a client on a application server, that
server program must write information to the PERFINFO.TPS file about itself. Then the
Load Balancer must contact the LISTEN.EXE program to get the information from that
file and display it. If a request is received by the Load Balancer to launch another
program before this server specific information has been updated, the Load Balancer
will makes it’s decision on what it knows about at that time.

Because you are dealing with only a matter of seconds in a real deployment this really
is not a concern. When you are actively testing this Server Deployment system you will
tend to work it hard to see how it performs and need to remember this operational
behavior.

36
About Server “Polling”
The Load Balancer sends a “query” to each application server to get all the current
information for that server at regular time intervals. This time is set by the “Polling
Frequency” entry on the Load Balancer window. This basically sets a timer on the
window to trigger EVENT:Timer. The request is sent to the LISTEN.EXE program’s
port.

At this timer interval a “query” request is sent to each server in rolling order. If you
have 3 servers listed and a 5-second interval, the next server will be “polled” each 5
seconds, taking 15 seconds to poll all 3 of the servers. We suggest not setting this
“Polling Frequency” very low…you might think it’s important to have all the data up to
date, but in practice it really isn’t necessary. There is also a chance that closely spaced
polling will interfere with incoming client requests. (However, if you have 200 servers
and an anticipated 10,000 users I think we better talk).

Only servers that have their “USE ?” item set to “Yes” will be polled; the other will be
skipped over.

Also, the timeout period that this polling request waits is very small and in the unlikely
case that the server is busy when the polling query is received it will just bounce back
and the Load Balancer will temporarily show it as “Offline”. Don’t worry….there is a
99.9% chance that it will be successful the next time around.

In addition, you do not want the polling frequency very close together because it
might interfere with an incoming request for information from one of your “clients”.
Just let it roll along at a 5 to 10 second interval and watch it for a while……my guess is
that you will see everything work well and “even out”.

Screen Descriptions

Here is the main Load Balancer screen….

37
1) The Load Balancer listens for incoming requests from your “Client” programs. The
client can “ping” the load balancer, request a list of programs available (on all
servers), and request a connection to a server to start a session. The process of
launching a program from a client is simple and extremely fast because we use
direct WINSOCK communications.

This item shows the current port number being monitored and the Internet
Protocol (IP) address of the server where the Load Balancer is running. You can
“Start” and “Stop” the Load Balancer from listening to incoming requests with a
simple button press.

2) The Load Balancer maintains the current state of your entire group of servers
(server “pool”) by constantly checking in with each server and getting the latest
information. We call this server “Polling”. You can start and stop the automatic
polling and adjust the time between each request for status. When you have a
group of servers in one location connected by fast switchgear you can set this
value lower. For widely dispersed servers you might want to set a higher time
interval.

3) The “Server List” tab shown lists all the servers that are or might be available for
your full multi-server deployment. This list shows the basic information for each
server, whether it should be used, number of ClarioNET programs running, if the
server can handle more users, and the average response time of the polling
process.

38
This list will show you which servers can not be reached so that you can check for
problems.

4) For the currently highlighted server the list of information on the right shows the
current settings established in that servers MONITOR.EXE program.

5) Here we have the buttons that allow you to add, edit, and delete a server in your
pool.

6) The “Launch Monitor” button allows you to use the MONITOR.EXE program on the
highlighted server remotely using a simple ClarioNET client session. This allows
you to change the setting for a server, add, delete, or change programs available,
and remove program instances from one single location.

39
Server List Tab
This tab displays the overall status information for the combination of ALL RUNNING
PROGRAMS.

Server Settings & Current Status List


This is the main list of all servers you have configured in your server pool. Use the
Add/Edit/Delete buttons to manipulate this list.
Server Name: The name of the server, typically the name given to the server for
network identification. This name IS NOT USED except for display only. The
Load Balancer uses IP Addresses to contact all servers.
IP Address: The IP address that this server can be reached on.
Port: This is the port number that the LISTEN.EXE program is listening on at the
server.
Use ? This is a Yes/No flag to indicate whether the server should be included or
ignored.
Check Time: The most recent time that this particular server has reported its status
back to the Load Balancer.
Status: If the server was reachable during the last query of its status it is shown as
“Live”. If it was unreachable its status is listed as “Offline”.
Users: The current number of programs running on the server that are writing
information to that server’s performance file. The programming additions to your
server program using ClarioNET’s “RunCall” class are used to implement this
functionality.

40
Ports Available? This is the status of availability on the server for additional
programs. If everything is below limits “”All Limits OK” is shown. If not, for instance
the free memory limit has been reached (as specified in the MONITOR program) then
a message is shown.
Response Time: The time it took the load balancer to send a query asking for the
server’s status, the LISTEN.EXE program to prepare a response, and the response to
be received and saved

List of Values
For the server highlighted in the LIST box, the values to the right indicate the
configuration settings for that server.

Add/Edit/Delete Buttons
Use these buttons to add, edit, or delete the server information in the list.

Launch Monitor
For the server record highlighted, pressing [Launch Monitor] runs a ClarioNET client
program named RUNMNTR.EXE and launches a copy of the MONITOR.EXE program
on the server. This allows you use the Deployment Manager on any server in your
server pool.

Note these important items regarding launching the monitor program:


1) In the MONITOR.EXE program on that server you must specify an “External
Access” port on the Ports/IP/Listening tab. This sets which port is to be used by
this Load Balancer program to launch the MONITOR.EXE program as a ClarioNET
program.
2) You MUST have a Clarion EXE Application Broker started and configured to that
same port on the application server.

Other than those two items the Load Balancer will be given all the proper information
by the individual server LISTEN.EXE program.

Refresh Selected
For the server record highlighted pressing [Refresh Selected] will contact that server
and refresh all the information (independent of the timed polling cycle).

Ping Server
For the server record highlighted pressing [Ping Server] will send a simple “ping”
message to the server and report the response.

41
Process List Tab
This tab displays the overall status information for the combination of ALL RUNNING
PROGRAMS on ALL SERVERS. You can sort this list using several sorting tabs and a set
of sort direction buttons.

This list has a lot of information about each running program:

Server Name & IP Address : This is the same information that identifies the server
list (previous tab).
Program EXE Name, Port, Process ID: This identifies the running program and
the port it is using to communicate with the client. The ProcessID is useful for usage
with that server’s Task Manager.
Start Time : The local time as reported on that server when the program was
started by the client.
Client IP Address : The IP address of the client connected to that program
instance.
Last Event Time : The time of the client interaction with that program as reported
by the server.
Average Event Frequency: This is the average number of seconds between client
“events” received by the server.
Average Data Size per Event : This is the average size of the date sent by the
server to the client for each client event.

42
Average process Time: This is the elapsed time between when the server received
the client event until the response datastream was sent.

43
Available Programs Tab
This tab displays the program available on each server. You can sort this list using
several sorting tabs and a set of sort direction buttons.

List of Available Programs


Program Name & Description: This displays the program “EXE” name and
description that was specified on the server where it is available.
Server Name and IP: This identifies which server the program is available on.
Current Usage “ 3 of 100”: This is the number of copies of that program that are
running on that server, and then the total number of copies allowed to run at once.

Note: When the use count of an EXE on an application server has been reached, that
program will no longer appear in this list. When one of the program instances is ended
(freeing up) it will gain be listed.

44
Load Balancing Preferences Tab
Here you can specify how you want the Load Balancer to assign the next server to the
client. We’ve tried to offer a number of different ways to balance the load to each
server and invite you to suggest more.

Note: If a request to launch a program comes in the next server chosen is based on
the Load Balancer’s current “knowledge”. If just a second later a server is “polled” and
different data exists it will not be used for the current balancing decision.

Equalize Users per Server


New program is started on the server with the fewest users. When more than one
server qualifies the lowest processor usage is selected.

Equalize Actual/Allowable Users per Server


New program is started on the server with the fewest percentage users. Each server
has a set limit to the number of users it permits. The "percentage" is the ratio of
(Active Users / Allowed # Users). When more than one server qualifies the lowest
processor usage is selected.

Assign to Highest Free Memory


New program is started on the server with the highest free memory.

45
Assign to Lowest Processing Load
New program is started on the server with the lowest processing load. If this value is
within 5% of another server/s the program is started on the server with the fewest
events per second.

Assign to Fewest Events per Second


New program is started on the server with the lowest number of client events per
minute. If this value is within 10% of another server/s the program is started on the
server with the lowest processing load.

Assign to Lowest Bandwidth Usage


New program is started on the server with the lowest average data transfer from
server to client.

Assign Randomly
New program is started by randomly selecting a server.

Assign in Round-Robin Order


New program is selected on the next server in sequence.

Automatic Restart Time


To assist with trouble free unattended operation the Load Balancer program can
automatically restart itself if it appears to be “locked”. A separate “thread” is running
that is updated with every timed activity. If for some reason the main “polling” thread
hangs up (most likely from a TCP/IP error) this thread will detect it and restart the
LOADBAL.EXE program.

The time entered here is the time to wait after sensing no activity before beginning
the restart sequence.

Client Request Activity Log Tab


This list displays the incoming requests received from client programs and a brief hint
of what the Load Balancer’s response was.

46
Licensing Tab
This tab provides a location for you to enter your Security Key and Deployment
Manager Password. These were issued to you when you purchased your Deployment
Manager license.

The Security Key is formed from your ClarioNET License Password that was assigned
to the developer using the ClarioNET Thin Client Extension to Clarion. The Deployment
Password contains within it the number of servers allowed to be managed using the
Security Key as an encryption basis.

47
Also showing on this tab is the ClarioNET Server Deployment Manager End User
License Agreement (EULA). Be sure to read this because you are bound to the terms!

Contact Tab
This tab provides a button to launch an outgoing email to technical support for the
product, and also gives copyright and trademark ownership information.

48
Tutorial
On EACH SERVER that will be used as an application hosting server for your ClarioNET
application:

Install the Server Deployment Manager, Copy Files, Start App


Broker
• Run the installation program to place the files into the selected directory.
• Copy the files from the installation directory to the recommended final locations.
• Start the EXE Clarion Application Broker (C55APS10.EXE or similar) that is in your
“root” deployment directory, which is typically named “C:\CWICWEB”. Set the port
# to a port that YOU WILL NOT USE for any of the ClarioNET Deployment Manager
ports. This copy of the broker will be used for launching the MONITOR.EXE program
remotely from the Load Balancer.

Add Performance Monitoring


Add CLRNTAPW.tpl to your application –or- add source code as described in the
section titled “Your Server Programs : Some Added Code Required” and recompile
your server based ClarioNET program.

Check that your ClarioNET Program Runs Properly


• Check all the files for a proper ClarioNET deployment are present. Please see the
earlier section for file placement and your ClarioNET documentation for the files
required for ClarioNET. Use your client connection program to launch the program
using the port of the already opened Application Broker.

Run MONITOR.EXE and LISTEN.EXE


• Start the MONITOR.EXE program.
• Go to the License tab and enter the Security Key that you received when you
purchased the Server Deployment Manager License.
• Go to the Drive & File Settings tab and set the information.
• Go to the Ports/IP/Listening tab and set the range of ports that you wish to use.
Note! We recommend that you use the same “Listening” and “External Access” ports
for all application servers. The “External Access” port will be the same port you set
up for the EXE Application Broker in the section above titled “Install the Server
Deployment Manager, Copy Files, Start App Broker”
• Go to the “Status” tab and set the refresh time, cleanup settings, and limits.
• Go to the “Program List” tab and add the programs you wish to deploy on that
server.
• On the “Status” tab press [Press to start LISTENING Module] button. This launches
LISTEN.EXE.

49
Run LOADBAL.EXE

• Check that the LOADBAL.EXE and RUNMNTR.EXE program files are in the same
directory as the root deployment directory (typically C:\CWICWEB).
• Start the LOADBAL.EXE program.
• Go to the “Licensing” tab and enter the Security Key and Deployment Password.
IF both of these are correct you will see a number listed for the number of servers
you can manage.
• Go to the “Server List” tab and use the [Add] button to add a server. On this “Add”
screen you need to enter THE SAME PORT AND IP ADDRESS that is displayed in the
upper-left corner of the LISTEN.EXE program screen.
• In the upper-left corner of the screen set the “port” which the Multi-Server Load
Balancer should listen to for incoming client requests.
• In the upper-right corner set the “Polling Frequency”. To start, set this to 5 seconds.
• If the other LISTEN.EXE programs are running, after you add the servers and the
button in the upper-right says “Stop Polling” you should see the server listed and
the “Status” appears as “Live”.
• Go to the “Available Programs” tab and you should see the programs available on
each server you entered.
• Load and run the CONNECT.PRJ program and select the radio button that says “Via
Load Balancer” and press [Get Program List]. The program list should appear and
you should be able to highlight a program and press [Connect] and have the
program start up.

Test the CONNECT.EXE program provided


1) Start Clarion and load the CONNECT.PRJ project file that was supplied with this
ClarioNET Deployment Manager package.
2) Edit the CONNECT.CLW file and find the variable assignment for
“SDM_ServerName” about line 84. Edit the server IP address and port number TO
MATCH WHAT IT SAYS IN THE UPPER-LEFT CORNER OF THE LOADBAL.EXE
PROGRAM SCREEN.
3) Compile and run the program. You should see a list of programs that are available
from the Load Balancer program.
4) Highlight one of the programs and press [Connect]. If all is OK the program should
startup.
5) Look at the MONITOR.EXE screen….it should show that program running (but will
not contain a Broker process ID). This shows that the RUNCALL code you added has
triggered the internal ClarioNET Server DLL procedures to write the programs
performance information to a file.

50
Troubleshooting
1) Carefully check the ports that you are assigning to the LISTEN.EXE and
LOADBAL.EXE program.
2) Check that the ClarioNET program you want to execute can be successfully started.
3) Try using CNManager:Ping to check that LISTEN.EXE and LOADBAL.EXE are
“listening”.
4) Try hitting all keys on the keyboard quickly while changing tabs and highlighting
entries while chanting vigorously.
5) Contact us…..mdbrooks@clarionet.com

51
Technical Support
Technical support is available for the first 60 days after purchase at no charge via email:
mdbrooks@clarionet.com or telephone callback or fax: USA: 949-645-3881.

Thereafter fee based technical support is available.


“Bugs” in the software are repaired as fast as possible and at no charge. If Licensee
can provide examples or allow us pcAnywhere or Terminal Server access to review
your deployment it will speed up things considerably

Difficult to locate problems will take longer and may require further consulting work to
locate specific problems.

Our philosophy is that the initial license fee provides reimbursement for the cost of
development of the program and does not cover assistance with operation that is
contained in the documentation and information at www.clarionet.com/faqs. In cases
where the documentation is not clear it shall be revised and available as a new
downloadable PDF file at no charge.

Direct technical support beyond 60 days is fee based. Please contact


mdbrooks@clarionet.com.

52
License Agreement
ClarioNET Deployment Manager Software End User License Agreement (EULA) Trademarks, Trade
Name, Product and all materials © copyright 2002 by Michael D. Brooks of Newport Beach, CA, USA
mdbrooks@clarionet.com.

Read this license agreement completely. By using the ClarioNET Deployment Manager you are
demonstrating agreement with all provisions of this License. You may return the software within 60
days after purchase of a license if you are not satisfied or do not agree to the terms of this agreement.
Upon return and request for refund you may retain absolutely no copies of any materials received
except your original purchase receipt and related packing and sales material.

1. GRANT OF LICENSE
This License Agreement ("License") permits you (the "Licensee") to use one copy of the specified
version of the ClarioNET Deployment Manager ( the "SOFTWARE"), which may include "online" or
electronic documentation (the "SOFTWARE") for a single "deployment" of a Clarion program
enhanced for remote usage with the ClarioNET Thin Client extension product/s. A single
"deployment" of the SOFTWARE exists when it resides in temporary memory (i.e., RAM) or
permanent memory (e.g. hard disk CD-ROM, or other storage device) on one or more computers
interacting with one LOADBAL.EXE program. A "deployment" includes one or more programs made
available for remote usage with the ClarioNET Thin Client Clarion Extension and compiled with a
single developer’s ClarioNET License Password as provided by Soft Velocity Corporation. License is
granted to only one "entity", whether that means a person, company, corporation, or program
deployment provider. The numbers of servers included in a "Deployment" is governed by licensing and
the Deployment Password which controls the maximum number of servers capable of being managed.
Additional "deployments" and additional servers require separate or additional licensing.

2. UPGRADES
If the SOFTWARE is an upgrade, you may use or transfer the SOFTWARE only in conjunction with
the prior version(s) on the SOFTWARE.

3. COPYRIGHT
The SOFTWARE (including any images, "applets," photographs, animations, video, audio, music, and
text incorporated into the SOFTWARE) is owned by Michael D. Brooks and is protected by United
States copyright laws and international treaty provisions. Therefore, you must treat the SOFTWARE
like any other copyrighted material (e.g., a book or musical recording) except that you may either (a)
make one copy of the SOFTWARE solely for backup or archival purposes, or (b) transfer the
SOFTWARE to a single hard disk provided you keep the original solely for backup or archival
purposes. You may not copy the printed materials accompanying the SOFTWARE.

4. OTHER RESTRICTIONS
You may not rent or lease the SOFTWARE, but you may transfer the SOFTWARE and accompanying
written materials on a permanent basis provided you retain no copies, either for storage or in use, and
the recipient agrees to the terms of this Agreement. If the SOFTWARE is an upgrade, any transfer
must include the most recent upgrade and all prior versions. You may not reverse engineer,
decompile, or disassemble the SOFTWARE, except to the extent applicable law expressly prohibits
such foregoing restriction.

5. ClarioNET Program Hosting Service Providers


License provides usage with just one ClarioNET Thin Client Extension developer’s compiled
programs. Contact us for multi-developer deployment licenses.

6. DUAL-MEDIA SOFTWARE
You may receive the SOFTWARE in more than one medium. Regardless of the type or size of
medium you receive, you may use only the medium appropriate for your single-user computer. You

53
may not use the other medium on another computer or load, rent, lease, or transfer the disks to
another user except as part of the permanent transfer (as provided above) of all SOFTWARE and
printed materials, nor print copies of any user documentation provided in "online" or electronic form.

7. NO INTENT OF COMPETITION
You agree that by purchasing this software license your sole purpose for such purchase is not to
examine the software for development of products in direct competition to this SOFTWARE.

8. LIMITED WARRANTY
Licensor warrants that the SOFTWARE will perform substantially in accordance with the
accompanying written materials for a period of ninety (90) days from that date of receipt. Any implied
warranties on the SOFTWARE are limited to ninety (90) days. Some states/jurisdictions do not allow
limitations or duration of an implied warranty, so the above limitation may not apply to you.

9. CUSTOMER REMEDIES
Licensor and its suppliers'' entire liability and your exclusive remedy shall be, at Licensor’s option,
either (a) return of the price paid excluding shipping and packaging costs, or (b) repair or replacement
of the SOFTWARE that does not meet Licensor’s Limited Warranty and which is returned to Licensor
with a copy of your receipt. This Limited Warranty is void if failure of the SOFTWARE has resulted
from accident, abuse, or misapplication. Any replacement SOFTWARE will be warranted for sixty (60)
days after purchase. Outside the Unites States, neither these remedies nor any product support
services offered by Licensor are available without proof of purchase from an authorized non- U.S.
source.

10. NO OTHER WARRANTIES


To the maximum extent permitted by applicable law, Licensor and its suppliers disclaim all other
warranties, either express or implied, including, but not limited to, implied warranties of merchantability
and fitness for a particular purpose, with regard to the SOFTWARE and the accompanying printed
materials. This limited warranty gives you specific legal rights. You may have others which vary from
state/jurisdiction to state/jurisdiction.

11. NO LIABILITY FOR CONSEQUENTIAL DAMAGES


To the maximum extent permitted by applicable law, in no event shall Licensor or its suppliers be liable
for any damages whatsoever (including without limitation, damages for loss of business profits,
business interruption, loss of business information, or any other pecuniary loss) arising out of the use
of or inability to use this Licensor product, even if Licensor has been advised of the possibility of such
damages. Because some states/jurisdictions do not allow the exclusion or limitation of liability for
consequential or incidental damages, the above limitation may not apply to you.

12. U.S. GOVERNMENT RESTRICTED RIGHTS


The software and documentation are provided with restricted rights. Use, duplication, or disclosure by
the Government is subject to restrictions as set forth in subparagraph (c)(1)(ii) of the Rights of
Technical Data and Computer Software clause at DFARS 252.227-7013 or subparagraphs (c)(1) and
(2) of the Commercial Computer Software - Restricted Rights at 48 CFR 52- 227-19, as applicable.
"Manufacturer" is Michael D. Brooks, P.O. Box 188, Corona del Mar, CA 92625.

This product is governed by the laws of the United States of America and the State of California.

54

You might also like