Heartbeat实现HA群集

Heartbeat服务实现高可用性群集,节点之间是靠心跳线来传输资源,心跳线可以是双绞线也可以是serial线。当一个节点失效,另一个节点抢夺资源,资源有ip地址、服务、配置文件,成为主节点。

工作模式:主主模式,主备模式

主主模式:当一个节点实现http服务,为主节点,实现ftp服务为备用节点。另外一个节点在实现http时为备用节点,实现ftp时为主节点。

主备节点:一个节点为主节点,另外一个为备用节点,一旦主节点失效,备用节点接替工作,成为主节点。

Heartbeat工作的四个阶段:

第一个阶段:messagelayer/etc//ha.cf/ha.cf这个是实现高可用性群集的配置文件,在这个文件里指明,广播接口、节点的名称。

第二个阶段:成员管理/Etc/ha.d/haresource指明节点名称、抢占的资源(vip、服务、配置文件)

第三个阶段:/etc/ha.d/authkeys指明节点之间的验证算法

第四阶段:resourcesagent代理阶段

一:

在节点一上的配置:

1安装高可用性群集的相关软件包

heartbeat-2.1.4-9.el5.i386.rpm

heartbeat-devel-2.1.4-9.el5.i386.rpm

heartbeat-gui-2.1.4-9.el5.i386.rpm

heartbeat-ldirectord-2.1.4-9.el5.i386.rpmldirectord服务用于后方真实的服务器的状态监测

heartbeat-pils-2.1.4-10.el5.i386.rpm

heartbeat-stonith-2.1.4-10.el5.i386.rpm

libnet-1.1.4-3.el5.i386.rpm

perl-MailTools-1.77-1.el5.noarch.rpm

安装好只好在/etc/ha.d目录下形成一些与群集相关文件和目录

拷贝/usr/share/doc/heartbeat-2.1.4/ha.cfauthkeysharesources到当前目录下

[root@localhostha.d]#ll

total48

-rw-r--r--1rootroot645Oct401:42authkeys

-rw-r--r--1rootroot10578Oct401:41ha.cf

-rwxr-xr-x1rootroot745Jul242009harc

-rw-r--r--1rootroot5952Oct401:28haresources

drwxr-xr-x2rootroot4096Oct401:11rc.d

-rw-r--r--1rootroot692Jul242009README.config

drwxr-xr-x2rootroot4096Oct401:28resource.d

-rw-r--r--1rootroot7862Jul242009shellfuncs

:2打开ha.cf这个文件,ha.cf是高可用性群集的配置文件

bcasteth1#Linux广播地址为eth0这个端口,当主节点失效时通过这个端口把资源(vipheartbeat服务控制的其他服务、其他服务的配置文件)传到备份节点上。

#bcasteth1eth2#Linux

#nodekathy

nodenode1.a.com

nodenode2.a.com

3打开haresources文件配置资源,资源有节点名称虚拟ip、被控制的服务,这里控制ipvsadm服务

#node-nameresource1resource2...resourceN

node1.a.com192.168.20.100/24/eth0ipvsadm

#

拷贝ipvsadm的服务脚本到resource.d目录下

cp/etc/init.d/ipvsadm/etc/ha.d/resource.d/

4打开authkeys文件

authkeys

auth3#节点之间传递资源时要进行验证,MD5身份验证验证内容是redhat

#1crc

#2sha1HI!

3md5redhat

5Lvs虚拟服务配置

[root@localhost~]#ipvsadm-A-t192.168.20.100:80-srr

[root@localhost~]#ipvsadm-a-t192.168.20.100:80-r192.168.20.30:80-g

[root@localhost~]#ipvsadm-a-t192.168.20.100:80-r192.168.20.40:80-g

[root@localhost~]#ipvsadm-l

IPVirtualServerversion1.2.1(size=4096)

ProtLocalAddress:PortSchedulerFlags

->RemoteAddress:PortForwardWeightActiveConnInActConn

TCP192.168.20.100:httprr

->192.168.20.40:httpRoute100

->192.168.20.30:httpRoute100

保存虚拟服务规则,关闭虚拟服务

[root@localhost~]#serviceipvsadmsave

SavingIPVStableto/etc/sysconfig/ipvsadm:[OK]

[root@localhost~]#serviceipvsadmstop

ClearingthecurrentIPVStable:[OK]

6:开启高可用性群集的功能Serviceheartbeatstart

执行hb_takeover

抢占虚拟ip地址和服务

[root@node1ha.d]#ifconfig

eth0Linkencap:EthernetHWaddr00:0C:29:FA:2D:49

inetaddr:192.168.20.10Bcast:192.168.20.255Mask:255.255.255.0

inet6addr:fe80::20c:29ff:fefa:2d49/64Scope:Link

UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1

RXpackets:7840errors:0dropped:0overruns:0frame:0

TXpackets:5142errors:0dropped:0overruns:0carrier:0

collisions:0txqueuelen:1000

RXbytes:2922637(2.7MiB)TXbytes:709106(692.4KiB)

Interrupt:19Baseaddress:0x2000

eth0:0Linkencap:EthernetHWaddr00:0C:29:FA:2D:49

