一.heartbeat和ipvsadm简介

heartbeat简介:

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

可靠消息通信

Heartbeat通过插件技术实现了集群间的 串口、多播、广播和组播通信,在配置的时候可以根据通信媒介选择采用的通信协议,heartbeat启动的时候检查这些媒介是否存在,如果存在则加载相应的通信模块。这样开发人员可以很方便地添加新的通信模块,比如添加红外线通信模块。

对于高可用集群系统,如果集群间的通信不可靠,那么很明显集群本身也不可靠。Heartbeat采用UDP协议和串口进行通信,它们本身是不可靠的,可靠性必须由上层应用来提供。那么怎样保证消息传递的可靠性呢?

Heartbeat通过冗余通信通道和消息重传机制来保证通信的可靠性。Heartbeat检测主通信链路工作状态的同时也检测备用通信链路状态,并把这一状态报告给系统管理员,这样可以大大减少因为多重失效引起的集群故障不能恢复。例如,某个工作人员不小心拨下了一个备份通信链路,一两个月以后主通信链路也失效了,系统就不能再进行通信了。通过报告备份通信链路的工作状态和主通信链路的状态,可以完全避免这种情况。因为这样在主通信链路失效以前,就可以检测到备份工作链路失效,从而在主通信链路失效前修复备份通信链路。

Heartbeat通过实现不同的通信子系统,从而避免了某一通信子系统失效而引起的通信失效。最典型的就是采用以太网和串口相结合的通信方式。这被认为是当前的最好实践,有几个理由可以使我们选择采用串口通信:

(1)IP通信子系统的失效不太可能影响到串口子系统。

(2)串口不需要复杂的外部设备和电源。

(3)串口设备简单,在实践中非常可靠。

(4)串口可以非常容易地专用于集群通信。

(5)串口的直连线因为偶然性掉线事件很少。

不管是采用串口还是以太网IP协议进行通信,heartbeat都实现了一套消息重传协议,保证消息包的可靠传递。实现消息包重传有两种协议,一种是发送者发起,另一种是接收者发起。

对于发送者发起协议,一般情况下接收者会发送一个消息包的确认。发送者维护一个计时器,并在计时器到时的时候重传那些还没有收到确认的消息包。这种方法容易引起发送者溢出,因为每一台机器的每一个消息包都需要确认,使得要发送的消息包成倍增长。这种现像被称为发送者(或者ACK)内爆(implosion)。

对于接收者发起协议,采用这种协议通信双方的接收者通过序列号负责进行错误检测。当检测到消息包丢失时,接收者请求发送者重传消息包。采用这种方法,如果消息包没有被送达任何一个接收者,那么发送者容易因NACK溢出,因为每个接收者都会向发送者发送一个重传请求,这会引起发送者的负载过高。这种现像被称为NACK内爆(implosion)。

Heartbeat实现的是接收者发起协议的一个变种,它采用计时器来限制过多的重传,在计时器时间内限制接收者请求重传消息包的次数,这样发送者重传消息包的次数也被相应的限制了,从而严格的限制了NACK内爆。

ipvs简介

IPVS的含义
IPVS基本上是一种高效的Layer-4交换机,它提供 负载平衡的功能。当一个TCP连接的初始SYN报文到达时,IPVS就选择一台服务器,将报文转发给它。此后通过查发报文的IP和TCP报文头地址,保证此连接的后继报文被转发到相同的服务器。这样,IPVS无法检查到请求的内容再选择服务器,这就要求后端的服务器组是提供相同的服务,不管请求被送到哪一台服务器,返回结果都应该是一样的。但是在有一些应用中后端的服务器可能功能不一,有的是提供HTML文档的Web服务器,有的是提供图片的Web服务器,有的是提供CGI的Web服务器。这时,就需要基于内容请求分发 (Content-Based Request Distribution),同时基于内容请求分发可以提高后端服务器上访问的局部性。
IPVS的工作原理
(1)先说下LVS

提到IPVS就不得不提LVS(Linux Virtual Server),虚拟服务器是一个高度可扩展性和高可用性的服务器,建立在一个集群的服务器中。服务器集群的架构对用户是完全透明的,并且用户使用起来感觉它只有一个高性能虚拟服务器。

