ubuntu下基于HeartBeat的双机热备
双机保障(热备)实现系统高可用性

双机保障(热备)实现系统高可用性1.背景随着当前网络的快速发展,很多传统的服务已经转移到网络环境中实施,例如数据存储、金融交易、企业管理、通信传输等,当前大部分服务都是采用中心服务器的模式。
网络环境的脆弱性,导致中心服务器出现故障的几率比较大。
因为在网络环境下,导致服务器故障的原因是错综复杂,无法预测的,例如网络攻击、电缆断线、操作系统故障、软件故障、设备故障等。
一旦服务器出现故障,那么所提供的服务就会被中断一段较长的时间。
一般地讲,在技术人员在现场的情况下,恢复服务器正常可能需要10分钟、几小时甚至几天。
从实际经验上看,除非是简单地重启服务器(可能隐患仍然存在),否则往往需要几个小时以上。
而如果技术人员不在现场,则恢复服务的时间就更长了。
因此,服务器提供服务的持续性是得不到保证的。
但是,对于一些企业级应用来说,用户是很难忍受这样长时间的服务中断的,保证系统能够持续地、稳定地提供服务至关重要。
对于某些执行关键使命的系统,甚至要求系统能够具备365×24不停顿运行的能力。
因此,出现了高可用性的需求和方案。
HIFN实验室在研究UTM(统一威胁管理)平台时,采用了一种“双机热备”的技术方案保证UTM系统的高可用性。
该UTM平台采用了HIFN HPM模式匹配算法来完成内容过滤和病毒扫描,并使用了HIFN FlowThrogh IPSec加速卡来实现VPN。
以下笔者将会结合该UTM平台详细介绍这种“双机热备”式的高可用性技术方案。
2.概述双机热备技术,概括地说,就是使用两台服务器,通过即时备份数据的方式,实现系统的高可用性。
其基本原理是这两台服务器,一台处于active状态,称为主服务器,一台处于standby状态,称为备用服务器。
在正常情况下,由处于active状态的主服务器提供服务,当主服务器出现故障时,处于standby状态的备用服务器被激活,接替主服务器继续提供服务。
而整个过程无需人工干预,在短时间内自动完成服务接管。
双机热备安装部署方案(heartbeat pacemaker)

双机热备安装部署方案(heartbeat 3.x +pacemaker)by——商胜前言双击热备用一句通俗易懂的话来说就是避免服务器因临时故障而导致服务中断的一种备份技术,这也就是所谓的高可用性。
本文主要是用heartbeat来针对resin下的服务做服务热备。
例如,在resin下现有三个服务server1 、server2 、server3 以及访问这三个服务的虚拟ip——vip:10.3.255.36 。
现在的需求是要保证这三个服务的高可用性,即当三个服务中的任何一个宕掉了以后,heartbeat首先要做的是判断这些服务是否有故障的,如果存在有故障的服务,heartbeat首先会在本机重启该故障服务,一旦该服务无法启动,则停止本机的server1、server2 、server3,切换虚拟ip到从机并在从机上启动这三个服务。
一.测试环境搭建测试环境说明:操作系统:Red Hat Enterprise Linux Server release 5.4 (Tikanga) 64位操作系统Heartbeat版本:heartbeat-3.0.3-2 附录中有heartbeat简介以及版本说明操作系统配置主服务器备用服务器主机名HB_Node01 HB_Node02Ip Eth0: 10.3.43.99Eth1: 192.168.254.12 Eth0: 10.3.43.99Eth1: 192.168.254.12vip 10.3.43.101(由heartbeat中生成)添加用户、用户组添加用户:hacluster useradd -M hacluster添加用户组:haclient groupadd haclient并且hacluster 属于用户组haclient usermod -G haclient hacluster主机名配置方式:设置主机名[root@localhost ~]# hostname HB_Node01[root@localhost ~]# vi /etc/hosts[root@localhost ~]# vi /etc/sysconfig/networkIp配置方式配置ip[root@HB_Node01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 [root@HB_Node01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1(这里给出的是命令行配置方式,也可以进入图形界面进行配置)注意的问题:配置外网ip时配置默认网关,但在配置heartbeat1之间通信的ip时网关不要配置,因为这里再配置网关则会覆盖之前配置的默认网关导致通信异常。
双机热备+负载均衡线上方案(Heartbeat+DRBD+NFS+Keepalived+Lnmp)

