Heartbeat_ldirector+LB+NFS实现HALB、文件共享

高可用集群是指一组通过硬件和软件连接起来的独立计算机,它们在用户面前表现为一个单一系统,在这样的一组计算机系统内部的一个或者多个节点停止工作,服务会从故障节点切换到正常工作的节点上运行,不会引起服务中断,是保证业务连续性的有效解决方案

一个很关键的组件叫做heartbeatheartbeat的工作原理:heartbeat最核心的包括两个。部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运行在对方主机上的资源或者服务

案例拓扑:

Heartbeat_ldirector+LB+NFS实现HA及LB、文件共享_HA   LB  heartb

实验原理:

两个director实现HA(高可用性)群集

两个web服务器实现LB(负载均衡)群集

后方NFS服务器实现给web服务器提供共享资源

对外呈现虚拟ip地址:192.168.20.100/24

实验步骤:

Director配置:

配置yum源:

[root@node1 ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo

Heartbeat_ldirector+LB+NFS实现HA及LB、文件共享_HA   LB  heartb_02

安装所需软件包:

[root@node1 ~]# yum install -y ipvsadm

[root@node1 ~]# yum localinstall -y heartbeat-2.1.4-9.el5.i386.rpmheartbeat-devel-2.1.4-9.el5.i386.rpm 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 heartbeat-ldirectord-2.1.4-9.el5.i386.rpm --nogpgcheck 

拷贝ldirector的配置文件,用于和heartbeat结合,内含ipvsadm规则:

[root@node1 ~]# cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/

[root@node1 ~]# vim /etc/ha.d/ldirectord.cf

虚拟ip192.168.20.100

Realserver192.168.20.12192.168.20.13

后方用于反馈信息的隐藏文件.test.html,用于director对后方服务器的监测

不是静默模式(一旦停止就删除掉规则条目)

Heartbeat_ldirector+LB+NFS实现HA及LB、文件共享_HA   LB  heartb_03

生成heartbeat的配置文件,密码文件以及资源文件

[root@ node1~]# cd /usr/share/doc/heartbeat-2.1.4/

[root@ node1 heartbeat-2.1.4]# cp ha.cf /etc/ha.d/

[root@ node1 heartbeat-2.1.4]# cp authkeys /etc/ha.d/

更改密码文件权限

[root@ node1~]# chmod 600 /etc/ha.d/authkeys

[root@ node1 heartbeat-2.1.4]# cp haresources /etc/ha.d/

Heartbeat消息从eth1口广播出去

[root@node1 ~]# vim /etc/ha.d/ha.cf

Heartbeat_ldirector+LB+NFS实现HA及LB、文件共享_HA   LB  heartb_04

两个director主机的主机名

Heartbeat_ldirector+LB+NFS实现HA及LB、文件共享_HA   LB  heartb_05

生成随机MD5加密数

[root@node1 ~]# dd -f=/dev/randombs=512 count=1 |md5sum

[root@node1 ~]# vim /etc/ha.d/authkeys

Heartbeat_ldirector+LB+NFS实现HA及LB、文件共享_HA   LB  heartb_06

Node1.a.com这台主机作为主director

[root@node1 ~]# vim /etc/ha.d/haresources

Heartbeat_ldirector+LB+NFS实现HA及LB、文件共享_HA   LB  heartb_07

[root@node1 ~]# service heartbeat start

更改hosts文件为下面拷贝文件做准备

[root@node1 ~]# vim /etc/hosts

192.168.20.200node1.a.com

192.168.20.201node2.a.com

Director2相关配置和director1相同这里直接拷贝

[root@node1 ~]# scp /etc/hosts node2.a.com:/etc/hosts

[root@node1 ~]# scp /etc/ha.d/ha.cf node2.a.com:/etc/ha.d/ha.cf

[root@node1 ~]# scp /etc/ha.d/authkeys node2.a.com:/etc/ha.d/authkeys

[root@node1 ~]# scp /etc/ha.d/haresources node2.a.com:/etc/ha.d/haresources

[root@node1 ~]# scp /etc/ha.d/ldirectord.cf node2.a.com:/etc/ha.d/ldirectord.cf

[root@node1 ~]# scp /etc/yum.repos.d/rhel-debuginfo.repo node2.a.com:/etc/yum.repos.d/

[root@node1 ~]# chmod 600 /etc/ha.d/authkeys

[root@node2 ~]# yum install -y ipvsadm

[root@node2 ~]# yum localinstall -y heartbeat-2.1.4-9.el5.i386.rpmheartbeat-devel-2.1.4-9.el5.i386.rpm 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 heartbeat-ldirectord-2.1.4-9.el5.i386.rpm –nogpgcheck

NFS服务器配置:

确保服务器端已经安装以下有关nfs的软件包

# rpm -qa |grep nfs

nfs-utils-lib-1.0.8-7.6.el5

nfs-utils-1.0.9-42.el5

查看rpc工作状态

# rpcinfo -p

program vers protoport

1000002tcp111portmapper

1000002udp111portmapper

1000241udp653status

1000241tcp656status

1000111udp663rquotad

1000112udp663rquotad

1000111tcp666rquotad

1000112tcp666rquotad

1000032udp2049nfs

1000033udp2049nfs

1000034udp2049nfs

1000211udp38515nlockmgr

1000213udp38515nlockmgr

1000214udp38515nlockmgr

1000032tcp2049nfs

1000033tcp2049nfs

1000034tcp2049nfs

1000211tcp34341nlockmgr

1000213tcp34341nlockmgr

1000214tcp34341nlockmgr

1000051udp677mountd

1000051tcp680mountd

1000052udp677mountd

1000052tcp680mountd

1000053udp677mountd

1000053tcp680mountd

/usr/local/nginx/html/website作为共享目录,并修改权限

# chmod 777 /usr/local/nginx/html/website 

编辑共享清单信息

# vim /etc/exports

/usr/local/nginx/html/website192.168.20.0/24(rw,sync)(给192.168.20.0/24网段的用户对/usr/local/nginx/html/website有读写权限)

# exportfs r(刷新共享清单)

# servicenfsrestart

创建共享网页

/usr/local/nginx/html/website下创建一个隐藏的.test.html用于director对服务器的监控时反馈信息

# cd /usr/local/nginx/html/website

# echo ‘ok’ .test.html

Web服务器配置:

Web服务器上搭建有lamp环境,前面已有详细介绍

创建挂载目录

# mkdir /var/www/website

查看rpc工作状态

# rpcinfo -p

program vers protoport

1000002tcp111portmapper

1000002udp111portmapper

1000241udp675status

1000241tcp678status

查看服务器共享清单列表

# showmount -e 192.168.20.10

Export list for 192.168.20.10:

/usr/local/nginx/html/website 192.168.20.0/24

编辑开机脚本,使动态网站开机就能挂载到本地

# vim /etc/fstab

加入下面代码

192.168.20.10:/usr/local/nginx/html/website /var/www/websitenfsrw,soft,intr00

添加虚拟端口并配置路由,web服务器回应客户端时使用虚拟端口

# ifconfig lo:0 192.168.20.100 broadcast 192.168.20.100 netmask 255.255.255.255

# route add -host 192.168.20.100 dev lo:0

更改系统控制文件,在接收arp请求时不给予回应以防冲突

# vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_announce = 2

更改web主站点路径到挂载目录

# vim /etc/httpd/httpd.conf

213 DocumentRoot "/var/www/website"

# service httpd restart

stoping httpd......ok

starting apache.......ok

测试:

查看director1上面的规则:

Director1规则:

Heartbeat_ldirector+LB+NFS实现HA及LB、文件共享_HA   LB  heartb_08

ip资源分给了director1

Heartbeat_ldirector+LB+NFS实现HA及LB、文件共享_HA   LB  heartb_09

作为备份的director2此时没有资源:

Heartbeat_ldirector+LB+NFS实现HA及LB、文件共享_HA   LB  heartb_10

web服务器down掉一个:

# service httpd stop

Heartbeat_ldirector+LB+NFS实现HA及LB、文件共享_HA   LB  heartb_11

通过虚地址访问内部网站:

Heartbeat_ldirector+LB+NFS实现HA及LB、文件共享_HA   LB  heartb_12

再次查看规则已经有一条匹配:

Heartbeat_ldirector+LB+NFS实现HA及LB、文件共享_HA   LB  heartb_13

再次刷新浏览器:(符合rr轮训的规则)

Heartbeat_ldirector+LB+NFS实现HA及LB、文件共享_HA   LB  heartb_14

director1 down掉,在director2上立马有规则,得到资源:

Heartbeat_ldirector+LB+NFS实现HA及LB、文件共享_HA   LB  heartb_15

得到ip资源:

Heartbeat_ldirector+LB+NFS实现HA及LB、文件共享_HA   LB  heartb_16