****** The Extended YALB-System (XYALB)******


This file describes the installation and configuration of the
Extended YALB-System (alpha version).

The YALB-System is a load balancing system for heterogeneous
workstation environments. The XYALB-System has been tested on 
machines running on Pentium Processors under Redhat Linux 6.5, Windows 95 and Windows NT. The program is also expected to run on Sun Sparcstations and SS 10/30 (sun4c, sun4m) under SunOS 4.1.1 and 4.1.3 respectively. The XYALB-System will probably run on other SunOS 4.x without having to change the source code.  To port it to other systems the source code has to be changed.


The XYALB-System consists of the following major modules/programs:


 - ldaemon
	The Load-Daemon calculates the local load of a host (based on the
      CPU-runqueue and the speed factor of the machine) and sends it
	to all other hosts in the system.
	It also performs authentication checks. The Load-Daemon reads the kernel 	virtual memory for the calculation of the load and for the authentication.
	

 - lmanager
	The Load-Manager collects the local loads from all hosts and
	selects the fastest host for execution.		

 - remote
	The Rexec-Manager executes remote jobs for a client. 

 - rexec
	Rexec is the user level program for executing jobs with the
	YALB-System. 

 - yalbinfo
	Yalbinfo shows the current load for all hosts in system.

 - yalb_host_config
	This program sets host specific parameters for a host. 

- yalb_system_config
	This program sets system wide parameters for all hosts in the
	system. See also 

 - yalb_kill
	Yalb_kill shuts down the YALB-System. 

 - yalb_stats
	Yalb_stats shows statistics about the performance of the YALB-System.


 - yalb.config
	Yalb.config contains the system wide and host specific parameters

 - yalb.match
	Yalb.match contains specifications for the translation of search
	paths delivered by the local automounter.

 - yalb.stats
	Contains statistics (in binary format).

 - libyalb.a(UNIX)/libyalb.lib(WIN32)
	This library contains the user interface to the YALB-System.

 - children.h, enumproc.h, ldaemon.h, lmanager.h, lobalib.h, Psapi.h, 	reconfig.h, remote.h, rexecbib.h, service.h, support.h, system.h, win32.h,  
	yalb_config_db.h,	yalb_stats_config.h, yalb_stats_display: Header files.


* Installation on UNIX *

At installation time some macros have to be defined in the Makefile. 
These are:

 - YALB_DAEMON
	The directory for the three daemons loaddaemon-*, loadmanager,
	and rexecmanager.

 - YALB_BIN
	The directory for the executables rexec, yalb_host_config,
	yalb_system_config, yalb_kill, yalb_stats, and yalbinfo.

 - YALB_DATA
	The directory in which the YALB-System will look for the files
	yalb.config, yalb.match and yalb.stats.

  - YALB_LIBRARY
	The directory for the library libyalb.a

 - YALB_INCLUDE
	The directory for the header files.

 - YALB_MAN
	Directory for the manual pages.

Also define SUNOS or LINUX in system.h depending on the Operating system you are using.

To install the YALB-System finally execute

	make all

to compile it, and

	make install

to copy the programs and the files to the specified directories.