/thread-3689681-1-1.html我们下面来实现一个架构,heartbeat+drbd+nfs实现mysql和网站数据的同步,keepalived 实现nginx的高可用,而用nginx和dns轮询实现负载均衡。
架构说明目录规划/usr/local/src/lnmp:用来存放源码工具等等/data:用来存放所有数据和NFS以及DRBD的挂载/data/shell:用来存放所有管理脚本/data/mysql:用来挂载DRBD的mysql资源,以供mysql存放数据库/data/wwwnfs:用来挂载DRBD生成的www资源,以供两个节点挂载到各个节点的/data/www 目录,以供论坛等程序数据使用/data/www:用来挂载NFS资源,用来存放论坛(网站)等程序数据拓扑工作原理内网:1,DRBD网络存储创建出两个资源,一个mysql给mysql数据库同步用,一个www给web(论坛)数据NFS共享挂载用,虚拟出两个虚拟IP,一个是 192.168.1.100,用来连接数据库,一个是192.168.1.200,用来给节点挂载NFS注意:NFS底下挂载了三次:DRBD挂载一次,文件系统挂载一次,客户端挂载一次2,Heartbeat来实现DRBD的HA,同时虚拟出两个内网IP,并管理NFS,MySQL的启动和关闭外网:1,两个节点都用Nginx做均衡器,通过内网调度负载两个节点,实现内部均衡2,DNS配置双IP对应一个域名的方式来实现DNS轮询,实现外网均衡3,Keepalived使用双主(master)配置虚拟出两个虚拟IP:节点一 12.12.12.100和节点二12.12.12.200,同时共外网访问,两个节点互为主从关系,当某个节点挂掉的时候,另外一个节点将同时是两个资源的master,同时拥有两个虚拟IP,实现资源转移。
我们知道DNS的缺点就是生效慢,分配资源不合理,理论上有可能把所有的请求都发送给同一节点,导致均衡不合理导致所有资源不可用,这里我们由于有了NGINX内部负载,就不怕DNS轮询不均衡了,因为NGINX内部有严谨的调度方式,不管那台请求有多少,在内部都能实现理想的调度,这样就能把 DNS负载均衡和NGINX完美结合,是硬件资源得到合理的利用,然后利用keepalive保证了每个节点的可靠性,几乎完美!拓扑图如下:架构实现LNMP架构配置配置LNMp架构需要注意两点:注意一:这里MYSQL都不要初始化,不要启动!后面有专门的配置的注意二:nginx所有端口都改成 8080,因为一会还要安装nginx来做均衡器并对外提供服务,所以不要用默认的80注意三、nginx和php-fpm运行的用户都是www。
双机热备解决方案