真正的服务器和负载平衡器之间通过高速局域网或地理上分散的广域网可以相互连接。负载平衡器可以将请求调度到不同的服务器并将并行的集群服务显示的像在一个单一的IP地址上的一个虚拟的服务,请求调度可以使用IP负载平衡技术或应用级负载平衡技术。系统的可扩展性是通过透明地添加或删除集群中的节点来实现的。通过检测节点或守护进程的失败和适当地重新配置系统提供高可用性。

(2)IPVS的原理

当一个TCP连接的初始SYN报文到达时,IPVS就选择一台服务器,将报文转发给它。此后通过查发报文的IP和TCP报文头地址,保证此连接的后继报文被转发到相同的服务器。这样,IPVS无法检查到请求的内容再选择服务器,这就要求后端的服务器组是提供相同的服务,不管请求被送到哪一台服务器,返回结果都应该是一样的。但是在有一些应用中后端>的服务器可能功能不一,有的是提供HTML文档的Web服务器,有的是提供图片的Web服务器,有的是提供CGI的Web服务器。这时,就需要基于内容请求分发 (Content-Based Request Distribution),同时基于内容请求分发可以提高后端服务器上访问的局部性。

上面已经说了IPVS是LVS的关键,因为LVS的IP负载平衡技术就是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件,它的主要作用是:安装在Director Server上,同时>在Director Server上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问服务。这个虚拟IP一般称为LVS的VIP,即Virtual IP。访问的请求首先经过VIP到达负载调度器,然>后由负载调度器从Real Server列表中选取一个服务节点响应用户的请求。

二.案例所用的拓扑图

linux下高可用性群集和负载均衡群集的实现_第1张图片 

三.配置dns,web服务器配置

3.1 配置server1的dns服务

1)配置server1的ip地址

linux下高可用性群集和负载均衡群集的实现_第2张图片

2)重启server1的网络服务

[root@localhost ~]# service network restart

正在关闭接口 eth0:                                      [确定]

关闭环回接口:                                             [确定]

弹出环回接口:                                             [确定]

弹出界面 eth0:                                           [确定]

3)配置server1的本地yum服务器

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

修改配置文件如下图所示

linux下高可用性群集和负载均衡群集的实现_第3张图片

4)挂载光盘

[root@localhost ~]# mount /dev/cdrom /mnt/cdrom

mount: block device /dev/cdrom is write-protected, mounting read-only

5)安装dns所需要的软件包

[root@localhost ~]# yum install bind -y

[root@localhost ~]# yum install bind-chroot -y

[root@localhost ~]# yum install caching-nameserver -y

6)生成dns主配置文件

[root@localhost ~]# cd /var/named/chroot/etc

[root@localhost etc]# cp -p named.caching-nameserver.conf named.conf

7)编辑主配置文件

[root@localhost etc]# vim named.conf

linux下高可用性群集和负载均衡群集的实现_第4张图片

linux下高可用性群集和负载均衡群集的实现_第5张图片

linux下高可用性群集和负载均衡群集的实现_第6张图片

8) 声明bj.com区域

[root@localhost etc]# vim named.rfc1912.zones

linux下高可用性群集和负载均衡群集的实现_第7张图片

9) 生成区域文件

[root@localhost etc]# cd ..

[root@localhost chroot]# cd var/named

[root@localhost named]# cp -p localhost.zone bj.com.zone

10) 编辑区域文件

[root@localhost named]# vim bj.com.zone

linux下高可用性群集和负载均衡群集的实现_第8张图片

11) 修改dns指向

[root@localhost named]# vim /etc/resolv.conf

nameserver 192.168.20.133

12)修改主机名

[root@localhost named]# vim /etc/sysconfig/network

linux下高可用性群集和负载均衡群集的实现_第9张图片

[root@localhost named]# hostname server1.bj.com

13)重启dns服务

[root@localhost ~]# service named start

启动 named:                                               [确定]

[root@localhost ~]# chkconfig named on

3.2 配置server1的web服务

×××lamp环境

1)lamp 搭建用到的软件

