Zope Enterprise Objects
Enfold Server, like the Plone software upon which it is based, uses a Zope Enterprise Objects (ZEO) architecture. ZEO consists of two components:
- ZEO Server This stores the Zope Object Database (ZODB) and manages data requests from Zope Clients. It uses a single port number (the ZEO port number) to communicate with Zope clients. Configuration file is located at zeo.conf.
- Zope Client(s) This receives browser requests and forwards them to ZEO Server via the management port specific to that Zope client. Each Zope client must use a unique port number. By default, the first Zope client uses port 8080.
The ZEO server-architecture was adopted by Plone to allow the load to be balanced more evenly among different servers. It also allowed a greater number of users to be served concurrently. For example, in Linux installs of Plone, it is possible to put Zope clients on separate machines from the ZEO server or servers.
The ZEO architecture on Windows (as implemented by Enfold Server) is slightly different. Enfold Server lets you manage multiple Zope servers and clients on the same machine, but not across multiple machines. The number of clients you use will be limited mainly by your server hardware.
(Read more about managing ports ).
At minimum, at least the Server component (ZEO) and one Zope client needs to be running for the website to work. By default, when you install Enfold Server, the server portion and the client will start automatically as a Windows service. The Encontrol desktop utility provides a way to view status and manage Zope clients more easily.
Increasing the number of Zope clients increases the number of threads Enfold Server uses to handle user requests. That improves throughput and handling of HTTP requests. However, doing this will increase the CPU and RAM load. (See How many Zope clients should you use?)
Administrators will sometimes shift a second Zope client from http requests to a client dedicated to an administrative or database task. This second client could run on a different processor on a multiprocessor machine while the main Zope client could handle web traffic while this administrative task is being performed.
Note that Enfold Server includes a debugging tool called Plone debug client. (Read more about Plone debug client). This starts a Zope client in debug mode in a Windows console and lets you view debug information. It also lets you perform actions and view the resulting output.
If you'd like to have your Enfold Server span more than one computer, then you can run multiple Zope clients connecting to one ZEO server.
One example would be having two computers with Zope Client(s) that provide content for users. The Zope Clients could be load balanced behind Enfold Proxy or another load balancer. ZEO Server would run on a separate machine, offering a scalable and powerful cluster of three machines.
To do this, install Enfold Server on all three computers. Turn off the appropriate services. The best way to do this is to change the Windows services from Automatic to Manual -- you could always change that option later. Then:
- On the ZEO Server computer, turn off the Zope Client. Go to Client > Start or stop > Manual, Stop. The Zope Client is now effectively off.
- On the two machines with Zope Client(s), turn off the ZEO Server. Go to Server > Start or stop > Manual, the click Stop.
- On each of the Zope Client computers, hook the Zope Client to the ZEO Server on the third machine. Go to Client > Ports in use and enter the host name (or IP address) of the machine with ZEO server, including the port. For example: 192.168.1.1:9999.
- Restart everything.
You should now be running a cluster that allows you to spread your server load.
The most common configuration settings are accessible from Encontrol. More settings are configurable by editing the configuration file for each Zope client inside each client directory:
C:\Program Files\Enfold Server\Client\etc\zope.conf C:\Program Files\Enfold Server\Client2\etc\zope.conf
The ZEO configuration can be found at:
C:\Program Files\Enfold Server\Server\etc\zeo.conf
More information on ZEO can be found at: http://docs.zope.org/zope2/zope2book/index.html