码迷,mamicode.com
首页 > 其他好文 > 详细

高可用集群之heartbeat

时间:2016-08-09 16:22:14      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:解决方案   官方网站   ip地址   开发者   可靠性   

高可用集群的基本概念

一、什么是高可用集群:

所谓高可用集群就是在其出现故障时,可以把业务自动转移到其他主机上并让服务正常运行的集群架构。

二、heartbeat的概念

Linux-HA的全称是High-Availability Linux,它是一个开源项目,这个开源项目的目标是:通过社区开发者的共同努力,提供一个增强LInux可靠性(reliability)、可用性(availability)和可服务性(serviceability)(RAS)的群集解决方案。其中heartbeat就是Linux-HA项目中的一个组件,也是目前开源HA项目中比较成功的一个例子,它提供了所有HA软件所需要的基本功能,比如心跳检测和资源接管、监测集群中的系统服务、在集群中的节点间转移共享IP地址的所有者等,自1999年开始到现在,Heartbeat在行业内得到了广泛的使用,也发行了很多的版本,可以从linux-HA的官方网站www.linux-ha.org下载到Heartbeat的最新版本。

三、高可用集群的构架层次

1、后端主机层:这一层主要是正在运行在物理主机上的服务。

2、Message Layer:信息传递层,主要传递心跳信息。

3、Cluster Resources Manager(CRM):集群资源管理器层,这一层是心跳信息传递层管理器。用于管理信息的传递和收集。

4、Local Resources Manager(LRM):本地资源管理器,用于对于收集到的心跳信息进行资源决策调整,是否转移服务等等。

5、Resource Agent(RA):资源代理层,这一层主要是具体启动或停止具体资源的脚本。遵循{start|stop|restart|status}服务脚本使用格式。

四、HA集群的工作模式

1、A/P:two node:主被模型,要借助于ping node工作

2、N-M:N个节点M个服务,N>M,活动节点为N,备用节点为N-M

3、N-N:N个节点N个服务,N节点都有服务,如果一个坏了,会有一个节点运行多个服务。

4、A/A:双主模型,两个节点都是活动的,两个节点运行两个不同的服务。也可以是同一个服务,比如ipvs,前端基于DNS轮训。

五、配置Heartbeat集群

1、基于Heartbeat V1版harousce配置httpd高可用

技术分享

#安装前准备:
1、ssh多节点互信
[root@node1 ~]# ssh-keygen -t rsa
[root@node1 ~]# ssh-copy-id -i root@node2
2、节点时间一致检查
[root@node1 ~]# date ;ssh node2 ‘date‘
2016年 08月 09日 星期二 10:57:30 CST
2016年 08月 09日 星期二 10:57:30 CST
3、多节点名称解析
[root@node1 ~]# uname -n;ssh node2 ‘uname -n‘
node1.bjwf.com
node2.bjwf.com
4、安装heartbeat
[root@node1 ~]# yum install perl-TimeDate PyXML libnet net-snmp-libs libtool-ltdl -y
[root@node1 ~]# rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm 
                heartbeat-stonith-2.1.4-12.el6.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:heartbeat-pils         ########################################### [ 33%]
   2:heartbeat-stonith      ########################################### [ 67%]
   3:heartbeat              ########################################### [100%]
