环境:
master
eth0 192.168.253.140
eth1 192.168.254.140
slave
eth0 192.168.253.141
eth1 192.168.254.141
--------------------------------------
在master和savle安装配置步骤一样。
1)安装DRBD
[root@master ~]# mkdir /soft [root@master ~]# cd /soft [root@master soft]# yum -y install gcc kernel-devel kernel-headers flex perl [root@master soft]# tar fzvx drbd-8.4.4.tar.gz [root@master soft]# cd drbd-8.4.4 [root@master drbd-8.4.4]# ./configure --prefix=/usr/local/drbd-8.4 --with-km [root@master drbd-8.4.4]# make KDIR=/usr/src/kernels/2.6.32-358.el6.x86_64/ [root@master drbd-8.4.4]# make install [root@master drbd-8.4.4# mkdir -p /usr/local/drbd-8.4/var/run/drbd [root@master drbd-8.4.4]# cp /usr/local/drbd-8.4/etc/rc.d/init.d/drbd /etc/init.d/ [root@master drbd-8.4.4]# chkconfig --add drbd [root@master drbd-8.4.4]# chkconfig drbd on [root@master drbd-8.4.4]# cd drbd [root@master drbd]# make clean [root@master drbd]# make KDIR=/usr/src/kernels/2.6.32-358.el6.x86_64/ [root@master drbd]# cp drbd.ko /lib/modules/2.6.32-358.el6.x86_64/kernel/lib/ [root@master drbd]# depmod
2)配置DRBD
[root@master drbd]# cd /usr/local/drbd-8.4/etc/drbd.d/ [root@master drbd.d]# cp global_common.conf global_common.conf.bak [root@master drbd.d]# vi global_common.conf global { usage-count no; } common { handlers { pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f"; pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f"; local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f"; fence-peer "/usr/lib/drbd/crm-fence-peer.sh"; split-brain "/usr/lib/drbd/notify-split-brain.sh root"; out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root"; } startup { wfc-timeout 30; degr-wfc-timeout 30; outdated-wfc-timeout 30; } disk { resync-rate 30M; on-io-error detach; fencing resource-only; } net { protocol C; cram-hmac-alg sha1; shared-secret "mysql-ha"; csums-alg sha1; verify-alg crc32c; } } #创建r0资源 [root@master drbd.d]# vi r0.res resource r0{ on master{ device /dev/drbd0; #逻辑设备的路径 disk /dev/sdb1; #物理设备 address 192.168.254.140:7788; meta-disk internal; } on slave{ device /dev/drbd0; disk /dev/sb1; address 192.168.254.141:7788; meta-disk internal; } }
3)创建设置DRBD
#创建 drbd resource [root@master drbd.d]# modprobe drbd [root@master drbd.d]# drbdadm create-md r0 [root@master drbd.d]# drbdadm up r0 #设置Primary [在master节点操作] [root@master drbd.d]# drbdadm primary --force r0 #创建DRBD文件系统 [在Mysql主节点的master上执行] [root@master drbd.d]# mkfs.ext4 /dev/drbd0 [root@master drbd.d]# mount /dev/drbd0 /drbd
4)DRBD同步测试
#首先,在主服务器上先将设备卸载,同时将主服务器降为备用服务器: [root@master drbd]# mkdir -p /drbd/mynode1 [root@master drbd]# cd / [root@master /]# umount /dev/drbd0 [root@master /]# drbdadm secondary r0 #然后,登录备用服务器,将备用服务器升为主服务器,同时挂载drbd0设备到 /drbd目录: [root@slave drbd]# drbdadm up r0 [root@slave drbd]# drbdadm primary r0 [root@slave drbd]# mount /dev/drbd0 /drbd/ [root@slave drbd]# cd /drbd/ [root@slave drbd]# ll drwx------ 2 root root 16384 1月 29 10:15 lost+found drwxr-xr-x 2 root root 4096 1月 29 10:16 mynode1
――安装heartbeat
1)添加用户和组
[root@master soft]# groupadd haclient [root@master soft]# useradd -g haclient -M -s /sbin/nologin hacluster
2)安装依赖包
[root@master soft]# yum install libtool automake autoconf glib2-devel libxml2-devel bzip2-devel libtool-ltdl-devel libxslt-devel docbook* -y
3)安装glue
[root@master soft]# tar jfvx glue-1.0.9.tar.bz2 [root@master soft]# cd Reusable-Cluster-Components-glue--glue-1.0.9/ [root@master Reusable-Cluster-Components-glue--glue-1.0.9]# ./autogen.sh [root@master Reusable-Cluster-Components-glue--glue-1.0.9]# ./configure LIBS='/lib64/libuuid.so.1' [root@master Reusable-Cluster-Components-glue--glue-1.0.9]# make && mek install
4)安装agents
[root@master Reusable-Cluster-Components-glue--glue-1.0.9]# cd .. [root@master soft]# tar zfvx ClusterLabs-resource-agents-v3.9.2-0-ge261943.tar.gz [root@master soft]# cd ClusterLabs-resource-agents-b735277/ [root@master ClusterLabs-resource-agents-b735277]# ./autogen.sh [root@master ClusterLabs-resource-agents-b735277]# ./configure LIBS='/lib64/libuuid.so.1' [root@master ClusterLabs-resource-agents-b735277]# make && make install
5)安装heartbeat
[root@master soft]# tar jfvx heartbeat-3.0.5.tar.bz2 [root@master soft]# cd Heartbeat-3-0-7e3a82377fa8/ [root@master Heartbeat-3-0-7e3a82377fa8]# ./bootstrap [root@master Heartbeat-3-0-7e3a82377fa8]# ./ConfigureMe configure LIBS='/lib64/libuuid.so.1' [root@master Heartbeat-3-0-7e3a82377fa8]# make && mek install
6)配置heartbeat
[root@master Heartbeat-3-0-7e3a82377fa8]# cd doc [root@master doc]# cp authkeys haresources ha.cf /etc/ha.d/ [root@master doc]# cp /usr/etc/ha.d/shellfuncs /etc/ha.d/ [root@master doc]# rm -rf /usr/etc/ha.d [root@master doc]# vi /etc/ha.d/ha.cf #开启日志 logfile /var/log/ha-log #设置syslog()/logger 设备 logfacility local0 #心跳发送时间间隔/秒 keepalive 2 #15 秒没有收到主机心跳、确认主机故障 deadtime 15 #警告次数 warntime 5 #守护进程启动30 后启动服务资源 initdead 30 #监听端口 udpport 694 #另一个节点IP、通过检测来保证心跳的可用性 ucast eth0 192.168.1.11 ucast eth1 192.168.2.11 #两个节点的名字[uname -n 获取] node master node slave #开启DPOD respawn hacluster /usr/lib64/heartbeat/ipfail respawn hacluster /usr/lib64/heartbeat/dopd apiauth ipfail gid=haclient uid=hacluster apiauth dopd gid=haclient uid=hacluster [root@master doc]# vi /etc/ha.d/authkeys auth 1 1 sha1 My_Passwd! [root@master doc]# chmod 600 /etc/ha.d/authkeys [root@master doc]# vi /etc/ha.d/haresources master drbddisk::r0 Filesystem::/dev/drbd0::/raid10::ext4 nfs IPaddr::192.168.254.200/24/eth1 [root@master doc]# cd /soft/drbd-8.4.4/scripts/ [root@master scripts]# cp drbddisk /etc/ha.d/resource.d/ [root@master scripts]# cp /etc/init.d/nfs /etc/ha.d/resource.d/ [root@master scripts]# cp /etc/init.d/rpcbind /etc/ha.d/resource.d/
7)启动shellfuncs
[root@master scripts]# chkconfig --add heartbeat [root@master scripts]# chkconfig heartbeat on [root@master scripts]# /etc/init.d/heartbeat start #输入以下信息,说明启动成功 [root@master scripts]# ps -ef |grep heartbeat root 7302 1 0 13:15 ? 00:00:05 heartbeat: master control process root 7305 7302 0 13:15 ? 00:00:00 heartbeat: FIFO reader root 7306 7302 0 13:15 ? 00:00:01 heartbeat: write: bcast eth0 root 7307 7302 0 13:15 ? 00:00:00 heartbeat: read: bcast eth0 root 7308 7302 0 13:15 ? 00:00:01 heartbeat: write: bcast eth1 root 7309 7302 0 13:15 ? 00:00:00 heartbeat: read: bcast eth1 root 7310 7302 0 13:15 ? 00:00:00 heartbeat: write: ucast eth0 root 7311 7302 0 13:15 ? 00:00:00 heartbeat: read: ucast eth0 root 7312 7302 0 13:15 ? 00:00:00 heartbeat: write: ucast eth1 root 7313 7302 0 13:15 ? 00:00:00 heartbeat: read: ucast eth1 root 7314 7302 0 13:16 ? 00:00:01 heartbeat: write: ping 192.168.254.141 root 7315 7302 0 13:16 ? 00:00:00 heartbeat: read: ping 192.168.254.141 500 7335 7302 0 13:16 ? 00:00:00 /usr/lib64/heartbeat/ipfail 500 7336 7302 0 13:16 ? 00:00:00 /usr/lib64/heartbeat/dopd root 8311 7214 0 14:13 pts/0 00:00:00 grep heartbeat
――安装nfs
1)安装nfs
[root@master ~]# yum -y install nfs-utils rpcbind
2)配置nfs实例
[root@master ~]# vi /etc/exports /drbd/mynode1 192.168.254.0/24(rw,no_root_squash,no_all_squash,sync)
3)启动nfs [不需要设置开机启动]
[root@master ~]# exportfs -r [root@master ~]# service rpcbind restart [root@master ~]# service nfs restart
――客户端挂载
[root@Client ~]# mount -t nfs 192.168.254.200:/drbd/mynode1 /nfs/
――测试heartbeat故障转移
1)在master停止heartbeat
[root@master ~]# /etc/init.d/heartbeat stop Stopping High-Availability services: 已终止
2)在slave上面查看日志是否切换成功
[root@slave ~]# tail -f /var/log/ha-log Jan 29 14:42:24 slave heartbeat: [7263]: info: Local status now set to: 'active' Jan 29 14:42:24 slave heartbeat: [7263]: info: Starting child client "/usr/lib64/heartbeat/ipfail" (500,500) Jan 29 14:42:24 slave heartbeat: [7263]: info: Starting child client "/usr/lib64/heartbeat/dopd" (500,500) Jan 29 14:42:24 slave heartbeat: [7294]: info: Starting "/usr/lib64/heartbeat/dopd" as uid 500 gid 500 (pid 7294) Jan 29 14:42:24 slave heartbeat: [7293]: info: Starting "/usr/lib64/heartbeat/ipfail" as uid 500 gid 500 (pid 7293) Jan 29 14:42:25 slave heartbeat: [7263]: info: remote resource transition completed. Jan 29 14:42:25 slave heartbeat: [7263]: info: remote resource transition completed. Jan 29 14:42:25 slave heartbeat: [7263]: info: Local Resource acquisition completed. (none) Jan 29 14:42:25 slave heartbeat: [7263]: info: Initial resource acquisition complete (T_RESOURCES(them)) Jan 29 14:42:25 slave heartbeat: [7263]: info: Link master:eth0 up. Jan 29 14:42:30 slave ipfail: [7293]: info: Link Status update: Link master/eth0 now has status up Jan 29 14:42:31 slave ipfail: [7293]: info: Ping node count is balanced. Jan 29 14:42:54 slave heartbeat: [7263]: info: Received shutdown notice from 'master'. Jan 29 14:42:54 slave heartbeat: [7263]: info: Resources being acquired from master. Jan 29 14:42:54 slave heartbeat: [7298]: info: acquire all HA resources (standby). Jan 29 14:42:54 slave heartbeat: [7299]: info: No local resources [/usr/share/heartbeat/ResourceManager listkeys slave] to acquire. ResourceManager[7324]: 2015/01/29_14:42:54 info: Acquiring resource group: master drbddisk::r0 Filesystem::/dev/drbd0::/drbd::ext4 rpcbind nfs IPaddr::192.168.254.200/24/eth1 ResourceManager[7324]: 2015/01/29_14:42:54 info: Running /etc/ha.d/resource.d/drbddisk r0 start Filesystem[7393]: 2015/01/29_14:42:54 INFO: Resource is stopped #说明成功 ResourceManager[7324]: 2015/01/29_14:42:54 info: Running /etc/ha.d/resource.d/Filesystem /dev/drbd0 /drbd ext4 start Filesystem[7473]: 2015/01/29_14:42:54 INFO: Running start for /dev/drbd0 on /drbd Filesystem[7465]: 2015/01/29_14:42:54 INFO: Success ResourceManager[7324]: 2015/01/29_14:42:54 info: Running /etc/ha.d/resource.d/rpcbind start ResourceManager[7324]: 2015/01/29_14:42:55 info: Running /etc/ha.d/resource.d/nfs start IPaddr[7716]: 2015/01/29_14:43:05 INFO: Resource is stopped ResourceManager[7324]: 2015/01/29_14:43:05 info: Running /etc/ha.d/resource.d/IPaddr 192.168.254.200/24/eth1 start IPaddr[7801]: 2015/01/29_14:43:05 INFO: Using calculated netmask for 192.168.254.200: 255.255.255.0 #获取IP IPaddr[7801]: 2015/01/29_14:43:05 INFO: eval ifconfig eth1:0 192.168.254.200 netmask 255.255.255.0 broadcast 192.168.254.255 IPaddr[7775]: 2015/01/29_14:43:05 INFO: Success Jan 29 14:43:05 slave heartbeat: [7298]: info: all HA resource acquisition completed (standby). Jan 29 14:43:05 slave heartbeat: [7263]: info: Standby resource acquisition done [all]. harc[7888]: 2015/01/29_14:43:05 info: Running /usr/etc/ha.d//rc.d/status status mach_down[7905]: 2015/01/29_14:43:05 info: Taking over resource group drbddisk::r0 ResourceManager[7932]: 2015/01/29_14:43:05 info: Acquiring resource group: master drbddisk::r0 Filesystem::/dev/drbd0::/drbd::ext4 rpcbind nfs IPaddr::192.168.254.200/24/eth1 Filesystem[7974]: 2015/01/29_14:43:05 INFO: Running OK IPaddr[8085]: 2015/01/29_14:43:06 INFO: Running OK mach_down[7905]: 2015/01/29_14:43:06 info: /usr/share/heartbeat/mach_down: nice_failback: foreign resources acquired mach_down[7905]: 2015/01/29_14:43:06 info: mach_down takeover complete for node master.