heartbeat每台机器需要2块网卡,第二块用于心跳检测,用网线直连。
系统信息:
主机名 系统版本 物理IP 心跳接口IP
primary centos6.5×64 eth0 192.168.0.175 eth1 10.10.10.1
backup centos6.5×64 eth0 192.168.0.176 eth1 10.10.10.2
虚拟IP(VIP): 192.168.0.177 提供服务
iptables 关闭,selinux关闭。
实现目标:
用heartbeat对apache进行高可用管理,首先yum安装httpd,添加测试页。
primary: echo primary > /var/www/html/index.html backup: echo backup > /var/www/html/index.html
关闭两台机器的httpd服务。由heartbeat控制服务状态。
primary配置:
修改两台机器的host文件加入主机名和ip映射:
192.168.0.175 primary 192.168.0.176 backup
安装heartbeat:
[root@primary ~]# yum install -y epel-* #epel源 [root@primary ~]# yum install -y heartbeat
默认会安装到/etc/ha.d/下,需要三个配置文件ha.cf、haresources、authkeys。
这三个配置文件不会被创建,需要从/usr/share/doc/heartbeat-3.0.4/下拷贝过去。
[root@primary ha.d]# cp /usr/share/doc/heartbeat-3.0.4/ha.cf . [root@primary ha.d]# cp /usr/share/doc/heartbeat-3.0.4/haresources . [root@primary ha.d]# cp /usr/share/doc/heartbeat-3.0.4/authkeys .
配置ha.cf:
logfacility local0 # 日志记录等级 keepalive 1 #心跳频率,2表示2秒;200ms则表示200毫秒 deadtime 5 #节点死亡时间,就是过了10秒后还没有收到心跳就认为主节点死亡 warntime 10 #告警时间 initdead 30 #初始化时间 udpport 694 #心跳信息传递的udp端口 ucast eth1 10.10.10.2 #在eth1接口采用udp单播来通知备份机(10.10.10.2)心跳信息 auto_failback off #如果主节点重新恢复,主节点将抢占资源恢复服务,如果为off,则只当备用节点当掉后,主节点恢复 watchdog /dev/watchdog #如果本节点在超过1分钟后还没有发出心跳,那么本节点自动重启 node primary #主节点名称,与主机名一致 node backup #备用节点名称 ping 10.10.10.254 #通过ping来监测心跳是否正常
配置haresources:
primary IPaddr::192.168.0.177/24/eth0 httpd
配置authkeys(身份认证,主备必须一样):
auth 3 3 md5 hello
修改authkeys权限:
[root@primary ha.d]# chmod 600 authkeys
把三个配置文件复制到备份机上:
[root@primary ha.d]# scp ha.cf haresources authkeys root@192.168.0.176:/etc/ha.d/ root@192.168.0.176's password: ha.cf 100% 10KB 10.3KB/s 00:00 haresources 100% 5950 5.8KB/s 00:00 authkeys 100% 665 0.7KB/s 00:00
修改备份机的ha.cf中ucast参数。
ucast eth1 10.10.10.1 #把10.2改为10.1,在eth1接口采用udp单播来通知主机(10.10.10.1)心跳信息
两台机器,启动heartbeat服务:
[root@primary ha.d]# /etc/init.d/heartbeat start [root@backup ha.d]# /etc/init.d/heartbeat start
查看状态:
主:
[root@primary ~]# /etc/init.d/heartbeat status heartbeat OK [pid 5142 et al] is running on primary [primary]... [root@primary ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:50:56:bf:77:dc brd ff:ff:ff:ff:ff:ff inet 192.168.0.175/24 brd 192.168.0.255 scope global eth0 inet 192.168.0.177/24 brd 192.168.0.255 scope global secondary eth0 inet6 fe80::250:56ff:febf:77dc/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:50:56:bf:69:87 brd ff:ff:ff:ff:ff:ff inet 10.10.10.1/16 brd 10.10.255.255 scope global eth1 inet6 fe80::250:56ff:febf:6987/64 scope link valid_lft forever preferred_lft forever
备:
[root@backup ~]# /etc/init.d/heartbeat status heartbeat OK [pid 7724 et al] is running on backup [backup]... [root@backup ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:50:56:bf:09:c7 brd ff:ff:ff:ff:ff:ff inet 192.168.0.176/24 brd 192.168.0.255 scope global eth0 inet6 fe80::250:56ff:febf:9c7/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:50:56:bf:38:29 brd ff:ff:ff:ff:ff:ff inet 10.10.10.2/16 brd 10.10.255.255 scope global eth1 inet6 fe80::250:56ff:febf:3829/64 scope link valid_lft forever preferred_lft forever
关闭primary的服务,查看备机,vip已发生漂移,并且httpd服务跟随启动。
PS:
haresources配置文件详解(转自网络):
haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址以及启动的服务等集群资源。
文件每一行可以包含一个或多个资源脚本名,资源之间使用空格隔开,参数之间使用两个冒号隔开,在两个HA节点上该文件必须完全一致。
此文件的一般格式为:
node-name network <resource-group>
node-name表示主节点的主机名,必须和ha.cf文件中指定的节点名一致。
network用于设定集群的IP地址、子网掩码和网络设备标识 等。需要注意的是,这里指定的IP地址就是集群对外服务的IP地址。
resource-group用来指定需要Heartbeat托管的服务,也就是这些服务可以由Heartbeat来启动和关闭。
如果要托管这些服务,就必须将服务写成可以通过start/stop来启动和关闭的脚步,然后放到/etc /init.d/或者/etc/ha.d/resource.d/目录下。
Heartbeat会根据脚本的名称自动去/etc/init.d或者/etc /ha.d/resource.d/目录下找到相应脚步进行启动或关闭操作。
下面对配置方法进行具体说明:
node1 IPaddr::192.168.60.200/24/eth0/ Filesystem:: /dev/sdb5::/webdata::ext3 httpd tomcat
其中,node1是HA集群的主节点,IPaddr为heartbeat自带的一个执行脚本,Heartbeat首先将执行/etc/ha.d/resource.d/IPaddr 192.168.60.200/24 start的操作,
也就是虚拟出一个子网掩码为255.255.255.0,IP为192.168.60.200的地址。此IP为Heartbeat对外提供服务的网络地址,同时指定此IP使用的网络接口为eth0。
接着,Heartbeat将执行共享磁盘分区的挂载操作,”Filesystem::/dev/sdb5::/webdata::ext3″相当于在命令行下执行mount操作,即”mount -t ext3 /dev/sdb5 /webdata”。
最后依次启动httpd和Tomcat服务。
注意 主节点和备份节点中资源文件haresources要完全一样。
原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/3263.html