双机热备解决方案简介双机热备是一种常见的高可用性解决方案,通过在两台服务器之间进行数据同步和状态同步,实现在主服务器故障时快速切换到备服务器,从而确保系统的持续可用性。
在本文档中,将介绍双机热备的原理、实施步骤和常见问题解决方案。
原理双机热备的原理是将主服务器和备服务器通过网络连接起来,通过定期同步数据和状态,以便备服务器能够准确地为主服务器提供备份服务。
当主服务器出现故障时,备服务器将立即接管主服务器的工作,并提供相同的服务,以保证系统的可用性。
具体的原理如下: 1. 主服务器和备服务器通过一个交换机或路由器进行网络连接。
2. 定期将主服务器的数据和状态同步到备服务器上,可以使用文件同步工具、数据库复制等技术实现。
3. 备服务器处于待命状态,随时可以接管主服务器的服务。
4. 当主服务器出现故障时,备服务器立即接管主服务器的服务,并通知管理员进行处理。
实施步骤要实施双机热备解决方案,需要进行以下步骤:步骤一:选取适合的硬件设备为了实现双机热备,首先需要选取适合的硬件设备,例如服务器、网络交换机等。
这些硬件设备应具备高可靠性和性能。
步骤二:配置网络环境在选取合适的硬件设备后,需要配置网络环境。
主服务器和备服务器应通过可靠的网络连接起来,并保证网络延迟较低和带宽较大,以确保数据和状态的快速同步。
步骤三:选择并配置数据同步及状态同步方式选择和配置合适的数据同步和状态同步方式是双机热备的关键。
可以根据具体需求选择文件同步工具、数据库复制等技术来实现数据和状态的同步。
步骤四:验证双机热备方案在配置完数据同步和状态同步后,需要进行验证双机热备方案是否生效。
可以通过模拟主服务器故障的方式来验证备服务器是否能够成功接管主服务器的服务。
步骤五:监控和管理备服务器在双机热备方案生效后,需要对备服务器进行监控和管理。
通过实时监控备服务器的状态和性能,及时发现和解决问题,确保备服务器的可靠性和可用性。
常见问题解决方案在实施双机热备方案过程中,可能会遇到一些常见的问题。
Linux系统双机热备的方案

Linux系统双机热备的⽅案Linux系统双机热备的⽅案⽬前,双机和集群采⽤的操作系统主要有UNIX、Linux、BSD及微软公司的Windows NT/2000。
随着Linux的迅速发展,稳定性、安全性及功能的不断增强,⼈们对Linux的使⽤越来越⼴泛,Linux已成为服务器市场中的⼀个重要操作系统,基于Linux的双机和集群系统也越来越多。
Linux集群的主要优点有:⾼可靠性、⾼性能、低成本等等。
1.1 概述1.1.1 实现⽬的双机热备份(Hot Standby)是⼀种软硬件相结合的⾼可靠性应⽤⽅案。
双机热备系统由两台独⽴的服务器以及相应的控制软件构成,两台服务器在⽹络中表现为单⼀的系统,对外表现为⼀个独⽴的⽹络IP,并以单⼀系统的模式进⾏控制和管理。
该系统将两台服务器的数据和运⾏状态(包括硬盘数据和内存数据)进⾏镜像,可以实现两台服务器之间的热备份,并能够做到⽆缝切换,从⽽对外提供稳定可靠的服务,实现双机系统的⾼可⽤性解决⽅案。
1.1.2 功能概述双机热备份系统由相应的应⽤软件进⾏控制,操作系统和应⽤程序安装在两台服务器的系统盘上。
每⼀台服务器分配⼀个固定的IP地址,此外还指定了⼀个独⽴IP地址作为集群IP(cluster IP),该IP是双机系统对外提供服务的接⼝。
两台服务器⼀台成为主节点(Primary Server),另⼀台成为从节点(Standby Server),主节点与从节点之间保持固定时间间隔的⼼跳信号,通过⼼跳信号实现两个对等系统之间的周期性的握⼿,从⽽能够监视对⽅的运⾏状态,进⾏主机及⽹络的故障检测。
在系统正常情况下,主节点占⽤系统资源并运⾏所有的服务,为信息系统提供⽀持,从节点通过⼼跳信号监视主节点的运⾏情况。
⼀旦主节点发⽣故障(如主机故障,⽹络故障,软件故障等),从节点就会⾃动接管(Take Over)主节点的资源和服务,继续⽀持信息的运营,从⽽保证整个双机系统能够不间断的运⾏(Non-Stop)。
双机热备原理

