Chinaunix首页 | 论坛 | 博客
  • 博客访问: 49410
  • 博文数量: 10
  • 博客积分: 1480
  • 博客等级: 上尉
  • 技术积分: 115
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-11 17:31
文章分类
文章存档

2010年(10)

我的朋友

分类: LINUX

2010-04-11 17:38:10

HeartBeat 双机热备逻辑系统架构

 

采用免费开源的机遇Linux HA项目下的Heartbeat搭建一个HA的平台,其工作模式为主/从(Active/Standby)。即主服务器工作,从服务器处于监控状态。当Heaatbeat检测到主服务器宕机的时候,从服务器接管主服务器的工作。当主服务器恢复正常后,系统能将服务自动切换到主服务器上运行。系统采用两台PC server,服务器配置双网卡。两台服务器的eth0都介入外部网络,供饮用程序使用。Eth1通过交叉线彼此相连,配置IP Heartbeat的心跳线。此方案能实现关键是在主/从服务器宕机切换时,对客户端来讲是透明的。Heartbeat采用虚拟ip地址映射技术来实现这个功能,系统原理拓扑图,请参考下面拓扑:

 

 

 

 

HA集群通讯机制

集群内部通讯机制用于确保数据的完整性并实现如下:

1、  控制系统合适能成为集群成员

2、  决定集群系统状态

3、  当问题发生的时候控制集群的行为

Heartbeat是用来检查另一台服务器是否仍然正常运行的机制,集群成员之间由点对点的Ethernet来进行联机监测。每一个集群成员将会定期的通过Ethernet发送heartbeat(ping)信号,Linux-HA使用这个信号信息来帮助找出成员的状态,并确保正确的 Linux-HA操作。

 

配置Linux下的高可用集群试验

1、  准备工作

首先需要2PC server,建议硬件环境相同。为了传输心跳信号,需要在节点之间存在一条或多条的介质链路,能有效的保证单点失效()。

硬件完成之后,需要安装操作系统及配置网络,要求主机都有两块网卡,一块用于外部网络服务,另一块用于Heartbeat。详细如下:

主服务器主机名为linuxha1   IP地址为:10.128.132.5   IP192.168.0.5

从服务器主机名为linuxha2   外部IP地址为:10.128.132.6   Heartbeat IP192.168.0.6

2、  下载安装软件包

可以从网站下载Heartbeat,其中也有rpm二进制软件。当然也可以选择源码安装。取得源码的话,将其释放到某个目录,然后在该目录中执行./ConfigureMe configure生成makefile之后,我们执行makemake install

如果下载的是rpm二进制软件包就相对简单。需要如下的软件包:

Ipfail:一个能在探子服务器IP失效后立即抓取服务器IP的软件。

Stonith:在任何server停止时,能确保剩下的server不会被正在运行的server所影响,可以选择强制停止一些server的解决方案。

Ldirector:负载平衡的调度程序。

 

安装命令如下:

#rpm –ivh -pils-*.rpm

#rpm –ivh heartbeat-stonith-*.rpm

#rpm –ivh heartbeat-*i386.rpm

 

也可以使用yum命令在线安装,可以不用考虑软件之间的依赖关系。

具体方法如下:

解决方法:

#rpm -qa yum

yum-3.0.5-1.el5.

可以看到已经安装了的yum软件,卸载它,

rpm e yum-3.0.5-1.el5

然后我们下载一个新的可以让我们使用的yum网址:

安装之后,我们再设置yum源:
vim /etc/yum.repos.d/CentOS-Base.repo

[base]
name=CentOS-$releasever - Base

baseurl=

gpgcheck=1

gpgkey=RPM-GPG-KEY-centos5


#released updates
[update]
name=CentOS-$releasever - Updates
baseurl=
gpgcheck=1
gpgkey=

 

[addons]
name=CentOS-$releasever - Addons
baseurl=/
gpgcheck=1
gpgkey=

 

[extras]
name=CentOS-$releasever - Extras
baseurl=
gpgcheck=1
gpgkey=


vim /etc/yum.repos.d/dag.repo
添加如下:
[dag]

name=Dag RPM Repository for RHEL5

baseurl=

enabled=1

gpgcheck=1

gpgkey=RPM-GPG-KEY-CentOS-5

 

然后导入KEY

rpm --import RPM-GPG-KEY-CentOS-5

 

安装heartbeat

#yum install heartbeat

 

 

配置主服务器的heartbeat      

   /usr/share/heartbeat

/usr/share/doc/heartbeat-2.1.3/ hesiod-3.1.0/(可用Tab键补齐)

 

在启用heartbeat之前要配置3个配置文件,有可能需要手工创建,即

ha.cfharesourcesauthkeys。存在源码目录的doc目录中。

ha.cf文件包括配置为heartbeat使用何种介质和如何配置其信息。在源码目录中的ha.cf文件包含以下可以使用的全部选项。

1),serial /dev/ttyS0 使用串口heartbeat,如果未使用,则必须使用其他介质,如bcast(以太网)并用适当的设备文件代替/dev/ttyS0

2),watchdog /dev/watchdog

该选项是可选配置,可以获得提供最少更能的系统。该系统部提供heartbeat,可以在持续一分钟的不正常状态后重新启动系统。该功能有助于避免一台机器在被认定已经死亡之后恢复heartbeat的情况。如果这种情况发生,并且磁盘挂载因为故障而迁移(failover),则可能有两个节点同事挂载一块磁盘。如果要是用这项功能,除了这行之外,还需要加载softdog内核模块,并创建相应的设备文件。方法是使用命令insmod softdog内核模块,并创建相应的设备文件,然后执行grep misc /proc/devices 并记住得到的数字,一般为10。输入cat /proc/misc|grep watchdog记录输出的数字,一般为130。根据以上的参数,我们可以创建设备文件。执行mknod /dev/watchdog c 10 130

