Hello world,
so, with beta2 of Dovecot 2.0 being available, what is the preferred way to achieve load balancing and fault tolerance? As far as I can see it, there are basically two options:
Use a HA shared storage, export either a cluster filesystem or NFS, and have your dovecot servers mount that file system. Load balance these servers (Cisco ACE, ldirectord, ...) and there you go. Overall performance is limited by the speed of the shared storage and may further decrease due to locking issues, imperformant cluster filesystems and so on.
Set up every dovecot server with local storage and trigger a dsync after each change (pyinotfiy, incron, parse LMTP delivery logs, ...). Load balance these servers as before. Depending on the number of syncs that have to be done, mailbox replication may lag behind. The need to constantly spawn dsync processes may further decrease performance if you don't do it right (stickiness of established connections, replicating at most every xyz seconds).
What are your opinions on that matter?
Stefan
P.S: I've set up option two in a test setup, though the incron/inotify part is still giving me a headache.