双机热备原理
双机热备原理是指在计算机系统中,通过两台服务器实现热备份,以保证系统在一台服务器发生故障时能够快速切换到另一台服务器,从而保证系统的高可用性和可靠性。
首先,双机热备系统需要两台服务器,它们之间通过网络连接,实现数据同步和通讯。
在正常情况下,两台服务器同时工作,共同承担系统的负载。
其中一台服务器充当主服务器,负责处理用户的请求和数据操作,另一台服务器则作为备用服务器,实时接收主服务器的数据同步,并保持与主服务器的数据一致性。
其次,双机热备系统中的关键技术是心跳检测和自动切换。
心跳检测是指主备服务器之间定时发送心跳信号,用于检测对方的状态。
一旦主服务器发生故障,备用服务器能够通过心跳检测感知到主服务器的异常,并立即接管主服务器的工作,实现自动切换,从而保证系统的连续性和稳定性。
另外,双机热备系统还需要具备数据同步和故障恢复的能力。
数据同步是指备用服务器需要实时接收主服务器的数据更新,以保证数据的一致性。
而在主服务器发生故障时,备用服务器需要快速接管主服务器的工作,同时保证数据的完整性和准确性,从而实现系统的快速恢复。
总的来说,双机热备原理通过两台服务器之间的数据同步和自动切换实现了系统的高可用性和可靠性。
它能够有效地避免单点故障,提高系统的容错能力,保证用户的正常使用。
因此,在大型企业和关键系统中,双机热备系统被广泛应用,成为保障系统稳定运行的重要手段之一。
服务器双机热备解决方案

服务器双机热备解决方案服务器双机热备解决方案是一种为服务器提供高可用性和容错能力的解决方案。
通过使用两台服务器进行镜像备份和故障切换,可以实现在主服务器故障时无缝地切换到备份服务器,确保系统的连续可用性。
以下是一个详细的服务器双机热备解决方案。
1. 硬件配置:首先,选择两台具备相同规格和配置的服务器作为主备服务器,确保它们具备相同的处理能力、存储容量和网络连接性能。
在服务器之间建立高速互联通道,如双机网卡冗余链接(Multiple Network Interface Redundancy)或光纤通道(Fibre Channel),确保数据传输的稳定和可靠性。
2.系统镜像备份:在主服务器上完成系统的安装和配置后,制作主服务器的系统镜像,并定期更新备份服务器的系统镜像。
可以使用备份软件或快照工具来实现系统镜像的制作和恢复。
3. 数据同步:使用数据复制技术实现主备服务器之间数据的实时同步。
常用的数据同步方式包括同步复制(Synchronous Replication)和异步复制(Asynchronous Replication)。
在同步复制中,主服务器将数据写入备份服务器之前,需要确认数据已经被写入备份服务器。
而在异步复制中,主服务器将数据写入备份服务器后马上返回,不等待备份服务器的确认。
根据需求和实际情况选择适当的数据同步方式。
4. 心跳检测:为了监测主备服务器的状态并确保高可用性,需要在主备服务器之间建立心跳检测机制。
心跳检测可以通过心跳包(Heartbeat)或集群管理软件实现。
当主服务器发生故障时,备份服务器可以通过接收不到心跳信号来判断主服务器的故障,并开始服务切换过程。
5. 故障切换:主服务器发生故障后,备份服务器需要尽快接管主服务器的工作。
在故障切换过程中,需要确保数据的一致性和完整性。
可以通过一些技术手段来实现故障切换,如虚拟IP(Virtual IP)、磁盘共享(Shared Disk)或共享文件系统(Shared File System)等。
双机热备份配置手册-37页精选文档