3)bcast eth1

该选项表示在eth1接口上使用广播heartbeat(注意,我们可以使用其他的网络接口做heartbeat)。从服务器通过广播bcast来与主服务器进行监听。

4),keepalive 2

该选项表示heartbeat之间间隔为2秒。

5),warntime

该选项在日志中发出late heartbeat 警告之前等待的时间,单位为妙。

6),deadtime 30

该选项在30妙后宣布节点死亡。

7),initdead 120

在某些配置下,重启后网络需要一定时间才能正常工作。这个单独的deadtime可以处理这种情况,并取值至少应该为deadtime的两倍。

8),baud 19200

串口的波特率。

9),udpport 694

该选项是用udp协议的694端口实现bcastucast通讯,这是默认在IANA官方注册的端口号。

10)auto_failback on

该选项是必须配置的,heartbeat工作方式类似于failover member方式。在failover之前,haresources文件中列出的主节掌握的所有资源,之后从节点接管这些资源。当 auto_failback on的时候,一旦主节点重新恢复联机,将从从节点取回所有的资源;若设置为off,主节点便不会重新获得资源。该选项和作废的 选项相似。如果要从一个设置nice_failbackoff的集群升级到更新的版本,特别要注意一些事项,防止flash cut.具体可以参考linux-HAFAQ

11),node primary.mydomain.com

该选项必须配置,集群中的主机名要和uname –n 命令的相同。

12),node backup.mydomain.com

同上。

例如:

node NodeA.liukang NodeB.liukang

13),respawn

可选配置,用于列出将要执行和监控的命令。例如执行ipfail守护进程,这要添加如下内容:

Heartbeathacluster用户身份来执行并监视该进程的执行情况。如果其死亡,则重新启动这个进程。对于ipfail,应该是下面的语法:

Respawn hacluster /usr/lib/heartbeat/ipfail

 

配置haresources

 

该文件列出集群所提供的服务以及服务默认的所有者,两个集群节点上的该文件应该相同。

集群的IP 地址是必须要配置的,不能在该文件以外配置该地址。该文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址、启动的服务等。配置语法如下:

Node-name network-config

主机名    IP地址    服务名

例如:

NodeA.liukang    192.168.0.98   httpd

其中 node-name指定主节点,取值必须和 ha.cf文件中node选项设定的主机名中的一个。node选项中的另一个主机名成为从节点;network-config用于配置网络、包括指定集群的IP、子网掩码、广播地址等;resource-group用于设定heartbeat启动的服务,该服务最终由双机系统通过集群IP对外提供。本实验假设我们要配置HA服务为apachesamba

在该文件中包含如下行:

10.128.132.4 httpd smb

该行指定在启动时节点linuxha1的到的IP地址为10.128.132.5,并启动httpdsamba。再停止的时候首先停止samba,然后停止 httpd,最后释放IP地址10.128.132.5。这里需要注意的是,Primary.mydomain.com是使用uname –a输出的主机名。

正确配置该文件后,将该文件拷贝到/etc/ha.d目录中。

 

 

配置authkeys

 

Authkeys文件决定认证密钥,一共有三种认证方式:crcmd5sha1。如果heartbeat运行于安全的网络之上,如本实验的eth1通过交叉线相连,可以使用crc。因为这是代价最低的方法。如果网络并不安全,但也想低的CPU占用,则使用md5;如果想得到最好的认真,而不考虑CPU的占用情况,可以使用sha1,它是三种之中最安全的。

文件格式如下:

Auth

因此,对于sha1的方式可能是:

Auth 1

1 sha1 key-for-sha1-any-text-you-want

如果是md5,只要将上面的sha1换成md5即可。如果是crc,配置如下:

Auth 2

2 crc

最后,要确保这个文件的安全性。如rw-------600

 

配置备份服务器的heartbeat

 

依次按照主服务器中的rpm软件包到备份的服务器。然后使用ssh命令把主服务器配置文件拷贝到从服务器。

#scp –r /etc/ha.d   backupnode:/etc/ha.d

 

设置主服务器和备份服务器的时间同步

要求住服务器和备份服务器的时间差异不超过几十秒。否则在高可用服务器的环境下会产生问题,在两个系统启动heartbeat之前,应该人工使用data命令设置系统的时间。更好的办法是使用时间服务器ntp

 

启动主服务器的heartbeat

使用如下命令:

#/etc/init.d/heartbeat start

或者

#Services heartbeat start

这时候会出现如下信息:

Primary.mydomain.com heartbeat[2 886]WARNnode backup.domain.comis dead

表示备份服务器死机的警告,原因是备份服务器heartbeat没有启动。

 

 

 

配置ipfail

Ipfail插件的用途是检测网络故障,并做出合理的反应。如果需要,是集群failover。为了实现这样的功能,ipfail使用ping节点或者节点组的方法,是这些节点在集群中作为哑节点出现。如果HA节点可以互相通讯,ipfail可靠的检测到其中一个网络连接失效的情况,并进行failover

配置步骤如下:

1、  选择候选的ping节点。

2、  设置auto_failoveron或者是off

3、  配置ha.cf启动ipfail

ha.cf文件中增加下面一行:

Respawn hacluster /usr/lib/heartbeat/ipfail

4、  ha.cf文件中增加ping节点

增加如下行:

Ping node01 node02 node03 …nodeN

 

阅读(5701) | 评论(0) | 转发(1) |
0

上一篇:没有了

下一篇:在sed中应用‘位置参数’举例

给主人留下些什么吧!~~