mysql-5.5.15-linux2.6-i686.tar.gz

php-5.3.7.tar.bz2

httpd-2.2.19.tar.bz

2)想要实现源码安装,所需要的软件组。

[root@localhost ~]# yum grouplist

Development Tools  //开发工具  

Legacy Software Development    //传统软件开发工具

Development Libraries  //开发工具库

3)安装mysql

把mysql-5.5.15-linux2.6-i686.tar.gz拆解到/usr/local目录下

[root@server1 ~]# tar -zxvf mysql-5.5.15-linux2.6-i686.tar.gz -C /usr/local/

做软连接

[root@server1 ~]# cd /usr/local

[root@server1 local]# ln -s mysql-5.5.15-linux2.6-i686/ mysql

查看mysql安装文件

[root@server1 mysql]# less INSTALL-BINARY

linux下高可用性群集和负载均衡群集的实现_第10张图片

按照mysql的安装说明文件执行如下操作

创建mysql用户及用户组

[root@server1 mysql]# groupadd mysql

[root@server1 mysql]# useradd -r -g mysql -s /sbin/nologin -M mysql

[root@server1 mysql]# chown -R mysql .

[root@server1 mysql]# chgrp -R mysql .

[root@server1 mysql]# scripts/mysql_install_db --user=mysql

把所有者和所属组该为root

[root@server1 mysql]# chown   -R   root   .

把data的所有者改为mysql

[root@server1 mysql]# chown  -R  mysql  data

[root@server1 mysql]# bin/mysqld_safe      --user=mysql  &   //开启服务

4)设置用service来管理mysql

[root@server1 mysql]# cp support-files/mysql.server  /etc/init.d/mysqld

[root@server1 mysql]# cd /etc/ld.so.conf.d/

[root@server1 ld.so.conf.d]# vim mysql.conf

创建mysql.conf文件指定库文件目录

wps_clip_image-20179

[root@server1 ld.so.conf.d]# ldconfig -v |grep mysql

/usr/local/mysql/lib:

libmysqlclient.so.18 -> libmysqlclient_r.so.18.0.0

[root@server1 ld.so.conf.d]# cd /usr/include/

[root@server1 include]# ln -s /usr/local/mysql/include/ mysql

[root@server1 include]# chkconfig --add mysqld

[root@server1 include]# chkconfig --list |grep mysql

mysqld          0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

[root@server1 rc3.d]# ll |grep mysql

lrwxrwxrwx 1 root root 16 09-11 01:23 S64mysqld -> ../init.d/mysqld

此时启动mysql

[root@server1 rc3.d]# service mysqld start

MySQL server PID file could not be found!                  [失败]

执行如下指令

[root@server1 Server]# pkill -9 mysqld

启动mysql

[root@server1 Server]# service mysqld start

Starting MySQL..                                      [确定]

4) 源码安装apache

拆解压缩文件

[root@server1 ~]# tar -jxvf httpd-2.2.19.tar.bz2 -C /usr/local/src

[root@server1 ~]# cd /usr/local/src

[root@server1 src]# ll

总计 4

drwxr-xr-x 11 xht xht 4096 2011-05-21 httpd-2.2.19

查看安装说明文件

[root@server1 httpd-2.2.19]# less INSTALL

linux下高可用性群集和负载均衡群集的实现_第11张图片

检查预编译环境

[root@server1 httpd-2.2.19]# ./configure --prefix=/usr/local/apache  //安装目录

--sysconfdir=/etc/httpd   //配置文件目录

--enable-so           // 开启 dso 动态共享对象

--enable-ssl      //启用加密功能

--with-z         //使用 zlib

编译

[root@server1 httpd-2.2.19]# make

安装

[root@server1 httpd-2.2.19]# make install

启动httpd服务

[root@server1 httpd]# cd /usr/local/apache/

[root@server1 apache]# ./bin/apachectl start

加入开机启动

[root@server1 apache]# vim /etc/rc.d/rc.local

linux下高可用性群集和负载均衡群集的实现_第12张图片

创建http.conf 文件并指定http库文件目录

[root@server1 apache]# cd /etc/ld.so.conf.d/

