Heartbeat实现web服务高可用(三)

六:Heartbeat实现WEB服务高可用案例

6.1 部署准备

资源环境:继续使用我们之前已经部署好Heartbeat的两台服务器node01.cn和node02.cn,两台机器heartbeat是双主模式
我们再捋一捋
    node01.cn   eth0 172.10.25.26 外网管理IP
                      eth1 10.25.25.16  心跳直连
                      VIP  172.10.25.18    
    node02.cn   eth0 172.10.25.27 外网管理IP
                      eth1 10.25.25.16  心跳直连
                      VIP  172.10.25.10

6.2 安装配置http服务

我们使用Heartbeat来实现HTTP服务的高可用性,所以直接简单的使用yum安装http,关于Apache、Nginx、Tomcat的详细安装方法参见本博客其他文章

Bash

[[email protected] ~]# yum install httpd -y
[[email protected] ~]# yum install httpd -y

如果开启服务了我们要把它停止,并取消开机启动,交给heartbeat来控制httpd服务的启动与关闭

Bash

[[email protected] ~]# /etc/init.d/httpd stop
[[email protected] ~]# /etc/init.d/httpd stop
[[email protected] ~]# chkconfig httpd off
[[email protected] ~]# chkconfig httpd off
[[email protected] ~]# cd /var/www/html/
[[email protected] html]# echo 172.10.25.26 >index.html
[[email protected] ~]# cd /var/www/html/
[[email protected] html]# echo 172.10.25.27 >index.html

6.3 配置httpd服务启动脚本

在两台机器上分别拷贝httpd启动脚本到/etc/ha.d/resource.d/下。确保具备可执行权限

Bash

[[email protected] ~]# cp /etc/init.d/httpd /etc/ha.d/resource.d/
[[email protected] ~]# cp /etc/init.d/httpd /etc/ha.d/resource.d/

不拷贝过去也是可以的,heartbeat会找到/etc/init.d/下的服务启动脚本
    提示:/etc/ha.d/resource.d/为heartbeat的默认脚本目录

Heartbeat控制的脚本要求
        1、脚本路径要放入/etc/init.d/或/etc/ha.d/resource.d/目录下
        2、脚本执行,需要以/etc/init.d/httpd stop/start的方式
        3、脚本具备可执行权限
        4、脚本名字和配置中的名字一致,如/etc/init.d/httpd名字和IPaddr::172.10.25.18/24/eth0 httpd

6.4 修改haresource配置

node01.cn的配置

Bash

[[email protected] ~]# cd /etc/ha.d/
[[email protected] ha.d]# cp haresources haresources.bk
[[email protected] ha.d]# vim haresources
     node01.cn IPaddr::172.10.25.18/24/eth0 httpd
     node02.cn IPaddr::172.10.25.10/24/eth0 httpd

node02.cn的配置

Bash

[[email protected] ~]# cd /etc/ha.d/
[[email protected] ha.d]# cp haresources haresources.bk
[[email protected] ha.d]# vim haresources
    node01.cn IPaddr::172.10.25.18/24/eth0 httpd
    node02.cn IPaddr::172.10.25.10/24/eth0 httpd

6.5 重启heartbeat,测试实现web高可用

我们重启heartbeat,测试它控制httpd启动,并实现高可用

Bash

[[email protected] ~]# /etc/init.d/heartbeat stop
[[email protected] ~]# /etc/init.d/heartbeat start
[[email protected] ~]# /etc/init.d/heartbeat stop
[[email protected] ~]# /etc/init.d/heartbeat start

Bash

[[email protected] ~]# lsof -i :80
COMMAND     PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
clock-app  4049   root   22u  IPv4 118999      0t0  TCP node01.cn:49022->a23-62-109-161.deploy.static.akamaitechnologies.com:http (CLOSE_WAIT)
httpd     15319   root    8u  IPv6 121255      0t0  TCP *:http (LISTEN)
httpd     15321 apache    8u  IPv6 121255      0t0  TCP *:http (LISTEN)
httpd     15322 apache    8u  IPv6 121255      0t0  TCP *:http (LISTEN)
httpd     15323 apache    8u  IPv6 121255      0t0  TCP *:http (LISTEN)
httpd     15324 apache    8u  IPv6 121255      0t0  TCP *:http (LISTEN)
httpd     15325 apache    8u  IPv6 121255      0t0  TCP *:http (LISTEN)
httpd     15326 apache    8u  IPv6 121255      0t0  TCP *:http (LISTEN)
httpd     15327 apache    8u  IPv6 121255      0t0  TCP *:http (LISTEN)
httpd     15328 apache    8u  IPv6 121255      0t0  TCP *:http (LISTEN)