In the file /etc/services have to be made entries for the three daemons
Load-Daemon, Load-Manager, and Rexec-Manager. The port number
can be chosen freely but the protocols must be `tcp' for the
Rexec-Manager and `udp' for the Load-Daemon and the Load-Manager.
The names for the ports are by default `ldaemon', `lmanager', and
`remote' for the Load-Daemon, the Load-Manager, and the Rexec-Manager
respectively. The entries look for example like:

	remote		8122/tcp	## Rexec-Manager
	lmanager	8123/udp	## Load-Manager
	ldaemon		8124/udp	## Load-Daemon

If you are running Yellow Pages, you have to edit the file on
the YP-master server only and to update and distribute the masters
database. Normally you need root access to do it.


* Configuration *

To configure the YALB-System use the programs yalb_host_config and
yalb_system_config which are described in the on-line manual pages.

To start YALB (this means starting the loaddaemon-[machine name]) you have to
switch to root-permissions.


Test 1: Run ``yalb_host_config -h <host>'' for every host, which
should be used. This contacts the <host> and starts a loaddaemon via``rsh <host> ...'' (which requires at least rsh execute permissions).
The loaddaemon starts the loadmanager and the rexecmanager.

Test 2: Create an entry in yalb.config (two lines containing):
	Host    = <the hostname>
	Choose  = YES
followed by an empty line and start the loaddaemon on every host which
should be used by hand with (/bin/csh assumed):
	/usr/local/etc/ldaemon-`uname -m` >&/dev/null &

To start YALB at boot time add
	if [ -x /usr/local/etc/ldaemon-`uname -m` ] ; then
        	/usr/local/etc/ldaemon-`uname -m` >/dev/null 2>&1 &
	        echo -n ' yalb'
	fi
to /etc/rc.local .


* Installation on WINDOWS NT *

Macros as described in "Installation on UNIX" sections are to be defined.

Then go to the directory where the files are unzipped. Then execute following commands 

	compile
to compile it, and

	install

to copy the programs and the files to the specified directories (under \usr\local).


In the file \winnt\system32\drivers\etc\servces make entries for the three daemons Load-Daemon, Load-Manager, and Rexec-Manager. The port number
can be chosen freely but the protocols must be `tcp' for the
Rexec-Manager and `udp' for the Load-Daemon and the Load-Manager.
The names for the ports are by default `ldaemon', `lmanager', and
`remote' for the Load-Daemon, the Load-Manager, and the Rexec-Manager
respectively. The entries look for example like:

	remote		8122/tcp	## Rexec-Manager
	lmanager	8123/udp	## Load-Manager: for loaddaemon
	ldaemon		8124/udp	## Load-Daemon
	application	8125/udp	## Load-Manager: for applications

Now you need to run each of ldaemon, lmanager, remote with option install to install to service (example ldaemon -install). Go to services icon on control Panel and change the properties of these services (manual or automatic-depending on whether you need to run it only once or everytime after booting).  
These services can now be run with option debug (example, ldaemon -debug). To run these automatically after booting you can include these commands in autoexec.bat.



* Configuration *

Rest of the configurations are similar to those described for "UNIX". The only change in the command will be the path seperator( '\' instead of '/').


* Installation on WINDOWS 95 *

Macros as described in "Installation on UNIX" sections are to be defined.

Then go to the directory where the files are unzipped. Then execute following commands 

	compile
to compile it, and

	install

to copy the programs and the files to the specified directories (under \usr\local).



In the file \windows\system\servces make entries for the three daemons Load-Daemon, Load-Manager, and Rexec-Manager. The port number
can be chosen freely but the protocols must be `tcp' for the
Rexec-Manager and `udp' for the Load-Daemon and the Load-Manager.
The names for the ports are by default `ldaemon', `lmanager', and
`remote' for the Load-Daemon, the Load-Manager, and the Rexec-Manager
respectively. The entries look for example like:

	remote		8122/tcp	## Rexec-Manager
	lmanager	8123/udp	## Load-Manager: for loaddaemon
	ldaemon		8124/udp	## Load-Daemon
	application	8125/udp	## Load-Manager: for applications

Now you need to run each of ldaemon, lmanager, remote with option install to install to service (example ldaemon -install). These services can now be run with option debug (example, ldaemon -debug). To run these automatically after booting you can include these commands in autoexec.bat.



* Configuration *

Rest of the configurations are similar to those described for "UNIX". The only change in the command will be the path seperator( '\' instead of '/').



For further informations contact
Dr. Abdul Sakib Mondal (abdulsakib@inf.com).

* Authors *
Extension and Modification by 
Abdul Sakib Mondal

The original YALB code by: 
Stefan Stille (stille@ibr.cs.tu-bs.de)
Henrik Carlsson (carlsson@ibr.cs.tu-bs.de)
Martin Loitz (loitz@ibr.cs.tu-bs.de) (author of yalbinfo)

* Bugs *

Please send bug reports to abdulsakib@inf.com.