Nginx+keepalived+heartbeat双机热备份配置手册正文目录1 双机热备简介 (3)2 双机热备安装与配置 (4)2.1 安装环境和软件版本说明 (4)2.2 系统安装 (4)2.3 JDK环境安装配置 (4)2.4 MYSQL安装配置 (6)2.4.1 基本安装配置 (6)2.4.2 数据库双机互备 (7)2.5 反向代理服务器NGINX的安装配置 (9)2.6 KEEPALIVED安装配置 (13)2.7 HEARTBEAT的安装配置 (15)2.8 APACHE-TOMCAT安装配置 (18)3 CENTOS下安装配置的改动 (20)3.1 NGINX (20)3.2 KEEPALIVED (23)3.3 HEARTBEAT (26)3.4 添加SHELL脚本 (29)1 双机热备简介双机热备及负载均衡配置图如下所示2 双机热备安装与配置2.1 安装环境和软件版本说明系统:Linux Ubuntu 10.10JDK环境:jdk-6u31-linux-i586方向代理服务器Nginx:nginx-0.7.67探测服务器状态软件Keepalived:keepalived-1.1.17Web服务器:Apache-tomcat:apache-tomcat-6.0.35数据库MySQL:mysql-5.1.612.2 系统安装2.3 JDK环境安装配置1 、安装jdk 程序最新版本jdk: jdk-6u31-linux-i586.bin进入usr 目录: cd /usr在当前目录创建目录java : mkdir java将jdk 安装文件复制到java 目录下:cp /usr/software/ jdk-6u31-linux-i586.bin /usr/java给安装程序赋予权限:chmod +x jdk-6u31-linux-i586.bin 执行安装命令:./ jdk-6u31-linux-i586.bin安装成功后,在java 目录下会出现jdk1.6.0_31 的目录。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Ubuntu下基于HeartBeat的双机热备
1. 步骤
1.1 准备实验环境
在VMware WorkStation 上安装两个操作系统为Ubuntu 10.10的双网卡主机,主机硬件配置如下图1.1:
图1.1 主机配置
其中需要注意的是其中Network Adapter为“桥接”模式(Bridged),Network Adapter 2为自定义模式(Custom),接在VMNET2 上,如图1.2:
图1.2 Network Adapter 2设置
逻辑拓朴:
Ubuntu1
eth0网卡对应外网ip 192.168.0.128 255.255.255.0 192.168.0.1
eth1网卡对应内网ip 192.168.1.2 255.255.255.0 192.168.1.1
Ubuntu2
eth0网卡对应外网ip 192.168.0.130 255.255.255.0 192.168.0.1
eth1网卡对应内网ip 192.168.1.3 255.255.255.0 192.168.1.1
cluster
虚拟集群ip 192.168.0.129
其中集群IP 不能和LAN(包括本机)的IP 冲突,并且不能在除/etc/ha.d/haresources文件以外的任何地方配置
1.2 HeartBeat 的配置
HeartBeat的安装命令为
# apt-get install heartbeat
安装后在/usr/share/doc/heartbeat目录里找到ha.cf、haresources、authkeys三个文件并放到/etc/ha.d 目录下。
另外建议安装apache2
# apt-get install apache2
1.2.1 Authkeys 文件配置
修改配置文件如下:
auth 3
3 md5 Hello! #其中Hello!为密钥
这个配置文件非常简单,就是在auth 选择一个值。
每个值对应一种算法,这个算法用于主节点和从节点间数据校验
这个配置文件权限必须是0600。
# chmod 0600 authkeys
1.2.2 ha.cf 文件配置
修改配置文件如下:
#日志文件位置
logfile /var/log/ha-log
#采用eth1 的udp 广播用来发送心跳信息
bcast eth1
auto_failback on /off #设置主服务器从故障中恢复时,是自动把服务从备份服务器中切换过来(on),还是继续由备份服务器提供服务直到手动干预(off)
# 多长时间判定节点死亡,默认30秒
deadtime 10
#节点名称,先后顺序不重要,但是名称必须与uname -n 保持一致
node Ubuntu1
node Ubuntu2
想修改主机名的话要修改/etc/hostname文件并重启
1.2.3 haresources 文件配置
此文件用于配置集群的IP 和使用集群的服务
#配置方式一(HA 服务启动时将集群IP 自动配置到主节点上)
Ubuntu1 192.168.0.129/24/eth0
#配置方式二(让apache 服务和集群ip地址绑定)
Ubuntu1 192.168.0.129/24/eth0 apache2
其中Ubuntu1为主机名,可以通过uname –n查看;192.168.0.129为集群ip,24为掩码
本实验采取配置方式二,即把apache2 服务与集群绑定。
1.2.4 其他可选配置
heartbeat 的三个配置文件中还有一些其它可配置项,请自行参考官方文档。
启动heartbeat服务
#service heartbeat start
如图2.1可以看到集群IP 自动配置到主节点Ubuntu1上了,而ubuntu2则没有(图2.2),并且集群ip已经可以访问(图2.3)
图2.1 Ubuntu1的eth0网卡信息
图2.2 Ubuntu2的eth0网卡信息
图2.3 访问集群ip效果
模拟Ubuntu1宕机,我们可以停止heartbeat服务
#service heartbeat stop
查看日志文件(/var/log/ha-log)
Nov 24 23:19:52 Ubuntu2 heartbeat: [1620]: WARN: node ubuntu1: is dead
mach_down[2020]: 2010/11/24_23:19:52 info: Taking over resource group 192.168.0.129/24/eth0
ResourceManager[2045]: 2010/11/24_23:19:52 info: Acquiring resource group: Ubuntu1 192.168.0.129/24/eth0 apache2
IPaddr[2072]: 2010/11/24_23:19:53 INFO: Resource is stopped
ResourceManager[2045]: 2010/11/24_23:19:53 info: Running /etc/ha.d/resource.d/IPaddr 192.168.0.129/24/eth0 start
IPaddr[2154]: 2010/11/24_23:19:53 INFO: Using calculated netmask for 192.168.0.129: 255.255.255.0
IPaddr[2154]: 2010/11/24_23:19:53 INFO: eval ifconfig eth0:0 192.168.0.129 netmask 255.255.255.0 broadcast 192.168.0.255
IPaddr[2130]: 2010/11/24_23:19:53 INFO: Success
mach_down[2020]: 2010/11/24_23:19:53 info: /usr/share/heartbeat/mach_down: nice_failback: foreign resources acquired
可以看到,节点2发现节点1异常,然后自动将集群IP配置给自己,并向全网发送广播,于是集群ip依然能够访问
3.体会
一开始的时候按照参考资料《利用VMware 实验基于heartbeat 的Debian Linux 高可用性集群服务v1.0》把haresources文件
配置成Ubuntu1 192.168.0.129 apache2
结果两个节点ifconfig eth0:0输出中都没有看到集群虚拟IP地址192.168.0.129,也打不开网页http://192.168.0.129
通过查看日志文件可以发现执行IPaddr 192.168.0.129 start的时候出错了
ResourceManager[2799]: 2010/11/24_05:05:59 info: Running /etc/ha.d/resource.d/IPaddr 192.168.0.129 start
IPaddr[2884]: 2010/11/24_05:05:59 ERROR: /usr/lib/heartbeat/findif failed [rc=1].
IPaddr[2872]: 2010/11/24_05:05:59 ERROR: Generic error
ResourceManager[2799]: 2010/11/24_05:05:59 ERROR: Return code 1 from /etc/ha.d/resource.d/IPaddr
ResourceManager[2799]: 2010/11/24_05:05:59 CRIT: Giving up resources due to failure of 192.168.0.129
ResourceManager[2799]: 2010/11/24_05:05:59 info: Releasing resource group: Ubuntu1 192.168.0.129
ResourceManager[2799]: 2010/11/24_05:05:59 info: Running /etc/ha.d/resource.d/IPaddr 192.168.0.129 stop
IPaddr[2957]: 2010/11/24_05:05:59 INFO: Success
通过网上搜索该错误,终于发现是ipaddr去绑定IP地址时,用/usr/lib/heartbeat/findif找网络接口时失败了,解决方法如下:
haresources文件配置成Ubuntu1 192.168.0.129/24/eth0 apache2。