Heartbeat原理及部署

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Heartbeat原理及部署
⼀,Heartbeat简介
⼆,安装Heartbeat
环境查看
服务器规划
IP⽤途主机名
192.168.1.101主服务器hdp3
192.168.1.102备服务器hdp4
初始配置
禁⽤防⽕墙
systemctl disable firewalld
关闭senlinux
设置主机名并设置hosts⽂件 
两台主机名不⼀样,hosts⽂件⼀样 
# cat /etc/hosts
192.168.1.101 hdp3
192.168.1.102 hdp4
安装依赖包
yum -y install glib2-devel libtool-ltdl-devl net-snmp-devel bzip2-devel ncurses-devel openssl-devel libtool libxml2 libxml2-devel gettext bison flex zlib-devel mailx which libxslt docbook-dtds docbook-style-xsl PyXML shadow-utils opensp autoconf 下载安装包
Heartbeat 3.0.6:/heartbeat-STABLE_3_0/archive/958e11be8686.tar.bz2
Cluster Glue 1.0.12:/glue/archive/0a7add1d9996.tar.bz2
Resource Agents 3.9.6:https:///ClusterLabs/resource-agents/archive/v3.9.6.tar.gz
添加 haclient 组和 hacluster 账户,这个⽤户主要⽤来配置respawn的。