[root@server1 ld.so.conf.d]# vim httpd.conf

wps_clip_image-4920

在/usr/include/下为apache头文件建立软连接

[root@server1 ld.so.conf.d]# cd /usr/include/

[root@server1 include]# ln -s /usr/local/apache/include apache

重启服务

[root@server1 apache]# apachectl stop

[root@server1 apache]# apachectl start

5)为server1安装php

拆解软件包到/usr/local/src目录下

[root@server1 ~]# tar -jxvf php-5.3.7.tar.bz2 -C /usr/local/src

linux下高可用性群集和负载均衡群集的实现_第13张图片

[root@server1 src]# cd php-5.3.7/

查看安装说明文件

[root@server1 php-5.3.7]# less INSTALL

linux下高可用性群集和负载均衡群集的实现_第14张图片

检测预编译环境

--prefix=/usr/local/php    //安装目录

将php编译成apache的模块,允许apache的apxx调用该模块

--with-apxs2=/usr/local/apache/bin/apxs

--with-mysql=/usr/local/mysql  指明mysql的安装位置

--with-mysqli=/usr/local/mysql/bin/mysql_config调用myql接口

支持宽字符

--enable-mbstring=all

[[email protected]]# ./configure

--prefix=/usr/local/php

--with-apxs2=/usr/local/apache/bin/apxs 

--with-mysql=/usr/local/mysql 

--with-mysqli=/usr/local/mysql/bin/mysql_config

--enable-mbstring=all

编译

[root@server1 php-5.3.7]# make

安装

[root@server1 php-5.3.7]# make install

查看网页文件如下图

linux下高可用性群集和负载均衡群集的实现_第15张图片

修改配置文件使其支持php

[root@server1 htdocs]# vim /etc/httpd/httpd.conf

linux下高可用性群集和负载均衡群集的实现_第16张图片

重启服务

[root@server1 htdocs]# /usr/local/apache/bin/apachectl stop

[root@server1 htdocs]# /usr/local/apache/bin/apachectl start

建立php网页文件

[root@server1 htdocs]# mv index.html index.php

6) 测试apache能否正常工作信息如下

linux下高可用性群集和负载均衡群集的实现_第17张图片

7) 测试httpd能否调用php

[root@server1 htdocs]# vim index.php

linux下高可用性群集和负载均衡群集的实现_第18张图片

测试php页面如下

linux下高可用性群集和负载均衡群集的实现_第19张图片

8) 测试php调用mysql

[root@server1 htdocs]# vim index.php

linux下高可用性群集和负载均衡群集的实现_第20张图片

测试页面如下

linux下高可用性群集和负载均衡群集的实现_第21张图片

9) 测试mysql

利用mysql创建数据库

[root@server1 htdocs]# /usr/local/mysql/bin/mysql

linux下高可用性群集和负载均衡群集的实现_第22张图片

3.3  配置server2的dns,web服务

Server2 的ip地址为192.168.20.134/28 主机名为server2.bj.com

1)server2的ip地址

linux下高可用性群集和负载均衡群集的实现_第23张图片

2)配置主机名

[root@localhost ~]# vim /etc/sysconfig/network

linux下高可用性群集和负载均衡群集的实现_第24张图片

3) 配置dns与server1的配置基本相同下面只将bj.com.zone的内容显示出来如图

[root@server2 ~]# cd /var/named/chroot/var/named

[root@server2 named]# vim bj.com.zone

linux下高可用性群集和负载均衡群集的实现_第25张图片

搭建server2的lamp环境同搭建server1的lamp环境相同

只是将index.php改为:

It works!

$link=mysql_connect(‘127.0.0.1’,‘root’,’’);

If($link)

Echo “connect is ok”;

Else

Echo “disconnect”

?>

四. 配置两台direct转发器

4.1 配置direct1的ipvsadm

1)配置direct1的ip地址

linux下高可用性群集和负载均衡群集的实现_第26张图片

心跳网卡的地址

linux下高可用性群集和负载均衡群集的实现_第27张图片

2)重启网络服务

linux下高可用性群集和负载均衡群集的实现_第28张图片