#另一个节点一样的方法
5、准备Heartbeat的配置文件
[root@node1 ~]# cd /usr/share/doc/heartbeat-2.1.4/
[root@node1 heartbeat-2.1.4]# cp authkeys ha.cf  haresources /etc/ha.d/
[root@node1 heartbeat-2.1.4]# cd /etc/ha.d/
[root@node1 ha.d]# vim authkeys #配置节点信息通信密码
auth 2
2 sha1 woleigequ@xyoaq`!;q
[root@node1 ha.d]# chmod 600 authkeys
[root@node1 ha.d]# vim ha.cf
logfile /var/log/ha-log   #定义日志格式
keepalive 2 #指定心跳使用间隔时间为2秒(即每两秒钟发送一次广播)                      
deadtime 30  #指定备用节点在30s内没有收到主节点的心跳信息号,则立即接管主节点的服务资源
warntime 10  #指定心跳延迟的时间为10s,当10s钟内备份节点不能接收到主节点的心跳信号时,就会
往日志中写入一个警告日志,但此时不会切换服务。
udpport 694               #监听端口
mcast eth0 225.7.1.1 694 1 0     #节点多播方式传递心跳信息
auto_failback on  #用来定义主节点恢复后,是否将服务自动切回
node    node1.bjwf.com    #Heartbeat集群节点
node    node2.bjwf.com
ping 192.168.120.254     #ping节点仲裁
compression    bz2
compression_threshold 2
[root@node1 ha.d]# vi haresources
node1 192.168.120.10/24/eth0 httpd   #以node1为dc,定义集群VIP及资源httpd服务
[root@node1 ha.d]# scp authkeys ha.cf haresources node2:/etc/ha.d
authkeys             100%     659     0.6KB/s   00:00    
ha.cf                100%      10KB  10.4KB/s   00:00    
haresources          100%    5940     5.8KB/s   00:00
6、安装httpd服务
[root@node1 ha.d]# yum -y install httpd
[root@node1 ha.d]# echo "node1.bjwf.com" > /var/www/html/index.html 
[root@node1 ha.d]# chkconfig httpd off
[root@node1 ha.d]# service httpd stop
停止 httpd:                                               [确定]
[root@node2 ha.d]# yum -y install httpd
[root@node2 ha.d]# echo "node2.bjwf.com" > /var/www/html/index.html 
[root@node2 ha.d]# chkconfig httpd off
[root@node2 ha.d]# service httpd stop
停止 httpd:                                               [确定]
7、启动Heartbeat服务,并测试
[root@node1 ha.d]# service heartbeat start;ssh node2 ‘service heartbeat start‘
logd is already running
Starting High-Availability services: 
2016/08/09_11:55:15 INFO:  Resource is stopped
Done.

logd is already running
Starting High-Availability services: 
2016/08/09_11:55:15 INFO:  Resource is stopped
Done.

[root@node1 ha.d]# netstat -tunlp;ssh node2 ‘netstat -tunlp‘
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1331/sshd           
tcp        0      0 :::80                       :::*                        LISTEN      2292/httpd          
tcp        0      0 :::22                       :::*                        LISTEN      1331/sshd           
udp        0      0 0.0.0.0:36099               0.0.0.0:*                               1900/heartbeat: wri 
udp        0      0 225.7.1.1:694               0.0.0.0:*                               1900/heartbeat: wri 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1331/sshd           
tcp        0      0 :::80                       :::*                        LISTEN      1642/httpd          
tcp        0      0 :::22                       :::*                        LISTEN      1331/sshd           
udp        0      0 0.0.0.0:45834               0.0.0.0:*                               1886/heartbeat: wri 
udp        0      0 225.7.1.1:694               0.0.0.0:*                               1886/heartbeat: wri 
[root@node3 ~]# curl http://192.168.120.10 #在node3上测试
node1.bjwf.com
[root@node1 ha.d]# ifconfig    #查看VIP是否在node1上
eth0      Link encap:Ethernet  HWaddr 00:0C:29:20:EC:07  
          inet addr:192.168.120.100  Bcast:192.168.120.255  Mask:255.255.255.0

eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:20:EC:07  
          inet addr:192.168.120.10  Bcast:192.168.120.255  Mask:255.255.255.0
[root@node1 ha.d]# service heartbeat stop   #停掉node1,查看是否会自动转移
Stopping High-Availability services: 
Done.
[root@node3 ~]# curl http://192.168.120.10
node2.bjwf.com      #服务已经转移
[root@node2 ~]# ifconfig     #VIP已经转移
eth0      Link encap:Ethernet  HWaddr 00:0C:29:25:07:08  
          inet addr:192.168.120.101  Bcast:192.168.120.255  Mask:255.255.255.0

eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:25:07:08  
          inet addr:192.168.120.10  Bcast:192.168.120.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
8、在Node3上安装nfs服务,实现节点间自动切换
[root@node3 ~]# yum -y install nfs-utils   #安装服务
[root@node3 ~]# vim /etc/exports #修改配置文件
/data/html      192.168.120.0/24(rw,no_root_squash,async)
[root@node3 ~]# echo "NFS server" > /data/html/index.html
[root@node3 ~]# service rpcbind start   #nfs依赖这个服务
[root@node3 ~]# service nfs start       #启动nfs
[root@node1 ~]# showmount -e 192.168.120.102;ssh node2 ‘showmount -e 192.168.120.102‘
Export list for 192.168.120.102:
/data/html 192.168.120.0/24            #node1上测试
Export list for 192.168.120.102:
/data/html 192.168.120.0/24            #node2上测试 
[root@node1 ~]# mount -t nfs 192.168.120.102:/data/html/ /var/www/html
[root@node1 ~]# curl http://192.168.120.100 
NFS server
[root@node2 ~]# mount -t nfs 192.168.120.102:/data/html/ /var/www/html
[root@node2 ~]# curl http://192.168.120.101
NFS server
#修改node1和node2的haresources配置文件,是Heartbeat能自动挂载目录
[root@node1 ~]# vim /etc/ha.d/haresources
node1.bjwf.com 192.168.120.10/24/eth0 Filesystem::192.168.120.102:/data/html::/var/www/html::nfs httpd
[root@node1 ~]# scp /etc/ha.d/haresources node2:/etc/ha.d/   #改完后传给node2一份
haresources      100% 6008     5.9KB/s   00:00
停止heartbeat,httpd服务并卸载nfs共享目录之后在重启Heartbeat服务
[root@node1 ~]# umount /var/www/html;ssh node2 ‘umount /var/www/html’
[root@node1 ~]# service httpd stop;ssh node2 ‘service httpd stop‘
[root@node1 ~]# service heartbeat start;ssh node2 ‘service heartbeat start‘
Starting High-Availability services: 
2016/08/09_14:42:59 INFO:  Resource is stopped
Done.

Starting High-Availability services: 
2016/08/09_14:42:59 INFO:  Resource is stopped
Done.                            #重启Heartbeat服务
[root@node1 ~]# ifconfig         #节点一上查看资源情况
eth0      Link encap:Ethernet  HWaddr 00:0C:29:20:EC:07  
          inet addr:192.168.120.100  Bcast:192.168.120.255  Mask:255.255.255.0
eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:20:EC:07  
          inet addr:192.168.120.10  Bcast:192.168.120.255  Mask:255.255.255.0
[root@node1 ~]# mount |grep html    #文件系统已经挂载
192.168.120.102:/data/html on /var/www/html type nfs (rw,vers=4,addr=192.168.120.102,clientaddr=192.168.120.100)
[root@node1 ~]# curl http://192.168.120.10  
NFS server          #服务也正常
[root@node1 ~]# service heartbeat stop   #关掉节点1,查看节点2是否已经切换
Stopping High-Availability services: 
Done.
[root@node2 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:25:07:08  
          inet addr:192.168.120.101  Bcast:192.168.120.255  Mask:255.255.255.0
eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:25:07:08  
          inet addr:192.168.120.10  Bcast:192.168.120.255  Mask:255.255.255.0
[root@node2 ~]# mount |grep html
192.168.120.102:/data/html on /var/www/html type nfs (rw,vers=4,addr=192.168.120.102,clientaddr=192.168.120.101)
[root@node2 ~]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1331/sshd           
tcp        0      0 0.0.0.0:48665               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 :::80                       :::*                        LISTEN      3370/httpd          
tcp        0      0 :::22                       :::*                        LISTEN      1331/sshd           
tcp        0      0 :::43097                    :::*                        LISTEN      -                   
[root@node2 ~]# curl http://192.168.120.10
NFS server
#资源已经正常切换至节点2

2、基于Heartbeat V2版配置httpd高可用(crm、heartbeat-gui工具)

技术分享

1、关闭Heartbeat服务,并修改配置
[root@node1 ~]# service heartbeat stop
[root@node2 ~]# service heartbeat stop
[root@node1 ha.d]# vim ha.cf 
crm    on
[root@node1 ha.d]# scp ha.cf node2:/etc/ha.d
ha.cf                  100%   10KB  10.4KB/s   00:00
2、安装Heartbeat-gui工具
[root@node1 ~]# yum -y install pygtk2-libglade
[root@node1 heartbeat2]# rpm -ivh heartbeat-gui-2.1.4-12.el6.x86_64.rpm 
[root@node2 ~]# yum -y install pygtk2-libglade
[root@node2 heartbeat2]# rpm -ivh heartbeat-gui-2.1.4-12.el6.x86_64.rpm 
3、启动Heartbeat服务
[root@node1 heartbeat2]# passwd hacluster
[root@node1 heartbeat2]# service heartbeat start
[root@node1 heartbeat2]# yum -y install xorg-x11-xauth
[root@node2 heartbeat2]# passwd hacluster
[root@node2 heartbeat2]# service heartbeat start
[root@node2 heartbeat2]# yum -y install xorg-x11-xauth

本文出自 “把酒问苍天” 博客,请务必保留此出处http://79076431.blog.51cto.com/8977042/1836096

高可用集群之heartbeat

标签:解决方案   官方网站   ip地址   开发者   可靠性   

原文地址:http://79076431.blog.51cto.com/8977042/1836096

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!