groupadd haclient
useradd -g haclient -M -s /sbin/nologin hacluster
安装Cluster Glue 1.0.12
tar -xf 0a7add1d9996.tar.bz2
cd Reusable-Cluster-Components-glue--0a7add1d9996/
./autogen.sh
./configure --prefix=/usr/local/heartbeat LIBS='/lib64/libuuid.so.1'
make && make install
安装Resource Agents
tar -xf v3.9.6.tar.gz
cd resource-agents-3.9.6/
./autogen.sh
./configure --prefix=/usr/local/heartbeat
make && make install
安装heartbeat-3-0-6
tar -xf 958e11be8686.tar.bz2
cd Heartbeat-3-0-958e11be8686/
#设置,否则安装会报错
export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"
#删除配置⽂件的最后⼀⾏
sed -i '/^#define HA_HBCONF_DIR /d' /usr/local/heartbeat/include/heartbeat/glue_config.h
./bootstrap
./configure --prefix=/usr/local/heartbeat LIBS='/lib64/libuuid.so.1'
make && make install
拷贝配置⽂件
cd /usr/local/heartbeat/share/doc/heartbeat
cp authkeys ha.cf haresources /usr/local/ heartbeat/etc/ha.d/
设置配置⽂件权限及软连接
cd /usr/local/heartbeat/etc/ha.d
chmod 600 authkeys
ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/* /usr/local/heartbeat/lib/heartbeat/plugins/RAExec/
ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/* /usr/local/heartbeat/lib/heartbeat/plugins/
编辑配置⽂件
192.168.1.101上的ha.cf⽂件内容如下
# cat /usr/local/heartbeat/etc/ha.d/ha.cf
# 保存调试信息⽂件
debugfile /var/log/ha-debug
# ⽇志⽂件
logfile /var/log/ha-log
# 表⽰使⽤系统⽇志
logfacility local0
# ⼼跳的时间间隔,单位秒
keepalive 1
# 超出该时间间隔未收到对⽅节点的⼼跳,则判定对⽅死亡
deadtime 30
# 超出该时间间隔未收到对⽅节点的⼼跳,则发出警告记录到⽇志中
warntime 10
# 在某系统上,系统启动或重启之后需要经过⼀段时间⽹络才能正常⼯作,该选项⽤于解决这种情况产⽣的时间间隔,取值⾄少为deadtime的2倍
initdead 120
# 设置⼴播通信使⽤的端⼝,694为默认使⽤的端⼝号
udpport 694
# 传播⼼跳的⼴播播⽹卡信息
bcast eth0
# 设置对⽅机器⼼跳检测的IP
# 第⼆列为⽹卡名第三列为⼼跳IP,⽣产中⼼跳需要与数据⽹络分开
ucast eth0 192.168.1.102
# 在该选项设为on的情况下,⼀旦主节点恢复运⾏,则⾃动获取资源并取代从节点
auto_failback off
# 配置主从的节点信息
node hdp3
node hdp4
# 如果ping不通该地址,就认为当前断⽹,需要转移vip
ping 192.168.1.9
# 指定与heartbeat⼀同启动和关闭的进程,该进程被⾃动监视,遇到故障则重新启动。

最常⽤的进程是ipfail,该进程⽤于检测和处理⽹络故障,需要配合ping语句指定的ping node来检测⽹络连接。

如果你的系统是64bit,请注意该⽂件的路径respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail
# 指定⽤户和组
apiauth ipfail gid=haclient uid=hacluster
注意:如果复制配置⽂件可能导致⽆法启动heartbeat,可能是因为字符编码或者空格等原因,可以直接在原配置⽂件修改
192.168.1.102除了以下配置不⼀样其他⼀致
# 设置对⽅机器⼼跳检测的IP
# 第⼆列为⽹卡名第三列为⼼跳IP,⽣产中⼼跳需要与数据⽹络分开
ucast eth0 192.168.1.101
编辑认证⽂件authkeys
开启2认证,认证秘钥为HI!⽣产中使⽤复杂秘钥
# sed '/#/d' authkeys
auth 2
2 sha1 HI!
编辑资源配置⽂件
192.168.1.101配置⽂件
#cat haresources
hdp3 IPaddr::192.168.1.100/24/eth0
解析:hdp3代表主机名,192.168.1.100为VIP 虚拟在⽹卡eth0上
192.168.1.101配置⽂件
# cat haresources
hdp4 IPaddr::192.168.1.100/24/eth0
启动heartbeat
systemctl start heartbeat
主服务器上查看⽇志
备主机没有虚拟VIP
停⽌主服务器的heartbeat
systemctl stop heartbeat
主服务器查看ha⽇志
从服务器查看ha⽇志
再次启动主服务器的heartbeat
查看从服务器⽇志知道hdp3已经触及active状态
从服务器VIP还保留,除⾮从服务器heartbeat停⽌主heartbeat应⽤正常则主会接收⽣成VIP
三,使⽤heartbeat实现web⾼可⽤
以上只实现的VIP漂移,下⾯通过heartbeat实现web⾼可⽤
两台主机安装apache
yum -y install httpd
找到httpd启动程序并负责到heartbeat管理⽬录
# which httpd
/usr/sbin/httpd
cp /usr/sbin/httpd /usr/local/heartbeat/etc/ha.d/resource.d/
使⽤heartbeat需要满⾜以下条件
1)httpd命令需要放在/etc/init.d/下或者/etc/ha.d/resource.d下
2)httpd命令需要具备可执⾏权限(x)
3)httpd必须⽀持如下启动⽅式
/etc/init.d/httpd
Usage: httpd {start|stop|restart|condrestart|try-restart|force-reload|reload|status|fullstatus|graceful|help|configtest}
查看httpd帮助可以知道httpd可以使⽤命令启动,需要加参数-k
httpd -k start
修改haresources
两台服务器配置⼀致
# cat haresources
hdp3 IPaddr::192.168.1.100/24/eth0 httpd::-k
重启heartbeat查看⽇志
systemctl restart heartbeat
主服务器
注意:使⽤heartbeat可以管理应⽤资源,应⽤⽆需使⽤systemctl enable设置成开机⾃启动
⾼可⽤测试,为了区分,在两台服务器写⼊不同的⾸页
#主服务器
echo hdp3>/var/www/html/index.html
#备服务器
echo hdp4>/var/www/html/index.html
停⽌主服务器的heatbeat模拟中断
备服务器查看⽇志
web页⾯使⽤VIP访问变成备服务器的⾸页了
⽣产中主备服务器后端内容是⼀致的,主服务器宕机对于⽤户来说⽆感知
注意:如果heartbeat正常,VIP正常,httpd服务宕了,这个时候不会做⾼可⽤切换,写个简单的脚本定时或守护进程判断httpd服务,如果有问题,则停⽌heartbeat,主动使其上的业务切换到另⼀台。

相关文档
最新文档