李思苇

终身程序媛

heartbeat+浮动IP 实现HA——http 、mysql、nfs的双机热备

预备知识

.虚拟IP

虚拟IP地址(VIP) 是一个不与特定计算机或一个计算机中的网络接口卡(NIC)相连的IP地址。数据包被发送到这个VIP地址,但是所有的数据还是经过真实的网络接口。VIPs大部分用于连接冗余;一个VIP地址也可能在一台计算机或NIC发生故障时可用,交由另一个可选计算机或NIC响应连接。虚拟IP地址的例子如:一个Loopback(无电路IP地址)作为不与在主机或路由器中任何一个特定接口(或电路)相关的IP地址。 IP技术的一种,增强网络管理,发挥出VLAN的优势,改变了网络结构,合理分配网络资源,均衡网络负载,有效降低网上广播信息,方便对用户的分组管理。

.架构图

一、准备工作

  1. 准备两台linux服务器(当然做实验虚拟机即可),各配置两个网卡对应两个IP(一个网卡做数据网卡,一个做心跳网卡)

  2. 两台机器的心跳卡用普通网线直连(不经过交换机)–也有其他方式,这里不介绍

  3. 两台机器分别安装tomcat

  4. 主机规划

主机点:eth0网卡做数据网卡(172.20.32.22)–万兆,eth1(192.168.1.22)做心跳卡

备节点:eth0网卡做数据网卡(172.20.32.23)–万兆,eth1(192.168.2.23)做心跳卡

二、安装

安装的方式很多,主要看你当前的环境。如果你的机器能连外网,那简单啦,yum安装。如果不能连外网,那就用你的系统光盘吧,里面有heartbeat及其依赖包的安装包。如果你没光盘,那你就上网下载呗,一个一二依赖包来下载,疼啊。
- yum安装(超级简单)

yum list heartbeat —–搜一下yum库里有哪些heart的包,我搜了是3.0.4

yum install heartbeat —-安装命令,直接安装吧,依赖吧会自己安装的,提示是否安装依赖包的时候后yes就行啦

一句话,yum安装简单方便,自动安装依赖包。

  • 拿光盘里的安装包安装(很费劲,还得注意先后顺序,这里不建议使用)

三、配置

  1. 拷贝一份配置文件

查看heartbeat安装目录

rpm -q heartbeat -d
默认安装到/etc/ha.d/目录下没有heartbeat的配置文件,需要从/usr/share/doc/heartbeat-3.0.4/拷贝:

cp /usr/share/doc/heartbeat-3.0.4/haresources /etc/ha.d
cp /usr/share/doc/heartbeat-3.0.4/authkeys /etc/ha.d
cp /usr/share/doc/heartbeat-3.0.4/ha.cf /etc/ha.d
2. 主配置文件ha.cf

主配置文件有300多行,但是真正需要改的就4-5行,其余的保持默认即可。(heartbeat是对内服务的,不像web服务器、ftp服务器等等那样,不需要改很多配置来优化)

以下的配置不用动,可以了解一下配置参数的意义,在需要的时候再改:

参数 说明
debugfile /var/log/ha-debug heartbeat调试日志存放位置
logfile /var/log/ha-log heartbeat日志存放位置
logfacility local0 在syslog服务中配置通过local0设备接受日志
keepalive 2 指定心跳间隔时间为2秒,即每隔两秒在心跳网卡上发一次广播
deadtime 30 指定若备节点在30秒内没有收到主节点的心跳信号,则立即接管主节点的服务资源
warntime 10 指定心跳延迟的时间为10秒。10秒钟内备节点不能接受到主节点的心跳信号时,就会忘日志中写入警告,但此时不会接管服务,直到超过deadtime还是不能接到心跳再接管。
initdead 120 指定在heartbeat首次运行后,需要等待120秒才启动主节点的任何资源服务(托管的那些服务)。该选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍。单机启动会遇到VIP绑定很慢,为正常现象。
udpport 694 设置广播/单播通信使用的端口,694为默认使用的端口号
bcast eth1 指明心跳以广播方式通过以太网卡eth1进行广播,当然为了稳定可以用多个网卡作为心跳网卡,空格隔开即可
ucast eth1 192.168.1.22 采用网卡eth1的udp单播来发送心跳,后面跟的IP地址应为双机对方的IP地址
mcast eth0 225.0.0.1 694 1 0 采用网卡eth0的Udp组播来组织心跳
auto_failback on 主节点恢复之后,是否自动把资源接管回来
node client 主节点的主机名,必须是 uname -n返回的结果
node slave 备节点的主机名,必须是 uname -n返回的结果
ping 192.168.182.1 选择ping的节点来做仲裁,ping节点选择的越好,HA集群就越健壮,我建议用公司专门的ping服务器的IP,如果没有,就用ntp服务器的IP,这个肯定有吧。
crm no 是否开启Cluster Resource Manager(集群资源管理)功能
我采用的是单播的方式: ucast eth1 192.168.1.22

