Professional Documents
Culture Documents
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:
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
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
6
Simple & Robust Management of ClarioNET Applications
Introducing the best way to manage your ClarioNET applications.
It consists of:
• 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.
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".
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
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).
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.
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:
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”:
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.
These two items are assigned to you when you purchased your license for the
ClarioNET Server Deployment Manager.
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.
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
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
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...
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:
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.
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).
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:
!---------------------------------------------------------
! 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.
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:
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
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.
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.
Returns “1” if the procedure was successful and the following values are set:
CLRNT_C.ServerName
CLRNT_C.ServerPort
CNManager:GetServerConnection(CLRNT_C.ServerName,
CLRNT_C.ServerPort, CLRNT_C.HostProgramName, 30).
20
returned from the load balancer that is needed in the subsequent call to
CNManager:GetServerConnection
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 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
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.
(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.
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.
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.
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.
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.
26
Last Update Time
This was the time (on this server) when the last event from the client was received.
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.
27
Program List Tab
This tab is used to define all the programs that can be launched on this server as
ClarioNET programs.
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.
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.
So you can specify a range of 100 ports with just one instance per port, or you can
specify one port with 100 instances.
"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.
30
Cleanup Tab
This tab has buttons to initiate cleanup operations and checkboxes to set the default
behavior during an automatic cleanup operation.
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.
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.
32
Main Deployment Root
This is the main root directory under which all the ClarioNET programs, support files,
and Server Deployment Manager files exist.
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
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.
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.
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.
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.
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.
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 Randomly
New program is started by randomly selecting a server.
The time entered here is the time to wait after sensing no activity before beginning
the restart sequence.
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:
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.
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.
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.
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.
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.
This product is governed by the laws of the United States of America and the State of California.
54