服务器的高可用性之HA

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

今天小编要和读者聊聊有关服务器的高可用性的问题,当前读者应该知道,国内一些从事电子商务行业的服务器性能是相当的强大的(淘宝、阿里巴巴等等),这些电子商务的主站每秒钟的访问量可是相当的可观,读者试着想想如果服务器当掉了咋办,回答可能是肯定还有其他服务器替代啦,对,可是如何迅速替代让用户感觉不到已经有服务器当掉了呢,那便引出小编今天要谈的HA。

HA是啥?High-Availability Linux 的开源项目的目标是,通过社区开发努力提供一个提升Linux 可靠性(reliability)、可用性(availability)和可服务性(serviceability)(RAS)的群集解决方案。Linux-HA 项目得到了广泛的应用,是很多有趣的高可用性解决方案的重要组成部分。

高可用性集群一般是指当集群中有某个节点失效的情况下,其上的任务会自动转移到其他正常的节点上。还指可以将集群中的某节点进行离线维护再上线,该过程并不影响整个集群的运行。

今天小编的主要任务就是来实现HA群集。

Project 1:了解高可用性群集的架构

如图1-1所示,高可用性群集的几个重要部分

图1-1

1)共享信息层

在基础架构上实现心跳信息探测。双方节点可以随时探测到对方的心跳信息,以实现对对方主机工作状态的探测。三类控制信息:心跳(Heartbeats),集群事务信息(Cluster Transition Messages),重传信息(Retransmission Request)。配置文件:/etc/ha.d/ha.cf。各节点间域共享密钥,实现节点间互相通信的认证。加密方式:MD5、HMAC-SHA1 。常用实现软件:HeartBeat(小

编这里就是使用的这个)、keepalived、ultramonkey、openais/corosync。红帽官方提供的集群套件RHCS底层使用的通信机制就是openais/corosync。

2)资源分配子层

在资源分配上定义资源种类,界定资源归属,每个服务需要哪些资源及这些资源之间的前后次序。

集群资源管理器(CRM,常用软件pacemaker),管理双方向外提供服务所需用到的资源,包括IP地址、Web服务、共享存储等等。而这些资源需要依靠集群信息库CIB(XML文件)来定义,同时还必须保证一旦某个节点上的XML

文件更新,即刻通知其他节点上的XML也要及时更新。

策略引擎(PE Policy Engine):定义法定人数以及根据法定人数所做出的动作等等。

本地资源管理器(LRM Local Resource Manager):监控本地某个资源的工作状况。

3)资源层

本地资源代理(Resource Agent),脚本文件,一旦集群资源管理器发现某个资源工作异常,立即通知本地资源代理重启服务。常用方法:(1)Heartbeat v1(小编这里使用的);

(2)使用脚本LSB scripts (Linux Standards Base );

(3)OCF Open Cluster Format 开放集

Project 2:常用的架构模型

1)主从架构:正常情况下只有主服务器工作,当主服务器当掉从服务器立即启用

2)互为主从架构:两台服务器提供不同的服务,相互为主从架构,两台服务器同时工作

3)多主机架构

N台主机组成一个集群,分别提供不同的服务,一台服务器空闲做备节点。或者全部处于工作状态,一台服务器出故障,立刻将服务转移到其他主机上。各节点之间需要以多播的形式将自己的健康情况发送给其他主机。

Project 3:高可用性集群的实现

1)主从架构

step 1:实验拓扑规划,如图3-1-1所示

图3-1-1

Primary eth0 192.168.1.100

eth1 192.168.2.10 //心跳测试

Standby eth0 192.168.1.200

eth1 192.168.2.20 //心跳测试

向外提供Web服务IP:192.168.1.150

step 2:系统与软件资源需求安装

小编的系统是Red Hat EnterPrise Linux 5.4

小编的系统上已经安装了apache2.2.3和php环境,如果读者不会安装的话可以参见小编的博客/5200614/1177203 小编将这些软件包放在/root/heart目录下了,然后使用不加gpg验证的本地yum安装完成

heartbeat-2.1.4-11.el5.i386.rpm

openhpi-libs-2.14.0-5.el5.i386.rpm

heartbeat-pils-2.1.4-11.el5.i386.rpm perl-MailTools-2.04-1.el5.rf.noarch.rpm

heartbeat-stonith-2.1.4-11.el5.i386.rpm perl-TimeDate-1.16-5.el5.noarch.rpm

libnet-1.1.5-1.el5.i386.rpm

primary服务器的安装配置

# cd heart/

# yum localinstall ./* --nogpgcheck

这样安装省了很多事,系统会自动解决依赖关系,但是读者还要记着安装完成之后查询一下heartbeat到底产生了哪些文件

# rpm -ql heartbeat

其中/usr/share/doc/heartbeat-2.1.4/目录下就存放了heartbeat的样例配置文件

接下来的工作是修改主机名,Heartbeat依靠服务器的主机名来识别服务器,因此使用hostname命令得到的结果必须与uname -n 结果保持一致。

# vim /etc/sysconfig/network //修改主机名称;

HOSTNAME=

# hostname

# vim /etc/hosts //修改主机地址映射;

192.168.1.100 primary

192.168.1.200 standby

# cd /etc/ha.d/

# cp /usr/share/doc/heartbeat-2.1.4/ha.cf ./

# cp /usr/share/doc/heartbeat-2.1.4/authkeys ./

# cp /usr/share/doc/heartbeat-2.1.4/haresources ./

# vim ha.cf //定义各节点之间Heartbeat进程如何通信;

debugfile /var/log/ha-debug //设置调试日志文件名

logfile /var/log/ha-log //设置其他日志文件名

keepalive 2 //设定heartbeat之间的时间间隔为2秒;

deadtime 30 //在30秒后宣布节点死亡;

warntime 10 //在日志中发出late heartbeat警告之前等待的时间,单位为秒;

udpport 694 // 使用端口694进行bcast和ucast通信,默认参数;

bcast eth1 //在eth1接口上使用广播heartbeat-”心跳”;

node //定义节点;

node //定义节点;

# dd if=/dev/urandom bs=512 count=1 | openssl md5 //生成节点间域共享密钥;

14df2a6b5b26b510e7d5d5b16b7cc10b

# vim authkeys //定义心跳探测包使用哪种加密方式;

auth 1

1 sha1 14df2a6b5b26b510e7d5d5b16b7cc10b

# chmod 600 authkeys //仅允许管理员修改文件;

# cp /etc/init.d/httpd /etc/ha.d/resource.d/

相关文档
最新文档