3)配置direct1的yum服务器

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

linux下高可用性群集和负载均衡群集的实现_第29张图片

4)安装ipvs

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

5)创建ipvsadm的规则,rr表示轮询算法

[root@localhost ~]# ipvsadm -A -u 192.168.20.137:53 -s rr

[root@localhost ~]# ipvsadm -a -u 192.168.20.137:53 -r 192.168.20.133 -g

[root@localhost ~]# ipvsadm -a -u 192.168.20.137:53 -r 192.168.20.134 -g

[root@localhost ~]# ipvsadm -A -t 192.168.20.137:80 -s rr

[root@localhost ~]# ipvsadm -a -t 192.168.20.137:80 -r 192.168.20.133 -g

[root@localhost ~]# ipvsadm -a -t 192.168.20.137:80 -r 192.168.20.134 –g

6)查看规则

linux下高可用性群集和负载均衡群集的实现_第30张图片

7)保存规则并重新启动

[root@localhost ~]# service ipvsadm save

Saving IPVS table to /etc/sysconfig/ipvsadm:               [确定]

4.2 配置Direct 2的ipvsadm

1)Director2服务器ip地址配置

linux下高可用性群集和负载均衡群集的实现_第31张图片

心跳网卡的地址

linux下高可用性群集和负载均衡群集的实现_第32张图片

2)重启网络服务

linux下高可用性群集和负载均衡群集的实现_第33张图片

3)配置direct2的本地yum服务器

linux下高可用性群集和负载均衡群集的实现_第34张图片

4)安装完ipvsadm后创建规则

linux下高可用性群集和负载均衡群集的实现_第35张图片

5)保存规则

linux下高可用性群集和负载均衡群集的实现_第36张图片

6)在direct2上查看规则

linux下高可用性群集和负载均衡群集的实现_第37张图片

五. 利用heartbeat搭建direct转发器的高可用性群集

5.1 在direct1上配置heartbeat

1)编辑hosts文件

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

linux下高可用性群集和负载均衡群集的实现_第38张图片

2)停止ipvsadm服务

wps_clip_image-14646

3)修改主机名

wps_clip_image-31366

wps_clip_image-4331

4)利用yum安装heartbeat软件包

[root@n1 ~]# yum localinstall -y heartbeat-2.1.4-9.el5.i386.rpm --nogpgcheck

[root@n1~]#yum  localinstall

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 –nogpgcheck

5)切换到heartbeat的配置目录复制所需文件

[root@n1 ]# cd  /etc/ha.d

[root@n1 ha.d]# cp /usr/share/doc/heartbeat-2.1.4/ha.cf ./

[root@n1 ha.d]# cp /usr/share/doc/heartbeat-2.1.4/authkeys ./

[root@n1 ha.d]# cp /usr/share/doc/heartbeat-2.1.4/haresources ./

[root@n1 ha.d]# cp /etc/init.d/ipvsadm resource.d/

6)在eth1上发送心跳信息并指明两台direct转发器

[root@n1 ha.d]# vim ha.cf

wps_clip_image-6447

wps_clip_image-20151

7)编辑资源配置文件

[root@n1 ha.d]# vim haresources

wps_clip_image-28951

8)利用随机函数产生随机数并用MD5加密

linux下高可用性群集和负载均衡群集的实现_第39张图片

9)编辑验证文件

[root@n1 ha.d]# vim authkeys

linux下高可用性群集和负载均衡群集的实现_第40张图片

10)查看heartbeat的状态

linux下高可用性群集和负载均衡群集的实现_第41张图片

11)启动heartbeat的服务

linux下高可用性群集和负载均衡群集的实现_第42张图片

5.2 配置direct2的heartbeat

1)配置direct2的主机名并修改hosts文件

[root@localhost ~]# vim /etc/sysconfig/network

linux下高可用性群集和负载均衡群集的实现_第43张图片

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

linux下高可用性群集和负载均衡群集的实现_第44张图片

2)安装heartbeat软件包

[root@n2~]#yumlocalinstall  -y  heartbeat-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 –nogpgcheck

3)在配置目录下复制所需文件

[root@n2 ~]# cd /etc/ha.d

