.. -*- coding: utf-8 -*- Configuration ============= In order to work, you must describe all zeoclients , http server, balancer ... on a ini config file name by convention **cluster.ini** There is on minimum two section : * DEFAULT * cluster * connect DEFAULT ------- We define all options that are available for the script in general Example ~~~~~~~ :: [DEFAULT] ## Where we log timeout=5 logfile=ctl.log max_process_size=176000 critical_errors=Zope lock_file=ctl.lock mailhost=smtp.free.fr fromaddr= toaddrs= subject=[ERROR] - There is an error ping_command=ping -n 1 perfdir=/tmp archivedir=c:/logs Description ~~~~~~~~~~~ Options are: * **timeout** - timeout of http response. If an url spend more time of the timeout then an critical error is raised (default 10sec) * **logfile** - the location of the log file * **max_process_size** - the max amount size of an zeoclient can accept. If the process memory size reach this value, an critical is raised * **critical_errors** - string pattern separated by | that be considered as critical if the parsing of log file found it. * **lock_file** - o avoid that two process of the controller do critical job in same time. * **mailhost** - for configure send mail * **fromaddr** - the from addrs * **toaddrs** - a list of recipients that are alerting when there is an critical alert on cluster * **subject** - the subject of the mail * **ping_command** - the ping system command in order to see if an machine is available * **perfdir** - when checking url on zeoclient , we reporting access time on log file. The structure of directory tree is like that :: $perfdir\YYYY\MM\ * **archivedir** - when we rotate logs , all logs go to this directory Cluster ------- You declare in this section your http server in front of the zeoclients cluster, and zeoclient that are in the cluster. Example ~~~~~~~ :: [cluster] ## Definition of the pool of zeoclient zeoclients = zeoclient1,zeoclient2,zeoclient3,zeoclient4,zeoclient5 frontend = apache,squid,pound,management Description ~~~~~~~~~~~ Each element of zeoclients and frontend list must be a **reference** of an **section** in the *cluster.ini* file. So in this example we have **5 sections** that describe 5 zeoclients and **4 sections** that describe respectively apache , squid , pound and a zeoclient name *management*. Connect ------- For testing connection on zeoclient. .. warning:: Use authentification basic for connecting to zeoclient Example ~~~~~~~ :: [connect] login=admin passwd=admin entity=plone public_name=myplone.org Description ~~~~~~~~~~~ * **login** - user login * **passwd** - password * **public_name** - public name of the site * **entity** - name of plone site (for VHM request) Zeoclient --------- Describe an zeoclient. Example ~~~~~~~ :: [zeoclient] machine=myhost ip=192.168.0.6 service_name=Zope_1794486424 log_file=C:\work\instances\zeoclient1\log\event.log rotate_logs= C:\work\instances\zeoclient1\log\event.log C:\work\instances\zeoclient1\log\Z2.log pid_file=C:\work\instances\zeoclient1\log\Z2.pid port=8080 pool=1 type=ZeoClient Description ~~~~~~~~~~~ * **machine** - dns machine name * **ip** - interface to connect to the machine for starting service. * **service_name** - the name of the service (see property in windows service application) * **log_file** - where is the log file. If it is located in another machine we can get it via an share network file ( \\myhost\sharing_directory\log\event.log ) * **rotate_logs** - where are the logs to be rotated by the rotate process * **pid_file** - use for checking the memory process * **port** - use for checking the connection to the zeoclient * **pool** - for the load balancer. Value can be 1 or 2. * **type** - ZeoClient -> important ! tell to the controller script that this configuration is an ZeoClient. So the controller adapt the checking process to this type TCP server ---------- Use for monitoring tcp server in your architecture. Can be an IIS, Apache or every tcp server that can be started by an windows service (located or not on the local machine) Example ~~~~~~~ :: [apache] machine=youenn-0re1r3lw ip=127.0.0.1 service_name = Apache2.2 port=80 type=TCPServer Description ~~~~~~~~~~~ * **machine** - dns machine name * **ip** - interface to connect to the machine for starting service. * **service_name** - the name of the service (see property in windows service application) * **port** - use for checking the connection to the web server * **rotate_logs** - where are the logs to be rotated by the rotate process * **type** - must be TCPServer Zeoserver --------- Describe an zeoserver :: [zeoserver] machine=youenn-0re1r3lw ip=127.0.0.1 service_name = Zeo_1794486424 port=9090 type=ZeoServer Description ~~~~~~~~~~~ * **machine** - dns machine name * **ip** - interface to connect to the machine for starting service. * **service_name** - the name of the service (see property in windows service application) * **port** - use for checking the connection to the web server * **rotate_logs** - where are the logs to be rotated by the rotate process * **type** - must be ZeoServer Squid ----- Squid is commonly used as reverse proxy for accelerated things. .. warning:: Be carreful , squid purge operation can't be done only on the same **machine** which run **ctl.exe**. Example ~~~~~~~ :: [squid] machine=youenn-0re1r3lw service_name = Squid ip=127.0.0.1 port=3128 cache_dir = c:\zope\squid\cache rotate_logs= c:\zope\squid\log\access.log c:\zope\squid\log\cache.log c:\zope\squid\log\store.log exe = c:\zope\squid\sbin\squid.exe conf = c:\zope\squid\etc\squid.conf type=Squid Description ~~~~~~~~~~~ * **machine** - dns machine name * **ip** - interface to connect to the machine for starting service. * **service_name** - the name of the service (see property in windows service application) * **port** - use for checking the connection to the web server * **cache_dir** - c:\zope\squid\cache * **rotate_logs** - where are the logs to be rotated by the rotate process * **exe** - where is the squid executable , use for the purge of cache. * **conf** - where is the squid conf , use for the purge of cache. * **type** - must be Squid Pound ----- Pound is commonly used as load balancer. .. note:: You can compile pound with Mingw or Cygwin on windows .. warning:: dplctl.exe must have an access on writing because the conf is rewritting if you add or remove zeoclients. Example ~~~~~~~ :: [pound] machine=youenn-0re1r3lw ip=127.0.0.1 port=8085 service_name = Pound conf= c:\zope\balancer\pound.cfg type=Pound time_to_sleep = 40 Description ~~~~~~~~~~~ * **machine** - dns machine name * **ip** - interface to connect to the machine for starting service. * **service_name** - the name of the service (see property in windows service application) * **port** - use for checking the connection to the web server * **cache_dir** - c:\zope\squid\cache * **rotate_logs** - where are the logs to be rotated by the rotate process * **exe** - where is the squid executable , use for the purge of cache. * **conf** - where is the pound conf , use for QoS start of cluster. * **type** - must be Pound