high-availability again

Ben Carter bhc+ at pitt.edu
Thu Apr 14 13:44:30 EDT 2005

Dave McMurtrie wrote:

> Amos wrote:
>> What sort of changes did you have to make?
> We just had to change map_refresh() to call mmap() with MAP_PRIVATE 
> instead of MAP_SHARED.  Since mmap() is being called with PROT_READ 
> anyway, this doesn't affect the operation of the application since the 
> mapped region can never be updated.  Veritas CFS was not very 
> efficient about maintaining cache coherency across all cluster nodes 
> when we were using MAP_SHARED.  Everything worked, but under heavy 
> load it became extremely slow.
Actually, the important code change for any active/active cluster 
configuration is to make sure the stage./ files used during LMTP 
delivery have unique filenames across the cluster.

There are some other setup differences related to this same issue such 
as symlinking /var/imap/proc, /var/imap/socket, and if you care 
/var/imap/log to local filesystem space on each cluster node.  You could 
make these filenames unique across the cluster with code changes if you 
want to make the code changes for these also.

We added a "clusternode" parameter to imapd.conf to accomplish this for 
the LMTP stage./ files.

Otherwise, it just worked.



Ben Carter
University of Pittsburgh/CSSD
bhc at pitt.edu

Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html

More information about the Info-cyrus mailing list