inetaddr:192.168.20.100Bcast:192.168.20.255Mask:255.255.255.0

UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1

Interrupt:19Baseaddress:0x2000

7查看虚拟服务规则表,虚拟服务已经开启

[root@node1ha.d]#ipvsadm-l

IPVirtualServerversion1.2.1(size=4096)

ProtLocalAddress:PortSchedulerFlags

->RemoteAddress:PortForwardWeightActiveConnInActConn

TCP192.168.20.100:httprr

->192.168.20.30:httpRoute100

->192.168.20.40:httpRoute100

三:在节点二上

1安装高可用性群集的相关软件包

heartbeat-2.1.4-9.el5.i386.rpm

heartbeat-devel-2.1.4-9.el5.i386.rpm

heartbeat-gui-2.1.4-9.el5.i386.rpm

heartbeat-ldirectord-2.1.4-9.el5.i386.rpmldirectord服务用于后方真实的服务器的状态监测

heartbeat-pils-2.1.4-10.el5.i386.rpm

heartbeat-stonith-2.1.4-10.el5.i386.rpm

libnet-1.1.4-3.el5.i386.rpm

perl-MailTools-1.77-1.el5.noarch.rpm

安装好只好在/etc/ha.d目录下形成一些与群集相关文件和目录

拷贝/usr/share/doc/heartbeat-2.1.4/ha.cfauthkeysharesources到当前目录下

[root@localhostha.d]#ll

total48

-rw-r--r--1rootroot645Oct401:42authkeys

-rw-r--r--1rootroot10578Oct401:41ha.cf

-rwxr-xr-x1rootroot745Jul242009harc

-rw-r--r--1rootroot5952Oct401:28haresources

drwxr-xr-x2rootroot4096Oct401:11rc.d

-rw-r--r--1rootroot692Jul242009README.config

drwxr-xr-x2rootroot4096Oct401:28resource.d

-rw-r--r--1rootroot7862Jul242009shellfuncs

:2打开ha.cf这个文件,ha.cf是高可用性群集的配置文件

bcasteth1#Linux广播地址为eth0这个端口,当主节点失效时通过这个端口把资源(vipheartbeat服务控制的其他服务、其他服务的配置文件)传到备份节点上。

#bcasteth1eth2#Linux

#nodekathy

nodenode1.a.com

nodenode2.a.com

3打开haresources文件配置资源,资源有节点名称虚拟ip、被控制的服务,这里控制ipvsadm服务

#node-nameresource1resource2...resourceN

node1.a.com192.168.20.100/24/eth0ipvsadm

#

拷贝ipvsadm的服务脚本到resource.d目录下

cp/etc/init.d/ipvsadm/etc/ha.d/resource.d/

4打开authkeys文件

authkeys

auth3#节点之间传递资源时要进行验证,MD5身份验证验证内容是redhat

#1crc

#2sha1HI!

3md5redhat

5Lvs虚拟服务配置

[root@localhost~]#ipvsadm-A-t192.168.20.100:80-srr

[root@localhost~]#ipvsadm-a-t192.168.20.100:80-r192.168.20.30:80-g

[root@localhost~]#ipvsadm-a-t192.168.20.100:80-r192.168.20.40:80-g

[root@localhost~]#ipvsadm-l

IPVirtualServerversion1.2.1(size=4096)

ProtLocalAddress:PortSchedulerFlags

->RemoteAddress:PortForwardWeightActiveConnInActConn

TCP192.168.20.100:httprr

->192.168.20.40:httpRoute100

->192.168.20.30:httpRoute100

保存虚拟服务规则,关闭虚拟服务

[root@localhost~]#serviceipvsadmsave

SavingIPVStableto/etc/sysconfig/ipvsadm:[OK]

[root@localhost~]#serviceipvsadmstop

ClearingthecurrentIPVStable:[OK]

6:开启heartbeat服务执行hb_takeover功能抢占资源

Serviceheartbeatstart

执行hb_takeover抢占资源

eth0Linkencap:EthernetHWaddr00:0C:29:D2:75:D0

inetaddr:192.168.20.20Bcast:192.168.20.255Mask:255.255.255.0

inet6addr:fe80::20c:29ff:fed2:75d0/64Scope:Link

UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1

RXpackets:5162errors:0dropped:0overruns:0frame:0

TXpackets:3896errors:0dropped:0overruns:0carrier:0

collisions:0txqueuelen:1000

RXbytes:2896990(2.7MiB)TXbytes:596280(582.3KiB)

Interrupt:19Baseaddress:0x2000

eth0:0Linkencap:EthernetHWaddr00:0C:29:D2:75:D0

inetaddr:192.168.20.100Bcast:192.168.20.255Mask:255.255.255.0

UPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1

Interrupt:19Baseaddress:0x2000

7查看虚拟服务规则表,虚拟服务已经开启

[root@node1ha.d]#ipvsadm-l

IPVirtualServerversion1.2.1(size=4096)

ProtLocalAddress:PortSchedulerFlags

->RemoteAddress:PortForwardWeightActiveConnInActConn

TCP192.168.20.100:httprr

->192.168.20.30:httpRoute100

->192.168.20.40:httpRoute100