heartbeat安装与配置
Posted 书山有路勤为径
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了heartbeat安装与配置相关的知识,希望对你有一定的参考价值。
Hearbeat和keepalived区别
Keepalived使用的vrrp协议方式,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP);
Heartbeat是基于主机或网络的服务的高可用方式;
keepalived的目的是模拟路由器的双机
heartbeat的目的是用户service的双机
lvs的高可用建议用keepavlived
业务的高可用用heartbeat
Heartbeat高可用介绍
Heartbeat,心跳的意思,这里是Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统。心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能。
heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务
keepalived主要控制IP飘移,配置应用简单,而且分层,layer3,4,5,各自配置极为简单
heartbeat不但可以控制IP飘移,更擅长对资源服务的控制,配置,应用比较复杂
Heartbeat工作原理
通过修改Heartbeat的配置文件,可以指定哪台Heartbeat服务器作为主服务器,则另一台服务器自动成为热备服务器,然后在热备服务器上配置Heartbeat守护程序来监听来自主服务器的心跳消息。如果热备服务器在指定的时间内未监听到来自主服务器的心跳,就会启动故障转移程序,并取得主服务器上的相关资源服务的所有权,接替主服务器继续不间断的提供服务,从而达到资源及服务高可用性的目的。
以上描述是heartbeat主备的模式,heartbeat还支持主主模式,即两台服务器互为主备,这时它们之间会相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的心跳报文,那么,一方就会认为对方失效或者宕机了,这每个运行正常的主机就会启动自身的资源接管模块来接管运行在对方主机上的资源或者服务,继续为用户提供服务。一般情况下,可以较好的实现一台主机故障后,企业业务仍能不间断的持续运行。注意:所谓的业务不间断,在故障转移期间也是需要切换时间的<例如:停止数据库及存储服务等>heartbeat的主备高可用的切换时间一般是在5-20秒左右(服务器宕机的切换比人工切换要快)
另外,和keepalived高可用软件一样,heartbeat高可用是操作系统级别的,不是服务(软件)级别的,可以通过简单的脚本控制,实现服务级别的高可用
高可用服务器切换的常见场景:
1)主服务器物理宕机(硬件损坏,操作系统故障),主要解决目标
2)Heartbeat服务软件本身故障
3)两台主备服务器之间心跳连接故障
服务故障不会导致切换,可以通过服务宕机把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端口和IANA
TCP/UDP的694号端口【端口都是有IANA规划的】
[root@xuegod63 ~]# grep 694 /etc/services
ha-cluster 694/tcp # Heartbeat HA-cluster
ha-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 与各标准化组织一同管理协议编号系统。
Hearbeat心跳链接
两台Server之间heartbeat心跳通讯的方法:
1:利用串口电缆,使用串口线直连两台服务器,缺点是距离不能太远
2:使用一个Enternet电缆,两张网卡直连
如何选择:
最好使用串口电缆,次之两张网卡直连
Hearbeat脑裂
两台服务都正常,但是就是检测不到对方的心跳信息(心跳通信出现故障),两台heartbeat都绑定VIP,这就是脑裂,由于相互失去联系,两台服务器本能的争取接管资源,最严重的后果:共享资源被瓜分,服务都起不起来了,又或者服务都起来,但是共享资源同时写,最后数据就被破坏了!
1:心跳线断了,无法通讯(老鼠咬了,线材老化)
2:使用网路直连时,网卡驱动坏了,局域网IP冲突
3:心跳线之间的中转设备坏了(仲裁设备坏了)
4:iptables
5:地址信息不对(掩码……),配置丢失
6:网线误拔
解决脑裂的办法:
做冗余
做好脑裂监控报警(在仲裁设备上做),仲裁方式停服
多个仲裁机制(仲裁设备,第三方仲裁软件)
一旦报警,短信电话通知运维人员,服务不要自动接管服务,有人员操作
Heartbeat集群环境
使用Heartbeat实现web服务器的高可用
三台服务器,加上真机顶替一台客户端服务器
Xuegod63 web主
Xuegod64 web从
Xuegod66 存储池
拓扑图如下
环境准备
Xuegod61,63,66,主机名对应,永久生效,且能相互解析(hosts文件),清空防火墙,关闭selinux
[root@xuegod64 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.63 xuegod63
192.168.1.64 xuegod64
192.168.1.66 xuegod66
[root@xuegod64 ~]# getenforce
Disabled
[root@xuegod64 ~]# iptables -F && /etc/init.d/iptables save
iptables:将防火墙规则保存到 /etc/sysconfig/iptables: [确定]
配置存储池
这里我们使用的XueGod66作为我们的存储池,配置我们NFS共享资源
1.安装NFS软件包
[root@xuegod66 ~]# rpm -ivh /media/Packages/nfs-utils-1.2.3-39.el6.x86_64.rpm
warning: /media/Packages/nfs-utils-1.2.3-39.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing... ########################################### [100%]
package nfs-utils-1:1.2.3-39.el6.x86_64 is already installed
2.创建共享目录
[root@xuegod66 ~]# mkdir /wwwdir
3.创建一个首页测试文件
[root@xuegod66 ~]# echo "HeartBeat HTTP Server Test" > /wwwdir/index.html
4.编辑NFS的配置文件
[root@xuegod66 ~]# cat /etc/exports
/wwwdir 192.168.1.0/24(rw)
5.启动服务并查看
[root@xuegod66 ~]# service nfs start
启动 NFS 服务: [确定]
关掉 NFS 配额: [确定]
启动 NFS mountd: [确定]
启动 NFS 守护进程: [确定]
正在启动 RPC idmapd: [确定]
查看端口是否启动
[root@xuegod66 ~]# netstat -anptu|grep 2049
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp 0 0 :::2049 :::* LISTEN -
udp 0 0 0.0.0.0:2049 0.0.0.0:* -
udp 0 0 :::2049 :::*
-
[root@xuegod66 ~]# showmount -e
Export list for xuegod66:
/wwwdir 192.168.1.0/24
[root@xuegod66 ~]# chkconfig nfs on
添加开机自动挂载
/etc/fstab
WEB1服务器主配置
[root@xuegod63 mnt]# mount -t nfs 192.168.1.66:/wwwdir /var/www/html
[root@xuegod63 mnt]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 9.9G 3.7G 5.8G 39% /
tmpfs 1000M 224K 1000M 1% /dev/shm
/dev/sda1 485M 39M 421M 9% /boot
/dev/sdb1 197G 188M 187G 1% /server
/dev/sr0 3.6G 3.6G 0 100% /media
192.168.1.66:/wwwdir 9.9G 3.6G 5.9G 38% /var/www/html
xuegod64同上面一样的操作
[root@xuegod63 mnt]# service httpd status
httpd 已停
[root@xuegod63 mnt]# service httpd start
正在启动 httpd:httpd: Could not reliably determine the server\'s fully qualified domain name, using 192.168.1.63 for ServerName
[确定]
[root@xuegod63 mnt]# curl 127.0.0.1
HeartBeat HTTP Server Test
---------------------------------------------------------------------------------------------------------------------------------
[root@xuegod64 ~]# umount /var/www/html/ //卸载资源:后期这些资源通过heartbeat直接加载
[root@xuegod64 ~]# service httpd stop
[root@xuegod64 ~]# chkconfig httpd off
制作Heartbeat的RPM包
[root@xuegod63 ~]# vim /etc/yum.repos.d/rhel-source.repo
[rhel-source]
name=Red Hat Enterprise Linux LocalYUM
baseurl=file:///media/
enabled=1
gpgcheck=0
[rhel-ha]
name=Red ha
baseurl=file:///media/HighAvailability
enabled=1
gpgcheck=0
#说明,如果不配置这个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包
上传下载的heartbeat软件包
[root@xuegod63 mnt]# tar jxvf heartbeat.tar.bz2
[root@xuegod63 ~]# cd Heartbeat-3-0-958e11be8686
[root@xuegod63 Heartbeat-3-0-958e11be8686]# rpmbuild -ba heartbeat-fedora.spec
error: 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.spec
error: File /root/rpmbuild/SOURCES/heartbeat.tar.bz2: No such file or directory
[root@xuegod63 heartbeat]# yum –y install ncurses-devel cluster-glue-libs-devel uuid libuuid-devel
[root@xuegod63 heartbeat]# rpmbuild -ba heartbeat-fedora.spec
安装heart 以上是关于heartbeat安装与配置的主要内容,如果未能解决你的问题,请参考以下文章 heartbeat 非联网安装(通过配置本地yum文件库安装heartbeat)