Dokumentation on ZEO working with WISE 1.2R2

From Tidepedia

Contents

1 What
2 Why
3 How
3.1 What to get
3.2 What to do
3.3 Now for some Webpages
4 What now

What

This section is about including ZEO to WISE 1.2R2 and setting up an architecture comprising of one (or more) Database-Server, and 1-n rendering Portalservers. The Art of balancing the Load is not covered in detail due to some open issues with Apache as a tool of choice.

WISE is a so called Product to ZOPE, the Z object publishing environment. ZOPE knows a toolset to serve a ZOPE Database (ZODB) to more than one portalserver based on TCP/IP connections. This toolset is an add-on to the ZODB called the Zope Enterprise Objects (ZEO).

In WISE 1.2R1 wich lives on the premises of ZOPE 2.6.4 backed by Python 2.34, ZEO is not part of the distribution. It sure is with the seperately sold ZODB Package 3.1.5 wich is the storage package used in ZOPE 2.6.4

We will get ZEO in a current Version (2.1.5) to work with the installed WISE to provide a network accessable Database server for 1-n rendering Machines serving the client requests for web-based information.

Why

Why Cluster WISE?

After some ugly encounters with performance issues of WISE even in the Enterprise Installation, we figured a cluster of machines to serve an evergrowing community within the german fleet should fix the issue.
Having concepts agreed upon and signed by COS CINCGERFLEET to collect and provide vital Information ressources for daily staff work via an information portal we based on WISE 1.2R2 we were in need of:

  • 24/7 allmost automatic failure tollerance as well as the
  • ability to balance loads in relation to user domains
  • ability to add or exchange portalserver hardware with minimum downtime for the enduser.

There are several other szenarios that would profit from the ability to connect more than one WISE Server to a common database-plattform.

CJHQ ISAF (C6) issued a PSR calling for improvements on the currently used WISE 1.2R2 with priority on scalability and robustness. – A Theatre information infrastructure that is not to be blocked by heavy access from outside users to the provided information, can be served via two separate servers working on one Database. One even in read only mode.

Do you have any further ideas for your problem that could be solved by clustering?

An architectural solution to provide loadbalancing and failover coverage is a server – cluster. So we needed to install a scalable, WISE based, 24/7 capable Information portal.

How

To put it simple: you need to get one or two things in addition to your WISE CD and do something to it.

What to get

For a WISE-cluster to make sense, you need

  • a minimum of two computers, one of which should at least cover the requirements for a WISE Server stated in the System Architecture document. Since this will be your database-server, concentrate on performant storage media (5 disks Raid5 or similar). IDE will also work for testing, but performance is heavyly dependant on overall I/O performance. Lots of users will kill an IDE Disk in no time.
    For starters, this machine will do to setup a working ZEO environment with 1 client. There is some drawback in performance by connecting the storage via ZEO, but it is now the base for our scalable architecture and we can add cheap Workstations with multo RAM and fast as lightning processors to render the Web-pages.
  • ZODB 3.1.5 from Zope.org´s repository as a zipfile. Unzip and take out the ZEO folder and relevant documentation if needet. Dump the rest.

What to do

This is a multipart story in whicht we will first setup one machine to act as

  • a ZEO server, serving the Database.
  • a ZEO client, rendering content from the database to the User. Aka a WISE Server.

Lets start with the ZEO Server:

  1. Install a WISE 1.2R2 WISE_1.2_Installation_Guide
  2. Copy the ZEO folder into WISE\lib\python.
  3. You now need to tell ZEO where it might find the Storage to serve.
  4. If you have your ..\var folder somewhere on the server, create a share for the instance_home. This one is named wise
  5. create a file config_storage.py in c:\program files\wise with the content:

    import ZODB.FileStorage
    Storage=
    ZODB.FileStorage.FileStorage(‘//ServerNameorURL/wise/var/data.fs’)

  6. Now you can start ZEO with the start.py handing over some parameters to tell zeo where to find the storage. You can put this into a cmd or bat file and link it to your desktop for reuse.
    cd C:\Program Files\WISE\bin python 
    c:\Program Files\wise\lib\python\zeo\start.py -p 7700 -S1=
    //ServerNameorUrl/wise/config_storage
    
    Storage config_storage refers to config_storage.py and 
    Storage refers to the Storage statement in that file.

Starting ZEO will leave a cmd window open with no messages displayed if all goes well.

We now have a ZEO Server running that is ready to serve database to several Rendering machines.

Now for some Webpages

To render the content of the Database into a Website, feed it and nurse it, we need a WISE Client. Now this is easy:

We have almost done the most of it by installing WISE in the first place. But that installation thinks it will find its data.fs and fileobjects in c:\program files\wise\var. But this way we would not be able to connect more than one WISE to the same Database… remember the purpose…?

So we tell WISE where to find its storage by putting a file into its instance_home telling it to connect to a ZEO Server on

ServerNameorUrl on port 7700 (in this example)

Create a file custom_zodb.py into instance_home
(aka //ServerNameorUrl/wise = the share wie installed earlier)

from ZEO.ClientStorage import ClientStorage 
Storage = ClientStorage(('ServerNameorURL', 7700)) 

Now we are left to tell WISE on startup where to find its INSTANCE_HOME. This can be achieved by changing two registry keys.

HKLM-Software-DigitalCreations-ZOPE-WISE- INSTANCE_HOME=//ServerNameorURL/wise

HKLM-System-CurrentControlSet-Services-WISE-parameters-start

add

INSTANCE_HOME=//ServerNameorUrl/wise

Now start WISE with net start wise from the commandline.

Voila. http://servername should now show a wise Site that is backed by a ZEO Server handing out the database.

What now

(open shoelaces)

First of all you can now add multiple WISE Servers redoing the last steps starting with the regedit.

Every WISE will serve content out of the same Database. If one drops out, the others
won´t notice.

You now got to put some brains and Hardware into balancing the website requests to one URL onto one of the multiple servers in sequence and the reply back to the requesting User.
but this is for another Howto.

Ah… please remember, to pack the Database and get rid of the z2.logs / apache access logs regularily.

Retrieved from “/tidepedia/index.php?title=Dokumentation_on_ZEO_working_with_WISE_1.2R2&oldid=60291”

This page was last modified on 2 June 2008, at 23:38.

This entry was posted in Allgemein, Clustering, Product Hacks. Bookmark the permalink.

Leave a Reply