a elastix clustering

7
Building Elastix-1.6.0 High Availability Clusters with DRBD and Heartbeat The following steps are to be performed on both primary and secondary servers: 1. Boot Elastix-1.6.0 Install CD 2. From boot menu, type „advanced‟ and enter. 3. During install routine choose to manually partition hard drive. The following is based on a 160.0 GB SATA Create root (/), ext3 partition with 6144MB (sda1) Create swap partition with 3072MB (sda2) 4. The remainder of the install routine is standard. 5. After installation and booting perform upgrade yum y update 6. You need also to Update Mysql due to this bug To do so, Add the following lines in a file by a name say remi.repo under /etc/yum.repos.d directory [remi] name=Les RPM de remi pour Enterprise Linux 5 - $basearch baseurl=http://rpms.famillecollet.com/el5.$basearch/ http://remi.collet.free.fr/rpms/el5.$basearch/ http://iut-info.univ-reims.fr/remirpms/el5.$basearch/ enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi failovermethod=priority [remi-test] name=Les RPM de remi en test pour Enterprise Linux $releasever - $basearch baseurl=http://rpms.famillecollet.com/test-el5.$basearch/ enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

Upload: cesar-hernandez

Post on 21-Apr-2015

50 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: A Elastix Clustering

Building Elastix-1.6.0 High Availability Clusters with DRBD and Heartbeat

The following steps are to be performed on both primary and secondary servers: 1. Boot Elastix-1.6.0 Install CD 2. From boot menu, type „advanced‟ and enter. 3. During install routine choose to manually partition hard drive. The following is based on a

160.0 GB SATA

Create root (/), ext3 partition with 6144MB (sda1)

Create swap partition with 3072MB (sda2) 4. The remainder of the install routine is standard. 5. After installation and booting perform upgrade

yum –y update

6. You need also to Update Mysql due to this bug To do so, Add the following lines in a file by a name say remi.repo under /etc/yum.repos.d directory [remi] name=Les RPM de remi pour Enterprise Linux 5 - $basearch baseurl=http://rpms.famillecollet.com/el5.$basearch/ http://remi.collet.free.fr/rpms/el5.$basearch/ http://iut-info.univ-reims.fr/remirpms/el5.$basearch/ enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi failovermethod=priority [remi-test] name=Les RPM de remi en test pour Enterprise Linux $releasever - $basearch baseurl=http://rpms.famillecollet.com/test-el5.$basearch/ enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

Page 2: A Elastix Clustering

7. We need to import RPM-GPG-KEY-remi with following command: rpm --import http://syslogserver.googlecode.com/files/RPM-GPG-KEY-remi

8. Lunch the Update: yum --skip-broken --enablerepo remi update mysql

9. Create partition that will contain the replicated data

fdisk /dev/sda

Add a new partion (n)

Primary (p)

Partition number (3)

Press enter until returned to fdisk command prompt

NOTE: if your servers have two different sized hard drives it is imperative that the third partition is identical in size or they will never synchronize over DRBD. Do this by accepting the default first cylinder and then specifying the Last cylinder with the +sizeM option. Ex. +6048M. Make these same specifications on both servers.

Press “t” to change the partition system ID

Press “3” to choose partition number

Choose HEX 83 for type

Press “w” to save changes

RESTART SERVER

10. Format newly made partition mke2fs –j /dev/sda3

11. Now we delete the file system from the disk we just created dd if=/dev/zero bs=1M count=1 of=/dev/sda3; sync

12. Install DRBD, Heartbeat and dependencies with yum.

yum install heartbeat drbd83 kmod-drbd83

13. To ensure proper host name to IP resolution it is recommended that you manually update the /etc/hosts file to reflect proper host-to-IP mapping.

10.1.1.1 server1.drbd 10.1.1.2 server2.drbd 127.0.0.1 server1.drbd

Page 3: A Elastix Clustering

14. Edit /etc/drbd.conf on Server1.drbd. Modify this sample to meet your particular needs.

