Heartbeat实现LVS集群DR模式下Director高可用
Heartbeat是一个集群软件,它主要由心跳信息检测和资源管理两大核心部分组成,在Heartbeat构建的集群中,各服务器会向其他集群节点发送心跳信息(报文)并予以收集、分析,以判断该节点的状态,从而认为节点是否有效。当服务器在指定的时长内检测不到其他节点的心跳信息或无法通过网络等方式连接时,会认为对方节点失效,此时,服务器需要启动资源接管模块来接管失效节点上的服务和资源。下面以简单的示例来演示以Heartbeat3实现LVS集群DR模式下Director高可用。
LVS集群DR模式架构图:
一 环境准备
1.网络配置
Primary Director(桥接网卡)
IPADDR=192.168.10.201
GATEWAY=192.168.10.1
DNS1=8.8.8.8
DNS2=114.114.114.114
Standby Director(桥接网卡)
IPADDR=192.168.10.202
GATEWAY=192.168.10.1
DNS1=8.8.8.8
DNS2=114.114.114.114
Real Server One(桥接网卡)
IPADDR=192.168.10.203
GATEWAY=192.168.10.1
DNS1=8.8.8.8
DNS2=114.114.114.114
Real Server Two(桥接网卡)
IPADDR=192.168.10.204
GATEWAY=192.168.10.1
DNS1=8.8.8.8
DNS2=114.114.114.114
二 Director配置(Primary 、Standby)
1.修改主机名称Primary
设置
# hostname hbeone.com
# vi /etc/sysconfig/network
NETWORK=yes
HOSTNAME=hbeone.com
查看
# hostname/uname -n
2.修改主机名称Standby
# hostname hbetwo.com
# vi /etc/sysconfig/network
NETWORK=yes
HOSTNAME=hbetwo.com
#hostname/uname -n
3.免密登陆Primary
-t:类型 -f:输出文件 -P:指定密码
# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
复制到hbetwo
# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.10.202
验证是否成功
# ssh 192.168.10.202 'ip addr'
4.免密登陆Standby
# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.10.201
# ssh 192.168.10.202 'ip addr'
5.配置主机名称解析
# vi /etc/hosts
IP 主机 别名
192.168.10.201 hbeone.com nodeone
192.168.10.202 hbetwo.com nodetwo
测试
# ping hbetwotwo.com
三 安装Heartbeat
下载安装包Heartbeat、Cluster Glue 、Resource Agents
下载地址: http://linux-ha.org/wiki/Downloads
创建目录并将下载文件上传至此目录
# mkdir /usr/local/inspackage
1.安装基础依赖
# yum install -y bzip2 autoconf automake libtool glib2-devel libxml2-devel bzip2-devel libtool-ltdl-devel asciidoc libuuid-devel net-tools
2.安装Cluster Glue
# cd /usr/local/inspackage
# tar xf 0a7add1d9996.tar.bz2 (下载的Cluster Glue安装包的名称)
# cd Reusable-Cluster-Components-glue--0a7add1d9996/
# groupadd haclient
# useradd -g haclient hacluster
# ./autogen.sh
# ./configure --prefix=/usr/local/heartbeat/
# make && make install
3.安装Resource Agents
# cd ../
# tar xf resource-agents-3.9.6.tar.gz (下载的Resource Agents安装包的名称)
# cd resource-agents-3.9.6/
# ./autogen.sh
# export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"
# ./configure --prefix=/usr/local/heartbeat/
# vim /etc/ld.so.conf.d/heartbeat.conf
# /usr/local/heartbeat/lib
# ldconfig
# make && make install
4.安装HeartBeat
# cd ../
# tar xf 958e11be8686.tar.bz2(下载的Heartbeat安装包的名称)
# cd Heartbeat-3-0-958e11be8686/
# ./bootstrap
# export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"
# ./configure --prefix=/usr/local/heartbeat/
# vim /usr/local/heartbeat/include/heartbeat/glue_config.h
文档末尾注释这行
/*define HA_HBCONF_DIR “/usr/local/heartbeat/etc/ha.d/”*/
# make && make install
5.Heartbeat的配置
5.1拷贝配置文件
Heartbeat默认的配置需要置于 /usr/local/heartbeat/etc目录下 默认该目录不存在配置文件,所以需要将安装目录的文件拷贝至此
# cp /usr/local/heartbeat/share/doc/heartbeat/ha.cf /usr/local/heartbeat/etc/ha.d
# cp /usr/local/heartbeat/share/doc/heartbeat/authkeys /usr/local/heartbeat/etc/ha.d
# cp /usr/local/heartbeat/share/doc/heartbeat/haresources /usr/local/heartbeat/etc/ha.d
5.2配置密钥文件authkeys
# cd /usr/local/heartbeat/etc/ha.d/
读取一段随机数并做MD5编码
# dd if=/dev/random count=1 bs=512 | md5sum
# vi authkeys
文件末尾添加如下配置
auth 1
1 md5 7751aed08c222280c1123e802aaa6298
修改authkeys文件权限改为600
# chmod 600 /usr/local/heartbeat/etc/ha.d/authkeys
权限未修改的话heartbeat服务启动会报如下错误:
ERROR: Bad permissions on keyfile [/usr/local/heartbeat/etc/ha.d/authkeys]
5.3heartbeat服务配置文件ha.cf
# vi ha.cf
#广播
bcast enp0s3(网卡名称)
#组播
#mcast
#单播-两个节点,多节点的话比较麻烦,除了自己所有的节点都要配置在这里,对方地址。
#ucast
node hbeone.com
node hbetwo.com
uname -n
#网关
ping 192.168.10.1
ping和bcast需要插件支持,所以 需要将lib64下面的插件软连接到lib目录
# 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/
没插件支持的话,启动会报如下错误:
ERROR: Illegal directive [bcast] in /usr/local/heartbeat/etc/ha.d/ha.cf
ERROR: Illegal directive [ping] in /usr/local/heartbeat/etc/ha.d/ha.cf
5.4 资源管理配置文件haresources
在配置haresource之前,首先要安装httpd服务,并且进行手动测试
安装服务
# yum -y install httpd
手动启动进行测试
# echo "<h1>hbeone.com</h1>" >> /var/www/html/index.html
启动httpd服务
# service httpd start
页面访问
停止httpd服务
# service httpd stop
禁止开机启动
# chkconfig httpd off
httpd服务安装时候需要注意的有三点:
① httpd命令需要放在/etc/init.d/下或者/etc/ha.d/resource.d下,因为haresources配置文件中配置的代理文件服务器默认读取文件的目录就是这两个目录,在CentOS7系统中,httpd脚本在./usr/sbin/apachectl目录下,所以需要将其移到到/etc/init.d/或者/etc/ha.d/resource.d目录下。
# cp /usr/sbin/apachectl /etc/init.d/httpd
如果未COPY hppd脚本,启动heartbeat服务时会报如下错误:
ERROR: Cannot locate resource script httpd
② httpd命令需要具备可执行权限(x)
③ httpd必须支持/etc/init.d/httpd启动方式
配置haresources
# vi haresource
# hbeone.com IPaddr::192.168.10.200/16/enp0s3 httpd
6.启动Heartbeat
在hbeone节点上启动heartbeat服务
# service heartbeat start
启动hbetwo节点上的heartbeat服务
# ssh hbetwo 'service heartbeat start'
查看日志
# tail -f /var/log/messages
7.测试Heartbeat
启动完成之后在hbeone主机上当ifconfig看见enp0s3:0配置时,heartbeat安装成功,
heartbeat提供了供测试的脚本,Heartbeat 3.0.6版本的测试脚本是/usr/local/heartbeat/share/heartbeat目录下的hb_standby文件。
启动测试脚本,实现资源转移
# ./hb_standby
此时再查看hbetwo网络配置情况,enp0s3:0配置出现,实现了资源转移。
四 RealServer服务器配置以及Director转发规则配置
1.RealServer配置(RealServer One、RealServer Two)
1.1 关闭防火墙
# systemctl stop firewalld.service
# systemctl disable firewalld.service
1.2 配置ARP解析
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 2 > /proc/sys/net/ipv4/conf/enp0s3/arp_announce
# echo 1 > /proc/sys/net/ipv4/conf/enp0s3/arp_ignore
1.3 配置VIP
# ifconfig lo:0 192.168.10.200
# ifconfig lo:0 192.168.10.200 broadcast 192.168.10.200 netmask 255.255.255.255 up
# route add -host 192.168.10.200 dev lo:0
1.4 配置配置httpd或者tomcat服务运行在80端口,Real Server One 和Real Server Two主页可以配置不一样,方便观测集群结果。
2 Director配置(Primary 、Standby)
2.1 安装ipvsadm
# yum install -y ipvsadm
2.2 配置解析规则
# ipvsadm -A -t 192.168.10.200:80 -s wlc
# ipvsadm -a -t 192.168.10.200:80 -r 192.168.10.203 -g -w 2
# ipvsadm -a -t 192.168.10.200:80 -r 192.168.10.204 -g -w 2
3 验证
浏览器访问http://192.168.10.200 RealServer One和RealServer Two Apache服务默认欢迎页交替出现,使用hb_standby脚本转移资源,再次访问http://192.168.10.200 RealServer One和RealServer Two Apache服务默认欢迎页交替出现。在这里,当执行完脚本的一段时间内,大概十秒左右,因为正在转移资源,整个服务是不可用的。