Now it’s fine to configure our services.
On both nodes install and disable these services (cluster services will manage starting/stopping)
yum install postfix mysqld dovecot chkconfig postfix off chkconfig mysqld off chkconfig dovecot off
Copy the required data to our shared glusterfs storage.
cp -rp /var/lib/mysql /mysql/data/ cp -p /etc/my.cnf /mysql/data cp -rp /etc/postfix /mail/data cp -rp /etc/dovecot /mail/dovecot cp -p /etc/init.d/postfix /mail/data/postfix.sh cp -p /etc/init.d/dovecot /mail/data/dovecot.sh mkdir /mail/data/vmail
/mail/data/vmail will hold our user mail, otherwise we are making sure that our configuration files are located on the shared storage so we have a consistent environment.
Update /mysql/data/my.cnf with
datadir=/mysql/data/mysql
Create /mail/data/mail.sh since our cluster service needs to call both postfix and dovecot.
#!/bin/bash if [ "$1" == "status" ]; then ps -ef | grep -v grep | grep "/usr/libexec/postfix/master" exit $? else /mail/data/dovecot.sh $1; /mail/data/postfix.sh $1 exit 0 fi
Please note this is a quick and dirty hack. You should have more checks than just master running since we care about dovecot as well.
Now again on both nodes, make some symbolic links to the shared storage for our services.
mv /etc/postfix /etc/postfix.bak ln -s /mail/data/postfix /etc/postfix mv /etc/dovecot /etc/dovecot.bak ln -s /mail/data/dovecot /etc/dovecot
You should now be able to start your services. If you run into any errors, check /var/log/messages or /var/log/cluster/cluster.log
clusvcadm -d postfix-svc clusvcadm -d mysql-svc clusvcadm -e postfix-svc clusvcadm -e mysql-svc
To store users mail in /mail/data/vmail, make the following changes to /etc/postfix/main.cf – in this example we are using LDAP.
Both nodes in this case are replicating LDAP information from another server, so both the main LDAP server and one node could go down and users could still authenticate to the cluster services.
accounts_server_host = localhost accounts_search_base = dc=example,dc=com #Assumes users have a mail: attribute, if not use something else accounts_query_filter = (mail=%u) #accounts_result_attribute = homeDirectory accounts_result_attribute = mail #accounts_result_format = %u/Mailbox accounts_result_format = /var/vmail/%u/ accounts_scope = sub accounts_cache = yes accounts_bind = yes accounts_bind_dn = cn=admin,dc=example,dc=com accounts_bind_pw = PASSWORD accounts_version = 3 virtual_transport = virtual virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 virtual_mailbox_base = / virtual_mailbox_maps = ldap:accounts virtual_mailbox_domains = example.com
For Dovecot, configure LDAP normally and then make the following changes
conf.d/auth-ldap.conf.ext: args = uid=vmail gid=vmail home=/var/vmail/%u/ conf.d/10-mail.conf:mail_location = maildir:/var/vmail/%u dovecot.conf:mail_location = maildir:/var/vmail/%u
Once this is done, restart your services (clusvcadm -R servicename) and send some test e-mails to yourself.