global { usage-count no; } resource r0 { protocol C; startup { wfc-timeout 0; degr-wfc-timeout 120; } disk { on-io-error detach; } # or panic, ... net { cram-hmac-alg "sha1"; shared-secret "Cent0Sru!3z"; } syncer { rate 10M; } on server1.drbd { device /dev/drbd0; disk /dev/sda3; address 192.168.0.1:7788; meta-disk internal; } on server2.drbd { device /dev/drbd0; disk /dev/sda3; address 192.168.0.2:7788; meta-disk internal; } }

15. replicate this config file (/etc/drbd.conf) to the second server

scp /etc/drbd.conf [email protected]:/etc/

16. Initialize the meta-data area on disk before starting drbd (! on both server!)

drbdadm create-md r0

17. start drbd on both nodes (service drbd start) service drbd start

18. Verify that both server are secondary cat /proc/drbd

19. As you can see, both nodes are secondary, which is normal. we need to decide which node

will act as a primary now (server1.drbd) : that will initiate the first 'full sync' between the two nodes : drbdadm -- --overwrite-data-of-peer primary r0

20. Lunch the command and wait until it‟s finish synchronizing watch -n 1 cat /proc/drbd

21. we can now format /dev/drbd0 and mount it on server1.drbd: mkfs.ext3 /dev/drbd0

mkdir /replica

mount /dev/drbd0 /replica

Page 4: A Elastix Clustering

22. Now we will copy all of the directories we want synchronized between the two servers to our new partition, remove the original directories and then create symbolic links to replace them on server1.drbd

cd /replica tar -zcvf etc-asterisk.tgz /etc/asterisk tar -zxvf etc-asterisk.tgz tar -zcvf var-lib-asterisk.tgz /var/lib/asterisk tar -zxvf var-lib-asterisk.tgz tar -zcvf usr-lib-asterisk.tgz /usr/lib/asterisk/ tar -zcvf var-www.tgz /var/www/ tar -zxvf usr-lib-asterisk.tgz tar -zcvf var-spool-asterisk.tgz /var/spool/asterisk/ tar -zxvf var-spool-asterisk.tgz tar -zcvf var-lib-mysql.tgz /var/lib/mysql/ tar -zxvf var-lib-mysql.tgz tar -zcvf var-log-asterisk.tgz /var/log/asterisk/ tar -zxvf var-log-asterisk.tgz tar -zxvf var-www.tgz rm -rf /etc/asterisk rm -rf /var/lib/asterisk rm -rf /usr/lib/asterisk/ rm -rf /var/spool/asterisk rm -rf /var/lib/mysql/ rm -rf /var/log/asterisk/ ln -s /replica/etc/asterisk/ /etc/asterisk ln -s /replica/var/lib/asterisk/ /var/lib/asterisk ln -s /replica/usr/lib/asterisk/ /usr/lib/asterisk ln -s /replica/var/spool/asterisk/ /var/spool/asterisk ln -s /replica/var/lib/mysql/ /var/lib/mysql ln -s /replica/var/log/asterisk/ /var/log/asterisk ln -s /replica/var/www /var/www

23. Restart mysql server on server1.drbd

service mysqld restart

24. now switch manually to the second server : [[email protected] /]# umount /replica ; drbdadm secondary r0 [[email protected] /]# mkdir /replica ; drbdadm primary r0 ; mount /dev/drbd0 /replica

[[email protected] /]# ls /replica/

Great, data was replicated ....

Page 5: A Elastix Clustering

25. Now we will remove and link on server2.drbd rm -rf /etc/asterisk rm -rf /var/lib/asterisk rm -rf /usr/lib/asterisk/ rm -rf /var/spool/asterisk rm -rf /var/lib/mysql/ rm -rf /var/log/asterisk/ ln -s /replica/etc/asterisk/ /etc/asterisk ln -s /replica/var/lib/asterisk/ /var/lib/asterisk ln -s /replica/usr/lib/asterisk/ /usr/lib/asterisk ln -s /replica/var/spool/asterisk/ /var/spool/asterisk ln -s /replica/var/lib/mysql/ /var/lib/mysql ln -s /replica/var/log/asterisk/ /var/log/asterisk ln -s /replica/var/www /var/www

26. Restart mysql server on server2.drbd

service mysqld restart

27. Now switch back to the first server : [[email protected] /]# umount /replica/ ; drbdadm secondary r0 [[email protected] /]# drbdadm primary r0 ; mount /dev/drbd0 /replica 28. Drbd is working ... let's be sure that it will always be started:

chkconfig drbd83 on

Page 6: A Elastix Clustering

Heartbeat Configuration 1. Remember to stop any boot up services on both servers that should be controlled by

heartbeat. These services will be controlled by heartbeat on the server that is in control. chkconfig asterisk off

chkconfig mysqld off

chkconfig httpd off

service mysqld stop

service asterisk stop

service httpd stop

2. Let's configure a simple /etc/ha.d/ha.cf file on server1.drbd :

debugfile /var/log/ha-debug logfile /var/log/ha-log logfacility local0 keepalive 2 deadtime 30 warntime 10 initdead 120 udpport 694 bcast eth1 auto_failback on node server1.drbd node server2.drbd

3. Create also the /etc/ha.d/authkeys on server1.drbd:

auth 1 1 sha1 MySecret

4. Change permissions on the /etc/ha.d/authkeys file on server1.drbd: chmod 600 /etc/ha.d/authkeys

5. Edit /etc/ha.d/haresources on server1.drbd: (It is one line!!!!!!! Formating is important) server1.drbd drbddisk::r0 Filesystem::/dev/drbd0::/replica::ext3 IPaddr::10.1.1.3/24/eth0/10.1.1.255 mysqld asterisk httpd

6. Start the heartbeat service on server1.drbd : service heartbeat start

7. Replicate now the ha.cf, authkeys and haresources to server2.drbd and start heartbeat [[email protected] ha.d]# scp /etc/ha.d/ha.cf /etc/ha.d/authkeys /etc/ha.d/haresources [email protected]:/etc/ha.d/ [[email protected] ha.d]# service heartbeat start

8. Configure heartbeat to initialize at boot on both server chkconfig --add heartbeat

9. Verify server1.drbd status (Primary/Secondary) cat /proc/drbd

Page 7: A Elastix Clustering

Credits

Telesoft Integrando Technologies

Redfone

References

http://wiki.centos.org/HowTos/Ha-Drbd http://support.red-fone.com/downloads/elastix/Elastix_HA_Cluster.pdf http://bugs.mysql.com/bug.php?id=31575 http://danielaliaman.com/blog/files/phonecube/cluster/AsteriskCluster.pdf

Originator: Amjad Jabali