开源高可用性HAHeartbeat服务

开源Heartbeat服务的安装:

准备材料:

heartbeat-libs-3.0.4-2.el6.x86_64.rpm   ldirectord-3.9.5-3.1.x86_64.rpm

heartbeat-3.0.4-2.el6.x86_64.rpm      heartbeat-devel-3.0.4-2.el6.x86_64.rpm

 

工作机制:

   Heartbeat最核心的两部分就是:心跳检测和资源监管。心跳检测一般是通过以太网交叉线来连接集群中的节点,作为心跳监控,其他还有串口线也可以用来做心跳监控,心跳监控通过集群主机之间相互发送报文来告诉对方自己运行的状态,如果在指定的时间内未收到对方发送报文,那么就认为对方失效,这时Heartbeat就启动资源接管模块将对方主机上运行的服务资源接管过来,从而保证服务运行的可靠性。


步骤:

#yum install -y mysql-server  #server50  server51上均安装mysql服务,后面双机集群就在上面运行此服务.

#/etc/init.d/mysqld   start   #初始化数库据服务;

#/etc/init.d/mysqld  stop    

#yum install -y      heartbeat-libs-3.0.4-2.el6.x86_64.rpm   heartbeat-3.0.4-2.el6.x86_64.rpm  heartbeat-3.0.4-2.el6.x86_64.rpm     ####server50  server51上均安装heartbeat服务.

#cd   /etc/ha.d/

#cp  authkeys  ha.cf  haresources /etc/ha.d/

# vim ha.cf

 29 logfile /var/log/ha-log    #指明heartbeat的日志存放位置

 34 logfacility     local0    #如果未定义上述的日志文件,那么日志信息将送往local0(对应的/var/log/messages里面)

 48 keepalive     2   #发送报文的间隔,默认为2s

 56 deadtime     30  #指定若备用节点唉30s内没有收到主节点的心跳信号,则立即接管主节点的服务资源。

 61 warntime  10     #指定心跳的延时时间为10s,当10s内备份节点不能收到主机诶到哪的心跳就会往日志中写入一个警告日志,当此时不会切换服务。

 71 initdead  60   #在某些系统上,系统启动或重启之后需要经过一段时间才能正常工作,该选项用于解决这种问题。

 76 udpport   694    #设置广播、单播通信使用的端口号

 80 baud    19200  #设置串行通信的波特率

 91 bcast   eth0  #单播 

 157 auto_failback on  #用来定义主节点回复后,是否回切

 211 node   server50.example.com  #定义为主节点

 212 node   server51.example.com  #定义为辅节点

 220 ping 172.25.45.250    #ping真机的网关,能ping通,代表主节点没坏。

 253 respawn hacluster/usr/lib64/heartbeat/ipfail  #ipfail 用于检测和处理网络故障,需要配合pingping_group来配合。

 259 apiauth ipfail gid=haclient uid=hacluster           #指定对客户端api的访问控制,这里指定了有权限访问的/ipfail的用户和用户组。

注意:我在配置时,忘了更改253行的lib64,因为我的电脑是64位的,所以一直报错,错误提示为:”ERROR:Client child command [/usr/lib/heartbeat/ipfail] is not executable”ipfail这个文件是不可执行的,因为我64位系统不能执行32位的文件,,记住这个错误哈!

#vimharesources

150  server50.example.comIPaddr::172.25.45.100/24/eth0  mysqld

#vim authkeys

23 auth 1    #密码为明文

24 1 crc

#chmod 600  authkeys   记住:一定要更改认证文件的权限,否则heartbeat服务无法起来。

#scp ha.cf haresources authkeys root@172.25.45.51:/etc/ha.d/

#/etc/init.d/heartbeat start     #server50上开启heartbeat服务;

# /etc/init.d/heartbeat start     #server51上开启heartbeat服务;

#tail -f /var/log/messages  可以查看相关启动日志;

共享远程存储,使得heartbeat+远程存储+mysql服务结合起来;

首先开一个虚拟机提供远程存储,将存储快共享给指定ip的主机;

Server3: #yum install -y scsi-target-utils.x86_64

#vim /etc/tgt/targets.conf

 38 <targetiqn.2016-06.com.example:server.disk>

 39    backing-store /dev/vdc

 40    initiator-address 172.25.45.50

 41    initiator-address 172.25.45.51

 42 </target>

#/etc/init.d/tgtd restart

 

配置双机集群:server50   server51

#yum install -yiscsi-initiator-utils.x86_64

#iscsiadm -t st -mdiscovery -p 172.25.45.22

#iscsiadm -m node -l

#fdisk /dev/sda  #

#mkfs.ext4 /dev/sda1

#mount /dev/sda1 /mnt

#cp -rp /var/lib/mysql/*  /mnt

#chown mysql.mysql  /mnt

#umount /mnt

#vim /etc/ha.d/haresources

150 server50.example.com      IPaddr::172.25.45.100/24/eth0Filesystem::/dev/sda1::/var/lib/mysql::ext4  mysqld

#/etc/init.d/heartbeat stop

# /etc/init.d/heartbeat start

注意:标红色部分均需要在集群的两台主机上进行操作,,黑色部分之用在其中一台主机(server50)进行操作就好了,,强调一点,就是server50做完分区过后,server51一定要同步分区表:partprobe!

 

验证:server50df查看挂在情况,可以看到远程存储块挂载在/var/lib/mysql,可以直接打开mysql,还可以命令ip addrshow可以查看虚拟ip地址在哪台主机上,就说明服务运行在哪台主机.

 

 

作磁盘阵列:使两个虚拟机都分4G虚拟硬盘;相当于做一个RAID1阵列,数据块同步,使得挂载时,都能看到另外一个虚拟机的操作,刚好也符合heartbeat的工作机制;

下载好:drbd-8.4.3.tar.gz

步骤:

#tar zxf drbd-8.4.3.tar.gz

#yum install -y gcc

#yum install -y flex

#./configure --with-km --enable-spec

#cd drbd-8.4.3

#yum install -y kernel-devel

# cp drbd-8.4.3.tar.gz /root/rpmbuild/SOURCES/

#rpmbuild -bb drbd.spec  #将源码.spec文件编译成二进制文件(-bb)

# rpmbuild drbd-km.spec  #同上

#cd /root/rpmbuild/RPMS/x86_64/

#rpm -ivh *   #安装里面所有rpm包

#vim /etc/drbd.d/example.res

#scp example.res root@172.25.45.50:/etc/drbd.d/

#drbdadm create-md  sqldata      

#/etc/init.d/drbd start

#cat /proc/drbd

#drbdadm primery sqldata --force

# mkfs.ext4 /dev/drbd1

#mount /dev/drbd1  /mnt

#cp -rp /var/lib/mysql/*  /mnt

#chown mysql.mysql /mnt

#umount /mnt

#drbdadm secondary sqldata

#vim /etc/ha.d/haresources

     150   server50.example.com IPaddr::172.25.45.100/24/eth0drbddisk::sqldata Filesystem::/dev/drbd1::/var/lib/mysql   ::ext4  mysqld

#scp -r/etc/ha.d/haresources  root@172.25.45.50:/etc/dha.d/

#/etc/init.d/heartbeat start

 

Server51主机:

#cd /root/

#rpm -ivh drbd-*

#rbdadm create-md sqldata

# /etc/init.d/drbd start

#cat /proc/drbd

#/etc/init.d/heartbeat start

 

##df查看/dev/drbd1 自动挂载在/var/lib/mysql上面,且能够打开mysql