[root@n2 ha.d]# cp /usr/share/doc/heartbeat-2.1.4/ha

[root@n2 ha.d]# cp /usr/share/doc/heartbeat-2.1.4/ha.cf ./

[root@n2 ha.d]# cp /usr/share/doc/heartbeat-2.1.4/authkeys ./

[root@n2 ha.d]# cp /usr/share/doc/heartbeat-2.1.4/haresources ./

[root@n2 ha.d]# cp /etc/init.d/ipvsadm resource.d/

4)在eth1在心跳探测并指明两台direct转发器

[root@n2 ha.d]# vim ha.cf

wps_clip_image-2521

wps_clip_image-15520

5)编辑资源配置文件

[root@n2 ha.d]# vim haresources

wps_clip_image-28720

6)编辑验证文件密码要和direct1上的相同

[root@n2 ha.d]# vim authkeys

wps_clip_image-17860

7)修改验证文件的权限

[root@n2 ha.d]# chmod 600 authkeys

8)重启heartbeat服务

linux下高可用性群集和负载均衡群集的实现_第45张图片

9)停止ipvsadm服务

[root@n2 ha.d]# service ipvsadm stop

六. 两台server服务器配合前面的director完成负载均衡群集

6.1 配置serve2

1)配置server2的虚拟地址

linux下高可用性群集和负载均衡群集的实现_第46张图片

2)解决关于arp的问题

[root@server2 ~]# vim /etc/sysctl.conf

linux下高可用性群集和负载均衡群集的实现_第47张图片

linux下高可用性群集和负载均衡群集的实现_第48张图片

3) 配置路由

[root@server2 ~]# route add -host 192.168.20.137 dev lo:0

6.2  配置Server1

1)配置虚拟地址

linux下高可用性群集和负载均衡群集的实现_第49张图片

2)解决arp问题

[root@server1 ~]# echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf

[root@server1 ~]# echo "net.ipv4.conf.lo.arp_announce = 2" >> /etc/sysctl.conf

[root@server1 ~]#  echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf

[root@server1 ~]# echo "net.ipv4.conf.lo.arp_ignore = 1" >> /etc/sysctl.conf

[root@server1 ~]# sysctl -p

net.ipv4.ip_forward = 0

net.ipv4.conf.default.rp_filter = 1

net.ipv4.conf.default.accept_source_route = 0

kernel.sysrq = 0

kernel.core_uses_pid = 1

net.ipv4.tcp_syncookies = 1

kernel.msgmnb = 65536

kernel.msgmax = 65536

kernel.shmmax = 4294967295

kernel.shmall = 268435456

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.lo.arp_ignore = 1

3)创建路由并查看路由表

[root@server2 ~]# route add -host 192.168.20.137 dev lo:0

[root@server1 ~]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

192.168.20.137  0.0.0.0         255.255.255.255 UH    0      0        0 lo

192.168.20.128  0.0.0.0         255.255.255.240 U     0      0        0 eth0

169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0

0.0.0.0         192.168.20.131  0.0.0.0         UG    0      0

7. 客户机测试

1)客户端地址配置

2)用虚拟地址访问网页

linux下高可用性群集和负载均衡群集的实现_第50张图片

3)用域名访问网页

linux下高可用性群集和负载均衡群集的实现_第51张图片

刷新一次结果如下因为用的算法轮询

4)在direct1上面查看ipvsadm的规则因为direct1是激活设备所以能看到

linux下高可用性群集和负载均衡群集的实现_第52张图片

5)在direct2则看不到

linux下高可用性群集和负载均衡群集的实现_第53张图片

6)模拟direct1失效

linux下高可用性群集和负载均衡群集的实现_第54张图片

7)再次访问网页依然可以正常访问

刷新一次

8)此时direct2为激活设备能看到ipvsadm规则

linux下高可用性群集和负载均衡群集的实现_第55张图片

9)模拟direct1恢复此时direct1再次成为激活设备

查看ipvsadm规则

linux下高可用性群集和负载均衡群集的实现_第56张图片

linux下高可用性群集和负载均衡群集的实现_第57张图片

10)测试完毕。