Bash

[[email protected] ~]# lsof -i :80
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
httpd   15563   root    8u  IPv6 122138      0t0  TCP *:http (LISTEN)
httpd   15565 apache    8u  IPv6 122138      0t0  TCP *:http (LISTEN)
httpd   15566 apache    8u  IPv6 122138      0t0  TCP *:http (LISTEN)
httpd   15567 apache    8u  IPv6 122138      0t0  TCP *:http (LISTEN)
httpd   15568 apache    8u  IPv6 122138      0t0  TCP *:http (LISTEN)
httpd   15569 apache    8u  IPv6 122138      0t0  TCP *:http (LISTEN)
httpd   15570 apache    8u  IPv6 122138      0t0  TCP *:http (LISTEN)
httpd   15571 apache    8u  IPv6 122138      0t0  TCP *:http (LISTEN)
httpd   15572 apache    8u  IPv6 122138      0t0  TCP *:http (LISTEN)

访问页面测试,也可以跟踪日志测试

Bash

INFO:  Success
ResourceManager(default)[15051]:        2016/02/27_23:25:38 info: Running /etc/ha.d/resource.d/httpd  start
Starting httpd: [  OK  ]
ARPING 172.10.25.18 from 172.10.25.18 eth0
Sent 5 probes (5 broadcast(s))
Received 0 response(s)

在windows物理机上添加host解析

C:\Windows\System32\drivers\etc

172.10.25.18    pualinux.org
172.10.25.10    pualinux.org

再访问http://pualinux.org/

如果当前主机出现故障,我们来看看切换访问的页面

Bash

[[email protected] ~]# /etc/init.d/heartbeat stop

这就简单实现web高可用

数据库做高可用要保持数据的一致性,要进行实时的同步,可以结合DRBD使用

其他的细节可以参考hearbeat的脚本及其注释

Bash

/etc/ha.d/rc.d/ip-request
/etc/ha.d/rc.d/ip-request-resp
/etc/init.d/heartbeat
/etc/ha.d/resource.d/IPaddr
/etc/ha.d/resource.d/drbd
/etc/ha.d/resource.d/drbddisk
/etc/ha.d/resource.d/Filesystem
/usr/share/heartbeat/hb_standb
/usr/share/heartbeat/hb_takeover

6.6 有关heartbeat调用资源的生产应用场景

在实际工作中有两种常见的方法实现高可用的方案:
1、heartbeat 可以控制VIP资源的漂移,不负责服务资源的启动与关闭(适合WEB服务)
2、heartbeat 即控制VIP资源的漂移,同时又控制服务的启动与关闭,我们上面的案例就是使用这种。要求IP和服务要切换都切换,弊端就是VIP正常,httpd服务宕掉了,这时不会做高可用切换,这样我们得写个简单的脚本定时或守护进程判断httpd服务是否正常,如果有问题,就停止heartbeat.使其业务转移到另外一台主机上(适合数据库、存储,只有一端写操作)

6.7 使用heartbeat实现httpd高可用小结

1、日志很重要,遇到问题要看日志去排错,不仅仅是heartbeat,其他服务也是
2、单个服务的高可用在生产中比较少,一般web服务方面负载均衡用的多,在负载均衡、主数据库、主存储上使用高可用较多
3、MySQL的高可用实现方式和httpd基本是一样的,只是httpd后端使用了共享存储,所以不需要做数据同步。而mysql后端没有用存储,所以在做高可用之前,要先做好主从,主主同步

6.8 企业生产heartbeat高可用切换说明

1、高可用的切换一般用于主故障备用自动切换接管,快速顶替故障机提供服务的

2、备接管后的善后工作等,最好是人工处理解决

3、不管准备多完善,监控多智能,一般都不会自动切回主库,而是人工控制,因为这个回切是可控的,有时间准备的,而主一挂,备马上自动切换顶替是不可控的

4、 重要的数据业务是不能来回自动切的,即auto_failback off 应该是off状态

5、要根据具体业务具体分析,最好不设置开机启动

6.9 heartbeat和keepalived的应用场景区别

1、对于一般的web、DB、负载均衡(nginx,haproxy)等,heartbeat和keepalived都可以实现
2、LVS负载均衡最好和keepalived结合使用,虽然heartbeat也可以调用带有ipvsadm命令的脚本来启动或停止LVS负载均衡,但heartbeat本身没有对下面节点RS的健康检查功能,不过也可以通过ldircetord插件来弥补。heartbeat+lvs+ldirectord
3、需要数据同步(配合drbd)的高可用业务最好用heartbeat.如mysql双主多从,nfs/mfs存储,他们的特点都是需要数据同步,这样的业务最好用heartbeat,因为heartbeat自带了drbd的脚本,可以利用强大的drbd同步软件配合实现同步。当然如果你数据同步不使用drbd,使用其他共享存储(inotify+rsync,sersync+rsync),也可以考虑使用keepalived
4、根据自身对哪个软件使用更熟悉决定

