Hearbeat高可用
来源:互联网 发布:hyperion 软件 编辑:程序博客网 时间:2024/06/06 17:48
Hearbeat高可用
Hearbeat,心跳的意思,这里是Linux-HA
工程的一个组成部分,它实现了一个高可用集群系统。心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里,由
heartbeat 模块实现了这两个功能。
heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务
官方网站:http://www.linux-ha.org/wiki/Download
Heartbeat-3.X版本以后被分为了4个模块,这些安装包都可以从官网:
http://www.linux-ha.org/wiki/Downloads下载得到:
目前的这些版本是:
ClusterLabs-resource-agents-v3.9.2-0-ge261943.tar.gz //集群实验资源代理(光盘)Heartbeat-3-0-7e3a82377fa8.tar.bz2 //心跳主程序包pacemaker-1.1.9-1512.el6.src.rpm //起搏器(光盘镜像)Reusable-Cluster-Components-glue--glue-1.0.9.tar.bz2 //可重复使用的群集组件(光盘)
Hearbeat端口和INNA
TCP/UDP的694号端口【端口都是有INNA规划的】
grep 694 /etc/servicesha-cluster 694/tcp # Heartbeat HA-clusterha-cluster 694/udp # Heartbeat HA-cluster
拓展:
IANA 就是指(Internet Assigned Numbers Authority 互联网数字分配机构) ,Internet 号分配的机构。负责对 IP 地址分配规划以及对 TCP/UDP 公共服务的端口定义。(谁管理着 TCP/UDP 公共服务的端口定义)
IANA是全球最早的Internet机构之一,其历史可以追溯到1970年。今天,IANA被负责协调IANA责任范围的非营利机构ICANN(Internet Corporation for Assigned Names and Numbers,互联网名称与数字地址分配机构)掌管。IANA还可以查询全球各类顶级域名的具体信息,无论知名还是不知名的域名后缀,你都可以找到它的详细信息以及管理机构所在国家、地址信息、运营公司、注册局网址等。
IANA 的所有仸务可以大致分为三个类型:
一、域名。IANA 管理 DNS 域名根和.int,.arpa 域名以及 IDN(国际化域名)资源。
二、数字资源。IANA 协调全球 IP 和 AS(自治系统)号并将它们提供给各区域 Internet 注册机构。
注: AS 自治系统号,是 BGP(国家与国家) 路由协议中的号。
三、协议分配。IANA 与各标准化组织一同管理协议编号系统。
官网:http://www.iana.org/
Heartbeat集群环境
使用Heartbeat实现web服务器的高可用
三台服务器,加上真机顶替一台客户端服务器
Xuegod63.cn web主
Xuegod64.cn web从
Xuegod62.cn 存储池
拓扑图如下
(图和讲课环境有点差别,XueGod62在讲课环境中使用的XueGod61.cn)
环境准备
Xuegod61,63,64,主机名对应,永久生效,且能相互解析(hosts文件),清空防火墙,关闭selinux
# cat /etc/hosts192.168.1.63 xuegod63.cn192.168.1.64 xuegod64.cn192.168.1.61 xuegod61.cn # getenforceDisabled # iptables -F && /etc/init.d/iptables save # cat /etc/sysconfig/networkNETWORKING=yesHOSTNAME=xuegod61.cn 或xuegod63.cn 或xuegod64.cn # 不同的机器不同的值,首次配置完成重启
设备
GATEWAY=192.168.1.254
NTPSERVERARGS=iburst
配置存储池
这里我们使用的XueGod61作为我们的存储池,配置我们NFS共享资源
[root@xuegod61 ~]# yum install -y nfs-utils [root@xuegod61 ~]# mkdir /wwwdir[root@xuegod61 ~]# echo "HeartBeat HTTP Server Test" > /wwwdir/index.html[root@xuegod61 ~]# vim /etc/exports /wwwdir 192.168.1.0/24(rw)[root@xuegod61 ~]# chmod 777 -R /wwwdir/[root@xuegod61 ~]# service nfs restart[root@xuegod61 ~]# chkconfig nfs on[root@xuegod61 ~]# showmount –eExport list for xuegod61.cn:/wwwdir 192.168.1.0/24主Web服务器[root@xuegod63 ~]# yum install -y httpd[root@xuegod63 ~]# showmount -e xuegod61.cnExport list for xuegod61.cn:/wwwdir 192.168.1.0/24[root@xuegod63 ~]# mount -t nfs 192.168.1.61:/wwwdir /var/www/html/[root@xuegod63 ~]# service httpd restart[root@xuegod63 ~]# curl 127.1HeartBeat HTTP Server Test[root@xuegod63 ~]# umount /var/www/html/ //卸载资源:后期这些资源通过heartbeat直接加载[root@xuegod63 ~]# service httpd stop[root@xuegod63 ~]# chkconfig httpd off从Web服务器[root@xuegod64 ~]# yum install -y httpd[root@xuegod64 ~]# showmount -e xuegod61.cnExport list for xuegod61.cn:/wwwdir 192.168.1.0/24[root@xuegod64 ~]# mount -t nfs 192.168.1.61:/wwwdir /var/www/html/[root@xuegod64 ~]# service httpd restart[root@xuegod64 ~]# curl 127.1HeartBeat HTTP Server Test[root@xuegod64 ~]# umount /var/www/html/ //卸载资源:后期这些资源通过heartbeat直接加载[root@xuegod64 ~]# service httpd stop[root@xuegod64 ~]# chkconfig httpd offHeartbeat的RPM包 [root@xuegod63 ~]# vim /etc/yum.repos.d/rhel-source.repo [rhel-source]name=Red Hat Enterprise Linux LocalYUMbaseurl=file:///media/enabled=1gpgcheck=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release[rhel-ha]name=Red habaseurl=file:///media/HighAvailabilityenabled=1gpgcheck=0gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release#说明,如果不配置这个baseurl=file:///mnt/HighAvailabilit ,则无法使用yum安装cluster-glue和resource-agents
centos 6.2或5的源里 cluster-glue、resource-agents、pacemaker 都有,就是没有heartbeat。 幸好heartbeat的source里提供了.spec 可以用rpmbuild来生成rpm包。
部署之前,我们需要生产heartbeat的rpm包
[root@xuegod63 ~]# tar xvf Heartbeat-3-0-958e11be8686.tar.bz2[root@xuegod63 ~]# cd Heartbeat-3-0-958e11be8686 [root@xuegod63 Heartbeat-3-0-958e11be8686]# rpmbuild -ba heartbeat-fedora.specerror: File /root/rpmbuild/SOURCES/heartbeat.tar.bz2: No such file or directory#虽然报了错,但是帮你生成了目录:/root/rpmbuild/SOURCES/ 。如你系统本身就有此目录,可以直接拷贝这个压缩包到这个目录 [root@xuegod63 Heartbeat-3-0-958e11be8686]# tar xvf /root/Heartbeat-3-0-958e11be8686.tar.bz2 -C /root/rpmbuild/SOURCES/ [root@xuegod63 Heartbeat-3-0-958e11be8686]# cd /root/rpmbuild/SOURCES/[root@xuegod63 SOURCES]# mv Heartbeat-3-0-958e11be8686/ heartbeat[root@xuegod63 SOURCES]# tar cjvf heartbeat.tar.bz2 heartbeat生成heartbeat.tar.bz2软件包,如果直接使用源码包,生成rpm包时,会报错: [root@xuegod63 SOURCES]# cd /root/rpmbuild/SOURCES/heartbeat/ [root@xuegod63 heartbeat]# rpmbuild -ba heartbeat-fedora.specerror: File /root/rpmbuild/SOURCES/heartbeat.tar.bz2: No such file or directory[root@xuegod63 heartbeat]# yum install ncurses-devel openssl-devel gettext bison flex mailx cluster-glue-libs-devel docbook-dtds docbook-style-xsl libtool-ltdl-devel libuuid-devel -y[root@xuegod63 heartbeat]# rpmbuild -ba heartbeat-fedora.spec
安装Heartbeat
Web主
[root@xuegod63 heartbeat]# cd /root/rpmbuild/RPMS/x86_64/[root@xuegod63 x86_64]# yum install -y cluster-glue resource-agents[root@xuegod63 x86_64]# rpm -ivh heartbeat-libs-3.0.6-1.el6.x86_64.rpm [root@xuegod63 x86_64]# rpm -ivh heartbeat-3.0.6-1.el6.x86_64.rpm[root@xuegod63 x86_64]# scp heartbeat-libs-3.0.6-1.el6.x86_64.rpm heartbeat-3.0.6-1.el6.x86_64.rpm 192.168.1.64:/root[root@xuegod63 x86_64]# scp /etc/yum.repos.d/rhel-source.repo 192.168.1.64:/etc/yum.repos.d/Web从 [root@xuegod64 ~]# yum install ncurses-devel openssl-devel gettext bison flex mailx cluster-glue-libs-devel docbook-dtds docbook-style-xsl cluster-glue resource-agents -y [root@xuegod64 ~]# rpm -ivh heartbeat-libs-3.0.6-1.el6.x86_64.rpm [root@xuegod64 ~]# rpm -ivh heartbeat-3.0.6-1.el6.x86_64.rpm查看生产的用户和组 [root@xuegod63 x86_64]# cd && grep haclient /etc/grouphaclient:x:492: [root@xuegod63 ~]# id haclusteruid=496(hacluster) gid=492(haclient) groups=492(haclient)
配置Heartbeat
XueGod63和64的配置差不多,先在XueGod63上配好,copy给64
“`
[root@xuegod63 ~]# cp /usr/share/doc/heartbeat-3.0.6/ha.cf /etc/ha.d/ //主配置文件
[root@xuegod63 ~]# cp /usr/share/doc/heartbeat-3.0.6/authkeys /etc/ha.d/ //主备节点间通信时所使用的验证文件,保证安全性
[root@xuegod63 ~]# cp /usr/share/doc/heartbeat-3.0.6/haresources /etc/ha.d/ //定义浮动资源的配置文件
什么是浮动资源:1. 公网IP地址 2. HTTP服务 3. 存储:NFS挂载
[root@xuegod63 ~]# vim /etc/ha.d/authkeys //设置主备节点间通信时所使用的验证文件,保证安全性。主备节点配置要求一致。
23 auth 3 #去掉注释
24 #1 crc
25 #2 sha1 HI!
26 3 md5 findkey #去掉注释,修改md5加密值已经名字
[root@xuegod63 ~]# chmod 600 /etc/ha.d/authkeys //此文件权限必须是600,否则启动不成功
/etc/ha.d/authkeys 文件决定了认证密钥。共有三种认证方式:crc,md5,和sha1。
如果Heartbeat运行于安全网络之上,如本例中的交叉线,可以使用crc,从资源的角度来看,这是代价最低的方法。如果网络并不安全,但也希望降低CPU使用,则使用md5。最后,如果想得到最好的认证,而不考虑CPU使用情况,则使用sha1,它在三者之中最难破解。
定义浮动资源:[定义好了资源之后,我们可以测试是否正常][root@xuegod63 ~]# vim /etc/ha.d/haresources //第44行加一行44 #node-name resource1 resource2 ... resourceN45 xuegod63.cn IPaddr::192.168.1.200/24/eth0 Filesystem::192.168.1.61:/wwwdir:: /var/www/html::nfs httpd#注:node-name填的是主服务器的主机名。 xuegod64上不需要修改。这样资源默认会加一这个主机上。当xuegod63坏了,xuegod64会再接管。#IPaddr::192.168.1.200/24/eth0 指定VIP及绑定到哪个网卡上#Filesystem::192.168.1.62:/wwwdir::/var/www/html::nfs 指定要挂载的存储#httpd 指定要启动的服务。 注,这个服务必须是/etc/init.d下,可以通过service去启动或关闭 [root@xuegod63 ~]# /etc/ha.d/resource.d/IPaddr 192.168.1.200/24/eth0 startINFO: Adding inet address 192.168.1.200/24 with broadcast address 192.168.1.255 to device eth0INFO: Bringing device eth0 upINFO: /usr/libexec/heartbeat/send_arp -i 200 -r 5 -p /var/run/resource-agents/send_arp-192.168.1.200 eth0 192.168.1.200 auto not_used not_usedINFO: SuccessINFO: SuccessARPING 192.168.1.200 from 192.168.1.200 eth0Sent 5 probes (5 broadcast(s))Received 0 response(s) [root@xuegod63 ~]# ip addr //查看IP,ifconfig看不到200的ip2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:d7:42:30 brd ff:ff:ff:ff:ff:ff inet 192.168.1.63/24 brd 192.168.1.255 scope global eth0 inet 192.168.1.200/24 brd 192.168.1.255 scope global secondary eth0 inet6 fe80::20c:29ff:fed7:4230/64 scope link valid_lft forever preferred_lft forever [root@xuegod63 ~]# /etc/ha.d/resource.d/Filesystem 192.168.1.61:/wwwdir /var/www/html/ nfs start //手动加载NFS存储资源到/var/www/htmlINFO: Running start for 192.168.1.61:/wwwdir on /var/www/htmlINFO: SuccessINFO: Success [root@xuegod63 ~]# ll /var/www/html/-rwxrwxrwx 1 root root 27 Dec 22 15:55 index.html [root@xuegod63 ~]# mount //查看挂载的资源……192.168.1.61:/wwwdir on /var/www/html type nfs (rw,vers=4,addr=192.168.1.61,clientaddr=192.168.1.63) [root@xuegod63 ~]# /etc/init.d/httpd start配置住配置文件[root@xuegod63 ~]# grep ^[^#] /etc/ha.d/ha.cf //看一下配置文件有效行logfacility local0auto_failback on#auto_failback on 为 on 时,主结点恢复正常后,资源自动转给主结点。 建议设为 auto_failback off ,等主节点恢复正常后,在业务不繁忙时,切换回来。防止主节点恢复正常时,回切时,再次影起网络中断。 [root@xuegod63 ~]# vim /etc/ha.d/ha.cf24 debugfile /var/log/ha-debug #这些行除开auto_failback on默认启用,其他手动启用29 logfile /var/log/ha-log48 keepalive 2 #设定 heartbeat 之间的时间间隔为 2 秒。56 deadtime 30 #在 30 秒后宣布节点死亡。61 warntime 10 #在日志中发出“late heartbeat“警告乀前等待的时间,单位为秒。71 initdead 120 #在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为 deadtime 的两倍。76 udpport 694 #使用端口 694 进行 bcast 和 ucast 通信。这是默认的,并且在 IANA 官方注册的端口号。121 ucast eth0 192.168.1.64 #需要修改,表示从本机的 eth0 接口发心跳消息给对方节点,写另一端的 IP 地址 。 这是单播地址。 xuegod64 上改为 192.168.1.63 。心跳网卡 ,如果你有两个网卡,可以写成 eth1 注:配置文件中 91行 #bcast eth0 #表示在 eth0 接口上使用广播 heartbeat(将 eth1 替换为 eth0, eth2,或者您使用的任何接口)。157 auto_failback on #默认启用,当 auto_failback 设置为 on 时,一旦主节点重新恢复联机,将从从节点取回所有资源。若该选项设置为 off,主节点便不能重新获得资源。211 node xuegod63 #需要修改,该选项是必须配置的。集群中机器的主机名,不“uname –n”的输出相同。212 node xuegod64 #需要修改220 ping 192.186.1.254 #需要修改,通过ping命令实现仲裁253 respawn hacluster /usr/libexec/heartbeat/ipfail #需要修改259 apiauth ipfail gid=haclient uid=haclusterWeb从 从63上cp文件过去即可[root@xuegod63 ~]# cd /etc/ha.d/ [root@xuegod63 ha.d]# scp ha.cf haresources authkeys 192.168.1.64:/etc/ha.d/ [root@xuegod64 ~]# chmod 600 /etc/ha.d/authkeys [root@xuegod64 ~]# vim /etc/ha.d/ha.cf改:ucast eth0 192.168.1.64为:ucast eth0 192.168.1.63#修改单播地址启动heartbeat [root@xuegod63 ~]# /etc/init.d/heartbeat restart[root@xuegod64 ~]# /etc/init.d/heartbeat restartStopping High-Availability services: [ OK ]Waiting to allow resource takeover to complete: [ OK ]#等待资源接管完成。 takeover接管。 当启动停留在这个界面时,xuegod64会接管所有浮动资源。等下面启动成功时,xuegod64会释放资源,浮云资源,再次加载。Starting High-Availability services: IPaddr[27857]: INFO: Resource is stopped [ OK ][root@xuegod63 ~]# netstat -antup | grep 694udp 0 0 0.0.0.0:694 0.0.0.0:* 61266/heartbeat: wr [root@xuegod64 ~]# netstat -antup | grep 694udp 0 0 0.0.0.0:694 0.0.0.0:* 46002/heartbeat: wr 查看集群资源WEB主[root@xuegod63 ~]# ip addr //VIP 1.200有……2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000…… inet 192.168.1.200/24 brd 192.168.1.255 scope global secondary eth0……[root@xuegod63 ~]# /etc/init.d/httpd status //服务是启动的httpd (pid 66549) is running... [root@xuegod63 ~]# df –h //NFS是挂载的Filesystem Size Used Avail Use% Mounted on/dev/sda2 9.9G 3.9G 5.5G 42% /tmpfs 491M 224K 491M 1% /dev/shm/dev/sda1 194M 30M 155M 16% /boot/dev/sr0 3.6G 3.6G 0 100% /media192.168.1.61:/wwwdir 9.9G 3.9G 5.6G 42% /var/www/htmlWEB从 [root@xuegod64 ~]# ip addr //没有虚拟IP……2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:ae:04:06 brd ff:ff:ff:ff:ff:ff inet 192.168.1.64/24 brd 192.168.1.255 scope global eth0…… [root@xuegod64 ~]# /etc/init.d/httpd status //服务没有启动httpd (pid 66549) is running... [root@xuegod64 ~]# df –h //NFS未挂载Filesystem Size Used Avail Use% Mounted on/dev/sda2 9.9G 3.9G 5.6G 42% /tmpfs 491M 224K 491M 1% /dev/shm/dev/sda1 194M 30M 155M 16% /boot/dev/sr0 3.6G 3.6G 0 100% /media测试使用客户端访问192.168.1.200关闭XueGod63的网卡,等待30s,在cong上查看IP,NFS等状态 [root@xuegod63 ~]# ifdown eth0(虚拟机效果,有时候很有问题,可以直接断开)XueGod64 [root@xuegod64 ~]# ip addr //虚拟IP已经转移过来2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 …… inet 192.168.1.64/24 brd 192.168.1.255 scope global eth0 inet 192.168.1.200/24 brd 192.168.1.255 scope global secondary eth0…… [root@xuegod64 ~]# df –h……192.168.1.62:/wwwdir 9.9G 1.1G 8.3G 12% /var/www/html #NFS也已经挂载 [root@xuegod64 ~]# service httpd status //HTTPD已经启动httpd (pid 50334) is running...访问测试XueGod63恢复链接 [root@xuegod63 ~]# ifup eth0 [root@xuegod63 ~]# ip addr……2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000…… inet 192.168.1.63/24 brd 192.168.1.255 scope global eth0 inet 192.168.1.200/24 brd 192.168.1.255 scope global secondary eth0…… [root@xuegod63 ~]# df –h……192.168.1.62:/wwwdir 9.9G 1.1G 8.3G 12% /var/www/html [root@xuegod63 ~]# service httpd statushttpd (pid 68370) is running...#发现资源已经却换回来XueGod64上 [root@xuegod64 ~]# ip addr……2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000…… inet 192.168.1.64/24 brd 192.168.1.255 scope global eth0…… [root@xuegod64 ~]# df –h……/dev/sr0 3.6G 3.6G 0 100% /mnt [root@xuegod64 ~]# service httpd statushttpd is stopped访问测试:
拓展:heartbeat 自带的断网切换的工具-ipfail
ipfail 断网切换的原理: 关于 ipfail 这个断网切换的原理很简单,首先 heartbeat 要判断自己的网络是否正常其实就是通过 ping某个 ip,如果可以 ping 的通,说明网络是通的,如果 ping 不通了,说明是网络断了,或者是主服务器的网卡坏了,然后执行切换的劢作。
ping 一个 group 的 ipfail 【配置: ping_group group1 172.16.103.254 172.16.103.212】在配置文件的 227行
- Hearbeat高可用
- 高可用
- 高可用
- 高并发高可用
- 高可用,高并
- hearbeat 错误集合
- hearbeat of RAC
- 高可用高性能系统
- 高可用高性能系统
- 高并发与高可用
- 高可用与高并发
- F5高可用解决方案
- postgresql高可用方案
- 高可用集群 HA
- 云中的高可用
- 高可用 Mysql 笔记
- Mysql高可用方案
- LINUX+HA高可用
- scala安装以及环境变量配置
- 【OpenCV 图像轮廓处理函数】
- Mybatis动态传表名
- Material Design的前世今生(介绍篇)
- 遗传算法MATLAB工具包简介
- Hearbeat高可用
- 文章标题
- 怎么清除电脑的运行记录
- sql中插值法完成缺失数据的填充
- JavaWeb——02_CSS
- solr 下载地址
- 贝叶斯推理(Bayes Reasoning)、独立与因式分解
- ubuntu14.04+eigen3安裝
- 函数模板机制探究