注意我用的不是eth0那块网卡,用的eth1,网卡的名字ifconfig就能看见啦。 后面的IP是双机对端那台机器的eth1那块网卡的ip,也就是192那个。

至于连集群用哪块网卡与你的web服务有关,你的web服务用的哪块网卡,他就会通过那块网卡联集群,如果你的web服务是tomcat,你就可以配置:

Tomcat的conf/server.xml中的Connector提供了针对具体IP绑定的方案

只需要在中添加address的配置即可。

注意你两台web服务器的address别搞成一样的啦。

  1. authkeys(必须600权限)

先chmod 600 authkeys

此文件为认证文件,因为两台机器之间通信需要认证,可选认证方式有三种:

  1. crc
  2. sha1
  3. md5
    默认为crc,不加密,所以不安全,容易被人截获,配置很简单,就两行:

auth 1
1. crc
最安全的是md5,不过内网一般也用不到,不介绍了,本实验就用 crc。

  1. haresources

前面两个配置一次性配好基本就不动了,但是这个配置文件可能经常会改动,非常重要。

里面配置很简单:client IPaddr::192.168.182.200/24/eth0 tomcat

client为主机名,初始状态会在这个主机上绑定VIP,即虚拟IP

IPaddr为heartbeat自带的一个脚本,其后的IP等等是脚本的参数

192.168.182.200/24/eth0为集群对外服务的虚拟IP(VIP或者叫做辅助IP),24为子网掩码,eth0指这个虚拟IP绑定在网卡eth0,这个网卡是数据网卡,不是心跳卡。

client IPaddr::192.168.182.200/24/eth0,整句话的意思是:初始状态时,在client的主机的eth0网卡上绑定虚拟IP192.168.182.200,子网掩码为24。

tomcat为一个脚本,这个脚本必须具有一个功能,就是可以通过给传start/stop参数可以启停某个服务。我这里把这个脚本命名为tomcat,是因为我写的这个脚本可以通过传递start/stop来启动和停止tomcat,你可以改为任意可以识别的名字。这就相当于把tomcat的服务托管给了heartbeat,tomcat可以随着heartbeat启停。

如果有多个服务要托管给heartbeat,只需要把他的管理脚本的名称配置在后面,空格各开。

如果托管的多个服务走不同的虚拟IP就得单起一行去配置。

注意:这里的管理脚本要放到/etc /init.d/或者/etc/ha.d/resource.d/目录下,Heartbeat会根据脚本的名称自动去/etc/init.d或者/etc/ha.d/resource.d/目录下找到相应脚步进行启动或关闭操作。

  1. 管理脚本
usage="Usage: tomcat.sh (start|stop)"
start(){
echo "start"
}
stop(){
echo "stop"
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo $usage
exit 1
;;
esac
exit 0
  1. 设置为开机启动
ln -s  /etc/init.d/heartbeat  /etc/rc.d/rc0.d/K05heartbeat
ln -s  /etc/init.d/heartbeat  /etc/rc.d/rc3.d/S75heartbeat
ln -s  /etc/init.d/heartbeat  /etc/rc.d/rc5.d/S75heartbeat
ln -s  /etc/init.d/heartbeat  /etc/rc.d/rc6.d/K05heartbeat
或者
chkconfig --level 0356 heartbeat on

四、启动和关闭

1.在主节点上启动:/etc/init.d/heartbeat start

2.在备节点上启动:/etc/init.d/heartbeat start

五、使用技巧或者命令

ps -ef|grep heartbeat|grep -v grep
/etc/init.d/heartbeat start/stop
ip add
ping 192.168.182.200 -t(windows下)

a.txt
netstat -lnt
托管脚本必须有执行权限,而且格式必须是unix

阅读更多
个人分类:
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

heartbeat+浮动IP 实现HA——http 、mysql、nfs的双机热备

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