http://www.linux-ha.org/doc/users-guide/users-guide.html

时间: 2024-10-05 05:26:44

Heartbeat实现web服务高可用(三)的相关文章

Heartbeat实现web服务高可用

在之前的部署过程中,成功的部署并配置了heartbeat,而且也能实现两节点之间VIP的高可用,这里来配置并实现httpd服务的高可用. 一.安装Apache 两台heartbeat节点服务器都先停止heartbeat服务. /etc/init.d/heartbeat stop 分别在heartbeat01和heartbeat02上安装httpd服务 yum -y install httpd 分别在两个节点上执行 echo $HOSTNAME >>/var/www/html/index.htm

高可用集群技术之heartbeat+NFS实现web服务高可用(文本方式配置接口--gui图形配置)

一.高可用集群基本概念   什么是高可用技术呢?在生产环境中我既要保证服务不间断的服务又要保证服务器稳定不down机,但是异常还是会发生,比如说:服务器硬件损坏...导致服务器down机,我该如何保证服务器down机后继续提供服务呢?这时我就应该请出高可用技术来帮忙了,当我们的服务器发生故障后不能继续时,高可用集群技术解决将业务及服务自动转移至其他主机服务器上继续服务,保证服务架构不间断运行. 高可用集群的架构层次: 后端主机层: 这一层主要是正在运行在物理主机上的服务. 2.Message l

用Heartbeat实现web服务器高可用

用Heartbeat实现web服务器高可用 heartbeat概述: Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能. 端口号:694 1)heartbeat的工作原理: heartbeat最核心的包括两个.部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来告诉对方自己

Heartbeat实现web服务器高可用

一.Heartbeat概述: Heartbeat的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务. Heartbeat-3.X版本以后被分为了4个模块,这些安装包都可以从官网: http://www.linux-ha.org/wiki/Downloa

HAProxy+KeepAlived实现web服务高可用、动静分离等

大致规划: 主机 IP 描述 VIP 192.168.0.222 对外提供高可用IP haproxy+keepalived (node1) 192.168.0.111 haproxy为后端两台WEB服务的做动静分离:keepalived为haproxy做高可用. haproxy+keepalived (node2) 192.168.0.112 WEB                (node3) 192.168.0.113 提供静态请求响应 Apache+PHP+MySQL   (node4)

corosync+pacemaker+drbd实现web服务高可用

一:实验环境    节点      OS      IP  DRBD_IP  DRBD用硬盘     VIP web1 centos 5.10 192.168.10.11 172.16.1.1 /dev/sdb 192.168.10.100 web2 centos 5.10 192.168.10.12 172.16.1.2 /dev/sdb 注: 1.其中两节点IP地址已按上图设置好 2.两节点已配置相互ssh信任,并已做了时间同步 二:安装相关软件(节点1和2都安装) 1.安装corosync

corosync+pacemaker实现web服务高可用

前提: 本配置共有两个测试节点,分别node1和node2,相的IP地址分别为202.207.178.6和202.207.178.7 (为避免影响,先关闭防火墙和SElinux) 一.安装配置corosync及相关软件包 1.准备工作 1)节点名称必须跟uname -n命令的执行结果一致 node1: # hostname node1 # vim /etc/sysconfig/network HOSTNAME=node1 node2: # hostname node2 # vim /etc/sy

heartbeat + httpd + nfs 实现高可用web服务器

一  环境准备 二 拓扑结构 三 前提条件 四 安装相关软件 五 配置heartbeat 六 测试web集群 七 问题汇总 八 共享存储 一 环境准备 操作系统 centos 6.4 x86_64  最小化安装 如使用yum 安装的方式 centos5.5 安装的是V2.X   ,centos 6.4 安装的是V3.X YUM 安装   Vim  man   ntp  "development tools" "server platform development"

heartbeat 配置两台web服务器高可用集群案例

通过heartbeat 配置两台web服务器高可用集群案例: 拓扑: web1:192.168.0.101 hostname: web1.example.com web2:192.168.0.102 hostname:web2.example.com vip:192.168.0.254 nfs服务器:192.168.0.100(存放web页面) 注意: 1主机名要与uname -n 保持一致 2.web1与web2主机的date时间保持同步 3.web1与web2,ssh双机互信通信 4.关闭i