Heartbeat作用:提供故障转移及高可用服务,与keepalived有很多相同之处,也有区别
Hearbeat和keepalived区别:
Keepalived使用的vrrp协议方式,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP);
Heartbeat是基于主机或网络的服务的高可用方式;
keepalived的目的是模拟路由器的双机
heartbeat的目的是用户service的双机
lvs的高可用建议用keepavlived
业务的高可用用heartbeat
参考官方文档:http://www.linux-ha.org/doc/users-guide/users-guide.html
http://www.linux-ha.org/wiki/Downloads 三个安装包在此
参考博客:http://blog.51cto.com/wangzhijian/1708694
工作原理:
通过修改heartbeat的配置文件,可以指定一台heartbeat服务器作为主服务器,另一台自动成为热备服务器。在热备服务器上面配置heartbeat守护程序来监听来自主服务器的心跳信息。如果在规定时间内,无法监听到心跳信息,那么就启动故障转移,取得主服务器上的相关资源的所有权,接替主服务器继续不间断的提供服务,从而达到资源以及服务高可用的目的。
heartbeat支持主主模式,以及两台服务器互为主备,一般故障切换时间在5~20s之间
heartbeat裂脑:
两台服务器在一定时间内,无法相互检测到对方心跳而各自启动故障转移功能,取得资源和服务的所有权,会导致同一个IP在两端同时启动服务,存在两个相同的VIP,造成冲突的严重问题
裂脑的原因:
心跳链路故障,导致无法正常通信
开启了防火墙阻挡了心跳信息传输
心跳网卡地址等配置不正确
心跳方式,心跳广播冲突,软件bug
防止裂脑方案:
同时使用串行电缆和以太网电缆连接,同时使用两条心跳线
检测到裂脑时,强制关闭一个节点(需要特殊设备支持,如stonish和fence),相当于程
序上的备节点发现心跳故障,发送关机指令到主节点
做好监控预警
启用磁盘锁
仲裁机制(确定让哪个节点接管服务)
IP地址接管和故障转移: heartbeat通过ip地址接管和arp广播进行故障转移
Heartbeat 2.1.4之后被拆分为三个子项目: cluster-glue、resource-agents、heartbeat 导致了
配置更加复杂
源码编译比较复杂:需要安装各种依赖,比较麻烦
安装方式建议采用yum安装的方式: 但是centos6.2后的epel源里没有了,centos6.2后
的系统,只能采取源码编译方式安装heartbeat
源码编译安装方式:
必须安装:
yum install gcc gcc-c++ autoconf automake libtool glib2-devel libxml2-devel bzip2 bzip2-devel e2fsprogs-devel libxslt-devel libtool-ltdl-devel asciidoc
1、安装cluster-glue :
groupadd haclient
useradd -g haclient hacluster
下载: wget http://hg.linux-ha.org/glue/archive/0a7add1d9996.tar.bz2
tar -jxvf cluster-clue-1.0.12.tar.bz2
cd Reusable-Cluster-Components-glue--0a7add1d9996/
./autogen.sh
./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1' ##注:32位系统去掉64
make
make install
2、安装Resource Agents : 为集群资源的访问提供了一系列的标准的接口
wget https://github.com/ClusterLabs/resource-agents/archive/v3.9.6.tar.gz
tar zxvf resource-agents-3.9.6.tar.gz
./autogen.sh
./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
make && make install
3、安装Heartbeat :
wget http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/958e11be8686.tar.bz2
tar jxvf 958e11be8686.tar.bz2
cd Heartbeat-3-0-958e11be8686/
./bootstarp
export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"
./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
make && make install
复制源码包部分内容到安装目录:
cd Heartbeat-3-0-958e11be8686/ #切换到heartbeat源码解压后的目录,复制一下内容:
cp doc/{ha.cf,haresources,authkeys} /usr/local/heartbeat/etc/ha.d/
chkconfig --add heartbeat #加入到开机启动项
chkconfig heartbeat on #设为开机启动,7以上的此命令:systemctl enable heartbeat.service
chmod 600 /usr/local/heartbeat/etc/ha.d/authkeys
mkdir -pv /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/
cp /usr/lib/ocf/lib/heartbeat/ocf-* /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/
ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/*/usr/local/heartbeat/lib/heartbeat/plugins/RAExec/ #主备heartbeat都需要设置
ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/* /usr/local/heartbeat/lib/heartbeat/plugins/ ##主备heartbeat都需要设置
Heartbeat配置:
Heartbeat的配置主要涉及到ha.cf、haresources、authkeys这三个文件。其中ha.cf是主配置文件,haresource用来配置要让Heartbeat托管的服务,authkey是用来指定Heartbeat的认证方式
1、配置ha.cf : 主配置文件
注:192.168.56.102是主heartbeat节点IP,192.168.56.101是备heartbeat节点IP
cat /usr/local/heartbeat/etc/ha.d/ha.cf 去掉空行和注释行后的内容如下:
debugfile /var/log/ha-debug ##用于记录heartbeat的调试信息
logfile/var/log/ha-log ##用于记录heartbeat的日志信息
logfacilitylocal0 ##设置heartbeat的日志,这里用的是系统日志
keepalive 2 ##设定心跳(监测)时间时间为2秒
deadtime 30 ##指定若备用节点在30秒内未收到主节点心跳信号,则接管主服务器资源
warntime 10 ##指定心跳延迟的时间为10秒,10秒内备节点不能接收主节点心跳信号,即往日志写入警告日志,但不会切换服务
initdead 120 ##系统启动或重启后预留的忽略时间段,取值至少为deadtime的两倍
udpport 694 ##广播/单播通讯使用的Udp端口
bcast enp0s8 # Linux ##使用网卡enp0s8发送心跳检测
#mcast eth0 225.0.0.1 694 1 0 ##采用网卡eth0的Udp多播来组织心跳,一般在备用节点不止一台时使用。Bcast、ucast和mcast分别代表广播、单播和多播,是组织心跳的的方式,任选其一,可选配置
#ucast enp0s8 192.168.10.102 ##采用网卡enp0s8的udp单播来组织心跳,后面跟的IP地址为双机对方IP地址,可选配置
auto_failback on ##定义当主节点恢复后,是否将服务自动切回#watchdog /dev/watchdog ##可选配置,通过Heartbeat监控系统运行状态。
node node1 ##主节点名称,与uname -n显示一致,即主节点主机名
node node2 ##备用节点名称,即备节点主机名
ping 192.168.10.1 ##通过ping网关检测心跳是否正常,仅用来测试网络
respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail ##指定和heartbeat一起启动、关闭的进程,可选配置
#apiauth ipfail gid=haclient uid=hacluster ##设置启动IPfail的用户和组,可选配置
2、配置Haresources资源文件:
Haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址及启动服务集群资源,文件每一行可包含一个或多个资源脚本名,资源间使用空格隔开,参数间使用两个冒号隔开,主节点和备份节点中资源文件haresources要完全一样
编辑haresources文件: vim /usr/local/heartbeat/etc/ha.d/haresources
一般格式为: node-name network <resource-group>
node-name表示主节点的主机名,必须和ha.cf文件中指定的节点名一致。
network用于设定集群的IP地址、子网掩码和网络设备标识等。
resoure-group 用于指定需Heartbeat托管的服务(即这些服务可由Heartbeat来启动和关闭)
如:
IP 192.168.56.110是虚拟IP
two是HA集群的主节点,IPaddr为heartbeat自带的执行脚本,heartbeat首先将执行/etc/ha.d/resource.d/IPaddr 192.168.56.102/24 start的操作,即虚拟一个子网掩码为255.255.255.0,IP为192.168.56.102的地址,此IP为heartbeat对外提供服务的网络地址,同时指定此IP使用的网络接口
3、配置authkeys : 心跳密钥验证文件
编辑 vim /usr/local/heartbeat/etc/ha.d/authkeys
注:auth后填序号,可任意填写,但第二行开头必须为序列号,然后为验证方式,支持三种(crc md5 sha1)方式验证,最后面是自定义密钥
配置双机互信(可选)并复制文件至备机 : 即配置ssh双机通信:
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub root@对端IP
4、复制配置文件至备heartbeat:
scp /usr/local/heartbeat/etc/ha.d/* root@备heartbeat机IP地址:/usr/local/heartbeat/etc/ha.d/
注意:备heartbeat节点各配置文件与主heartbeat节点各配置文件大体相同
5、测试:在主备heartbeat机上都执行
启动httpd: systemctl start httpd
启动heartbeat: /etc/init.d/heartbeat start或systemctl start heartbeat
设置selinux为Permissive模式:getenforce 0
停止防火墙:systemctl stop firewalld
查看heartbeat启动后的信息:
netstat -tulnp|grep heartbeat
tail -f /var/log/ha-log #日志文件在ha.cf里已经指定了
ifconfig命令查看虚拟IP 192.168.56.110是否存在:
停掉主heartbeat服务,会发现192.168.56.110 IP会漂移到备heartbeat
在浏览器里输入: 192.168.56.110 访问会发现当主备heartbeat切换时,网页内容会在主备heartbeat上的httpd服务内容之间切换
最后
以上就是愉快芒果最近收集整理的关于Heartbeat安装与部署及测试的全部内容,更多相关Heartbeat安装与部署及测试内容请搜索靠谱客的其他文章。
发表评论 取消回复