HA(High available)--Heartbeat高可用性集群(双机热备)菜鸟入门级
HA(High available)--Heartbeat高可用性集群(双机热备)
1.理解:两台服务器A和B ,当A提供服务,B闲置待命,当A服务宕机,会自动切换至B机器继续提供服务。当主机恢复正常后,按照使用者设定的自动或手动切换到主机上运行,数据一致性通过共享存储系统解决。
2.实现该功能的软件有:Heartbeat , keepalived(具有负载均衡的能力)
3.结构图
HA-Heartbeat
实验:以hearbeat为例,来做HA集群,并把nginx服务作为HA对应的服务
关闭防火墙:iptables -F service iptables save
关闭selinux: setenforce 0 ,getenforce 查看,vim /etc/selinux/conf 修改,保存退出。
配置网卡:
master --eth1 192.168.2.105
slave --eth1 192.168.2.106 eth1作为心跳线 作用:探测对方主机服务是否存活。
master --eth0 192.168.1.105
slave --eth0 192.168.1.106 eth0为流动ip 又称VIP 对外提供服务。
操作:A:
hostname =master
vim /etc/sysconfig/network
HOSTNAME=master
vim /etc/hosts
192.168.1.105 master
192.168.1.106 slave
操作:B:
hostname =slave
vim /etc/sysconfig/network
HOSTNAME=slave
vim /etc/hosts
192.168.1.105 master
192.168.1.106 slave.
A,B同时安装epel扩展源 (安装扩展源后yum报错解决linux 小记[2])
wget www.lishiming.net/data/attachment/forum/epel-release-6-8_64.noarch.rpm
rpm -ivh epel-release-6-8_64.noarch.rpm
A,B同时安装hearbeat 及扩展libnet 和准备测试的nginx
yum install -y heartbeat* libnet nginx
A机:切换到安装目录拷贝文件到/etc/ha.d下
cd /usr/share/doc/heartbeat-3.0.4/
cp authkeys ha.cf haresources /etc/ha.d/
切换目录到/etc/ha.d编辑配置
cd /etc/ha.d/
vim authkeys
auth 3 验证级别
3 md5 Hello! 加密方式
并且赋予600读写权限给root
chmod 600 authkeys
vim haresources
master 192.168.1.106/24/eth0 nginx [流动ip 即vip master 主机名 nginx 服务,可以是其他服务。]
vim ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
ucast eth1 192.168.2.106 对方ip
auto_failback on
node master
node slave
ping 192.168.2.1
respawn hacluster /usr/lib64/heartbeat/ipfail 如果是32系统切记lib64改为lib
ha.cf 文件详解
debugfile /var/log/ha-debug 故障调试log
logfile /var/log/ha-log log文件
logfacility local0 日志级别
keepalive 2 探测周期 2s
deadtime 30 检测死亡时间 30s
warntime 10 启动警告记录时间 10s
initdead 60 重启预留时间60s
udpport 694 心跳线通讯端口
ucast eth0 192.168.0.161 对方的ip ,也可使用 bcast 即广播的方式寻找 ,最好串口线或者使用单独网卡
auto_failback on 从机启动后探测到主机存活是否返回设置
node master
node slave 两个node机器
ping 192.168.0.1 仲裁者 路由器或者交换机来充当
respawn hacluster /usr/lib/heartbeat/ipfail 防止进程死亡 从新拉起进程 64位系统需要改一下/lib 位lib64 不然服务无法启动,切记。
拷贝编辑的此三个文件到第二台服务器B机的/etc/ha.d目录下
scp authkeys ha.cf haresources slave:/etc/ha.d/
修改B机器中的ha.cf
vim /etc/ha.d/ha.cf
修改:ucast 项为:ucast eth1 192.168.2.105 保存退出。
环境测试
A主机nginx
echo "this is heartbeat server master "1111"" > /usr/share/nginx/html/index.html
B主机nginx
echo "this is heartbeat server slave "2222"" > /usr/share/nginx/html/index.html
查看AB 机器nginx启动情况
先启动A机master heartbeat服务 后启动B机slave heartbeat
/etc/init.d/heartbeat start
查看nginx启动情况
ps -aux|grep nginx
注释:(启动heartbeat后nginx会自动启动无需手动,B机器默认nginx是不会启动的)
测试1
客户端浏览器访问192.168.1.106 [流动ip (vip)]
浏览器显示“this is heartbeat server master 111111”正常
测试2
介于该心跳线是基于icmp协议的服务,所以我们屏蔽主机A的ping服务后,B机中heartbeat服务无法探测到A机器时,B机器认为A机器已故障(可从heartbeat日志中查看到),于是B机器即刻启动自身nginx服务接管A机器工作
实验.在A服务器主机上添加一条防火墙规则,拒绝ping
iptables -A INPUT -p icmp -j DROP
客户端浏览器访问192.168.1.106
览器显示“this is heartbeat server slave 2222”正常
测试3.
当我们删除A机器刚才添加的防火墙规则,B机器探测到A机器存活后,读取自身/etc/ha.d/ha.cf 文件auto_failback on项, 于是自动切换到A机器,停止自身ngingx服务。此时服务有A提供。测试如下
实验:删除A机器刚才添加的防火墙规则
iptables -D INPUT -p icmp -j DROP
浏览器显示“this is heartbeat server master 111111”正常
此次测试可从eth0 ,nginx , heaartbeat日志等看到相同的情况。日志:/var/log/ha-log.
完结
超详配置说明:
linux下heartbeat的配置
在Linux系统上双机功能的实现,对双机软件High-Availability Linux Project的安装、配置、运行以及测试进行说明。
1. 软件及安装说明
本文档描述的Linux-HA软件以及参考的文档均来自网站: http://www.linux-ha.org/。
通过安装该Linux-HA软件,可以实现Linux双机系统的高可用性解决方案,实现双机系统的热备份,并能够做到双机之间的无缝切换,从而对外
提供稳定可靠的服务,最终实现系统高性能RAS(reliability, availability, and serviceability)。
实现双机系统的两台主机不要求完全一致,但应该尽量做到硬件匹配。双机的连接可以使用串口线,也可以通过以太网ethernet进行连接,还
可以采用并存的多种连接方式实现两台主机的多重互连。两台主机应该安装相同的操作系统,推荐使用RedHat Linux。进行网络配置,为每一
台主机分配一个固定IP地址,另外需要选择一个IP地址作为集群IP(cluster IP),该IP是集群系统对外提供服务的接口。
注意:主机IP地址与集群IP地址一定不能重复。
1.2 软件的安装
1.2.1 下载
首先选择与系统匹配的安装文件。本文档测试所用的系统是CENTOS4.4,所用的安装文件是heartbeat-2.0.8.tar.gz,用户可以自行到网站
http://linux-ha.org/download/index.html上下载,该网站也会不断提供实时更新.同时到 http://www.packetfactory.net/libnet/下载
libnet.tar.gz 稳定版本是:1.1.2.1.
Linux-HA软件的安装需要大量支持性的rpm软件包,根据用户系统及配置的不同,安装过程中会提出不同的rpm需求。如果有未获得的rpm包,可
以到网站 http://rpmfind.net/ 上查找并下载。
1.2.2 编译安装
如安装文件所示,heartbeat-2.0.8.tar.gz是heartbeat的源代码软件包。该文件需要重新编译,但是首先应该依次安装支持heartbeat的一些
rpm package,这些软件包对heartbeat提供必要的支持,然后再安装heartbeat软件包。注意由于软件包之间有相互依赖关系,因而需要遵循一
定的安装顺序,可以根据安装过程中的提示自行协调安装顺序。
一些依赖的rpm包如下:
#rpm –ivh perl-Digest-SHA1-2.01-6.i386.rpm
#rpm –ivh perl-Digest-HMAC-1.01-8.noarch.rpm
#rpm –ivh perl-Authen-SASL-2.03-1.rh.8.0.um.1.noarch.rpm
#rpm –ivh perl-ldap-0.2701-1.rh.8.0.um.1.noarch.rpm
#rpm –ivh perl-Convert-ASN1-0.16-2.rh.8.0.um.1.noarch.rpm
#rpm –ivh perl-Net-SSLeay-1.22-1.rh.8.0.um.1.i386.rpm
#rpm –ivh perl-IO-Socket-SSL-0.92-1.rh.8.0.um.1.noarch.rpm
#rpm –ivh perl-Parse-RecDescent-1.80-1.rh.8.0.um.1.noarch.rpm
#rpm –ivh perl-Mail-IMAPClient-2.2.7-1.rh.8.0.um.1.noarch.rpm
#rpm –ivh perl-XML-NamespaceSupport-1.08-1.rh.8.0.um.1.noarch.rpm
#rpm –ivh perl-XML-SAX-0.12-1.rh.8.0.um.1.noarch.rpm
下面开始编译安装libnet和heartbeat
tar -zxvf libnet.tar.gz
cd libnet
./configure
make
make install
tar zxf heartbeat-2.0.8.tar.gz
cd heartbeat-2.0.8
./ConfigureMe configure --disable-swig --disable-snmp-subagent
make
make install
cp doc/ha.cf doc/haresources doc/authkeys /etc/ha.d/
cp ldirectord/ldirectord.cf /etc/ha.d/
1.3 软件的配置
Heartbeat软件的安装目录为/etc/ha.d,其中的
README.config对配置文件进行了说明,共有三个主要的配置文件:ha.cf,haresources,authkeys。
下面依次对三个配置文件进行说明,此外用户还可以参考Linux-HA附带的安装文档以及配置文件自身的注释。
1.3.1 配置ha.cf文件
ha.cf是heartbeat的主要配置文件,可以对heartbeat的多数性能和状态进行配置。大部分选项的取值可以采用默认值,其中的主要选项及配置
方法说明如下:
debugfile /var/log/ha-debug:该文件保存heartbeat的调试信息
logfile /var/log/ha-log:heartbeat的日志文件
keepalive 2:心跳的时间间隔,默认时间单位为秒
IXDBA.NET社区论坛
deadtime 30:超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡。
warntime 10:超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中。
initdead 120:在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至
少为deadtime的两倍。
udpport 694:设置广播通信使用的端口,694为默认使用的端口号。
baud 19200:设置串行通信的波特率。
serial /dev/ttyS0:选择串行通信设备,用于双机使用串口线连接的情况。如果双机使用以太网连接,则应该关闭该选项。
bcast eth0:设置广播通信所使用的网络接口卡。
auto_failback on:heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给从
节点并由从节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代从节点,否则不取代从节点。
ping ping-node1 ping-node2:指定ping node,ping node并不构成双机节点,它们仅仅用来测试网络连接。
respawn hacluster /usr/lib/heartbeat/ipfail:指定与heartbeat一同启动和关闭的进程,该进程被自动监视,遇到故障则重新启动。最常
用的进程是ipfail,该进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测网络连接。
1.3.2 配置haresources文件
haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址以及启动的服务等。其配置语句格式如下:
node-name network-config
其中node-name指定双机系统的主节点,取值必须匹配ha.cf文件中node选项设置的主机名中的一个,node选项设置的另一个主机名成为从节点
。
network-config用于网络设置,包括指定集群IP、子网掩码、广播地址等。resource-group用于设置heartbeat启动的服务,该服务最终由双机
系统通过集群IP对外提供。
下面举例对配置方法进行说明:
# hello 192.168.8.240 httpd tomcat
假设ha.cf文件中node选项设置的两个主机名分别为hello和web,则根据上述配置,双机系统的主节点为hello,从节点为web。
heartbeat启动时获取集群IP(cluster IP)为192.168.8.240,该IP成为heartbeat对外提供服务的网络地址。此外heartbeat依次启动服务
httpd和tomcat(从左向右的顺序)。heartbeat关闭时将依次关闭tomcat和httpd(从右向左的顺序),并释放cluster IP。
httpd和tomcat分别是apache和tomcat的启动脚本,heartbeat将从下面目录中寻找这些启动脚本:
/etc/ha.d/resource.d
/etc/rc.d/init.d
# hello 192.168.8.240/19 httpd tomcat
指定cluster IP为192.168.8.240,并且指定子网掩码为255.255.224.0,每个网段内有213个可用IP,默认广播地址取该网段内的最大可用IP,
取值为192.168.31.255。
此外,还可以向启动脚本传递argument,语法为:scriptname::argument
# hello 192.168.8.240/19/eth0/192.168.31.251 httpd tomcat
指定cluster IP为192.168.8.240,子网掩码为255.255.224.0,使用的网络接口卡为eth0,并强制设定广播地址为192.168.31.251。
注意:两台主机的haresources文件设置必须完全一致。
1.3.3 配置authkeys文件
authkeys文件用于heartbeat的鉴权设置,共有三种可用的鉴权方式:crc、md5和sha1。三种方式安全性依次提高,但同时占用的系统资源也依
次扩大。crc安全性最低,适用于物理上比较安全的网络,sha1提供最为有效的鉴权方式,占用的系统资源也最多。
IXDBA.NET技术社区
其配置语句格式如下:
auth
[]
举例说明:
auth 1
1 sha1 key-for-sha1
其中键值key-for-sha1可以任意指定,number设置必须保证上下一致。
auth 2
2 crc
crc方式不需要指定键值。
最后,该authkeys文件的文件许可权应该设为600(即-rw-------),命令为:
chmod 600 authkeys
注意:上述三个配置文件设置完毕后,应该复制到/etc/ha.d目录下。
1.4 运行与测试
1.4.1 启动heartbeat
heartbeat安装完成后,自动在/etc/rc.d/init.d/目录下生成启动脚本heartbeat,启动heartbeat可以使用命令
/etc/rc.d/init.d/heartbeat start
此外还可以使用stop、restart、reload、status等控制参数。
1.4.2 测试方案
下面描述一个简单的测试方案。系统环境和软件配置如下:
两台主机的主机名和IP地址分别为:
hello(192.168.6.7)
web(192.168.6.33)
则ha.cf文件中的node语句定义如下:
node hello
node web
haresources文件定义如下:
hello 192.168.8.240/19/192.168.31.255
该语句指定双机系统的主节点为hello,从节点为web,集群IP(cluster IP)为192.168.8.240,子网掩码为255.255.224.0,广播地址为
192.168.31.255。本测试方案没有指定heartbeat启动的服务,仅通过ping命令和telnet命令来检测双机系统的可用性。
任何一台主机在启动heartbeat后,可以使用命令 ps aux | grep heartbeat 来查看heartbeat的进程状态,可以使用ifconfig命令确认当前主
机是否已经绑定了cluster IP,此外还可以在/var/log/目录下查看heartbeat的日志文件ha-debug、ha-log。如果运行过程中产生了任何异常
或错误消息,则应该根据上述信息进行检查和调试。
测试步骤如下:
1.
主节点启动heartbeat
在主节点hello上调用命令 /etc/rc.d/init.d/heartbeat start 启动heartbeat。该主机将会自动绑定集群IP地址,在双机系统之外的第三台
主机上使用ping命令检测集群IP地址192.168.8.240,直至该地址变为可用(根据硬件和网络性能的差异,主机绑定集群IP地址需要等待不同的
时间)。
在主节点hello上使用ifconfig命令查看该主机的网络配置,显示主节点已经绑定了集群IP地址192.168.8.240。
在第三台主机上使用telnet命令登录集群IP地址192.168.8.240,输入主节点hello的用户名和口令,可以成功登录hello主机。
2.从节点启动heartbeat
使用相同的命令启动从节点web的heartbeat。由于在两台主机同时启动heartbeat的情况下,应该由主节点来获取IP地址并对外提供服务,因而
从节点heartbeat的启动并不对主节点产生影响。最终仍然由主节点hello绑定集群IP地址,使用telnet命令登录的也是主节点hello。
3. 主节点关闭heartbeat
在主节点hello上调用命令 /etc/rc.d/init.d/heartbeat stop 关闭heartbeat。
使用ifconfig命令可以发现,主节点hello已经释放了集群IP地址192.168.8.240,并由从节点web绑定该IP地址。使用telnet命令登录的是从节
点web。
在这个过程中,使用ping命令进行不间断监测,可以发现集群IP地址192.168.8.240一直处于可通状态,并没有产生任何阻塞或延迟,所以,在
关闭处于激活状态的heartbeat的情况下,双机系统可以实现无缝切换。但是在另外一些情况下,比如网络故障、主机关机或重启等,如果该主
机的heartbeat处于激活状态,则不能实现双机的无缝切换,切换过程需要有一定的延迟,使用ping命令可以发现集群IP地址暂时无法使用。
3. 主节点再次启动heartbeat
在这种情况下,主节点hello将重新绑定集群IP地址,从节点web释放该IP地址,并由主节点对外提供服务。在主节点启动heartbeat之后,集群
IP地址的释放和绑定有一定的延迟。虽然有一定的延迟,但是集群IP地址的释放和绑定是同步进行的,使用ping命令可以发现集群IP地址一直
处于可通状态,该过程并不影响双机系统的可用性。所以该过程仍然是一个无缝切换。
HA(High available)--Heartbeat高可用性集群(双机热备)菜鸟入门级的更多相关文章
- HA(High available)-Keepalived高可用性集群(双机热备)单点实验-菜鸟入门级
HA(High available)-Keepalived高可用性集群 Keepalived 是一个基于VRRP虚拟路由冗余协议来实现的WEB 服务高可用方案,虚拟路由冗余协议 (Virtual ...
- heartbeat+DRBD 高可用 双机热备
heartbeat+DRBD 高可用 双机热备 原创博文http://www.cnblogs.com/elvi/p/7658109.html ## heartbeat+DRBD 高可用 双机热备 # ...
- 两台linux利用heartbeat+drbd 完美实现双机热备
一直想做基于linux的双机热备,一直没有时间和机会.一直以为只要做双机热备的实验就必须两台机器外接一个存储.甚至一个月以前在学习keepalived的时候还在琢磨keepalvied去掉哪些条件可以 ...
- spark、standalone集群 (2)集群zookeeper 热备
测试 cmd spark-examples-1.6.0-hadoop2.6.0.jar spark 2.0以后 就没有这个 jar.需要下载 ./bin/spark-submit -- ...
- Heartbeat实现集群高可用热备
公司最近需要针对服务器实现热可用热备,这几天也一直在琢磨这个方面的东西,今天做了一些Heartbeat方面的工作,在此记录下来,给需要的人以参考. Heartbeat 项目是 Linux-HA 工程的 ...
- oracle 双机热备,oracle dataguard 和oracle rac的区别和联系(转)
Data Guard 是Oracle的远程复制技术,它有物理和逻辑之分,但是总的来说,它需要在异地有一套独立的系统,这是两套硬件配置可以不同的系统,但是这两套系统的软件结构保持一致,包括软件的版本,目 ...
- 物联网架构成长之路(9)-双机热备Keepalived了解
1. 前言 负载均衡LB,高可用HA,这一小结主要讲双机热备方案保证高可用.这里选择Keepalived作为双机热备方案,下面就对具体的配置进行了解.2. 下载Keepalived wget http ...
- mysql双机热备+heartbeat集群+自动故障转移
环境说明:本环境由两台mysql 数据库和heartbeat 组成,一台的ip 为 192.168.10.197,一台为192.168.10.198,对外提供服务的vip 为192.168.10.20 ...
- keepalived+LVS 实现双机热备、负载均衡、失效转移 高性能 高可用 高伸缩性 服务器集群
本章笔者亲自动手,使用LVS技术实现实现一个可以支持庞大访问量.高可用性.高伸缩性的服务器集群 在读本章之前,可能有不少读者尚未使用该技术,或者部分读者使用Nginx实现应用层的负载均衡.这里大家都可 ...
随机推荐
- Spirng中Mongodb中write-concern的解释
Spring在插入数据库时没有返回状态配置:write-concern获取异常<beans xmlns="http://www.springframework.org/schema/b ...
- oracle表空间不足相关问题解决办法
欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...
- Django1.9开发博客(14)- 集成Xadmin
xadmin是一个django的管理后台实现,使用了更加灵活的架构设计及Bootstrap UI框架, 目的是替换现有的admin,国人开发,有许多新的特性: 兼容 Django Admin 使用 B ...
- 数组的sort方法
今天在看<JavaScript高级程序设计第三版>时,学到了数组的sort方法.知道这个方法,但是一直没仔细研究过,这次发现,它是把数组内的值用toSting()变为字符串再进行比较,这样 ...
- 初学UML——用例图
开始学习UML建模语言,从用例图入手.建模工具选择visio 用例图描述的是参与者所理解的系统功能,主要元素是用例和参与者,是帮助开发团队以一种可视化的方式理解系统的功能需求.这时处于项目初始,分析用 ...
- ASP.NET MVC ActionResult的其它返回值
一.ascx页面 场景:要返回代码片断,比如Ajax返回一个子页 我们先新建一个Action public ActionResult Ascx() { return PartialView(); } ...
- [转]Java 8:不要再用循环了
以下内容为转载,没有在jdk8中测试,具体业务场景是否存在BUG或使用需要注意的地方有待测试. ------------------分割线---------------------- 正如我之前所写的 ...
- CXF支持 SOAP1.1 SOAP1.2协议
SOAP协议分为两个版本 1.1 1.2 默认支持1.1 实现方式: 1.编写接口 import javax.jws.WebService; @WebService public inte ...
- 删除Windows 服务
删除的办法有两个: 办法一: 用sc.exe这个Windows命令 开始--运行--cmd.exe,然后输入sc就可以看到了.使用办法很简单: sc delete “服务名” (如果服务名中间有空格, ...
- leetcode N-Queens/N-Queens II, backtracking, hdu 2553 count N-Queens, dfs 分类: leetcode hdoj 2015-07-09 02:07 102人阅读 评论(0) 收藏
for the backtracking part, thanks to the video of stanford cs106b lecture 10 by Julie Zelenski for t ...