Chinaunix首页 | 论坛 | 博客
  • 博客访问: 175265
  • 博文数量: 12
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 910
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-26 09:13
个人简介

有梦想你就来!欢迎阅读!

文章分类

全部博文(12)

文章存档

2015年(1)

2014年(11)

分类: 系统运维

2014-05-26 22:43:25


LVS+HA+LDrectord高可用负载均衡集群系统

本文主要讲述vs/dr方式,lvs+heartbeat

实验环境:

Load Balancer服务器:192.168.2.40

Load Balancer服务器:192.168.2.19

Real server 192.168.2.31,192.168.2.41

Vip  192.168.2.233(无人占用)

ipatbles off,selinux disabled

 

注意:在主备Load Balancer服务器上,heartbeat的配置内容完全一样。hearbeat不负责服务的状态,只监控服务主机的状态



一.部署heartbeat,即配置主备负载均衡服务器

HeartBeat 是 Linux-HA 的高可用性集群软件,它的主要作用是:安装在 Load Balancer 和 Backup 上,运行于 active/standby 模式。当 Load Balancer 失效时,Backup 自动激活,成为实际的 Load Balancer。切换到 active 模式时,按顺序启动 Virtual IP、IPVS 和 Ldirectord。切换到 standby 模式时,按顺序关闭 Ldirectord、IPVS 和 Virtual IP。

 

下载软件包:

heartbeat-3.0.4-2.el6.x86_64.rpm        heartbeat-libs-3.0.4-2.el6.x86_64.rpm

heartbeat-devel-3.0.4-2.el6.x86_64.rpm

 

安装软件包:

heartbeat-3.0.4-2.el6.x86_64.rpm        heartbeat-libs-3.0.4-2.el6.x86_64.rpm

heartbeat-devel-3.0.4-2.el6.x86_64.rpm

[root@server40 ~]# yum  localinstall * -y

 

更改配置文件:

将ha.cf,haresource, sauthkeys文件拷贝至系统启动会加载的目录/etc/ha.d/下。

[root@server40 heartbeat-3.0.4]# cp /usr/share/doc/heartbeat-3.0.4/ha.cf haresource sauthkeys /etc/ha.d/

 

打开或者编辑以下:

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

debugfile /var/log/ha-debug打开调试日志文件文件

 

logfile /var/log/ha-log打开系统运行日志文件

 

logfacility local0打开日志等级

 

keepalive 2心跳频率,自己设定。1:表示 1 秒;200ms:表示 200 毫秒

 

deadtime 30节点死亡时间阀值,就是从节点在过了 30秒 后还没有收到心跳就认为主节点死亡,自己设定

 

warntime 10发出警告时间,自己设定

 

initdead 120守护进程首次启动后应该等待 120 秒后再启动主服务器上的资源

 

udpport 694(做实验时,此端口必须是别人没用的)心跳信息传递的 udp 端口,使用端口 694 进行 bcast和 ucast 通信,取默认值

 

#baud 19200串口波特率,与 serial 一起使用。

 

#serial /dev/ttyS0采用串口来传递心跳信息。

 

bcast eth0采用 eth0网卡广播播来通知心跳

 

#ucast eth1 10.0.0.3采用网卡 eth1 的 udp 单播来通知心跳,eth1 的 IP

 

#mcast eth0 225.0.0.1 694 1 0采用 udp 多播来通知心跳

 

auto_failback on当主节点恢复后,是否自动切回

#stonith baytech /etc/ha.d/conf/stonith.baytechstonith 用来保证共享存储环境中的数据完整性

 

打开:watchdog /dev/watchdog

watchdog 能让系统在出现故障 1 分钟后重启该机器,这个功能可以帮助服务器在确实停止心

跳后能够重新恢复心跳。 如果使用该特性,修改系统中/etc/modprobe.d/softdog.conf  添加如下行

options softdog

这样在系统启动的时候,在内核中装入"softdog"内核模块,用来生成实际的设备文件/dev/watchdog

 

nnode    server40.example.com

主节点名称,与 uname –n 保持一致。排在第一的默认为主节点,所以不要搞措顺序

node    server19.example.com

副节点名称,与 uname –n 保持一致

ping 192.168.2.251此处为网关

respawn hacluster /usr/lib64/heartbeat/ipfail

apiauth ipfail gid=haclient uid=hacluster

默认 heartbeat 并不检测除本身之外的其他任何服务,也不检测网络状况。

所以当网络中断时,并不会进行 Load Balancer 和 Backup 之间的切换。

可以通过 ipfail 插件,设置'ping nodes'来解决这一问题,但不能使用一个集群节点作为

ping 的节点。

########################################################################

heartbeat自带的断网切换的工具ipfail.ipfail断网切换的原理:

       关于ipfail这个断网切换的原理很简单,首先heartbeat要判断自己的网络是否正常其实就是通过ping某个ip,如果可以ping的通,说明网络是通的,如果ping不通了,说明是网络断了,或者是主服务器的网卡坏了,然后执行切换的动作。但是如果是被ping的那个ip的网卡出问题了怎么办呢,那岂不是也造成了误切换?所幸heartbeat想到了这种情况,而提供了ping group的功能,就是让heartbeat同时ping两个或者两个以上的ip,如果所有的都ping不通了,ipfail才认为是主服务器的网络断了,或是网卡坏了。然而在大多数的一般情况下我们ping一个ip也是可以的,因为我们可以把这个ip设置成我们这个网络中default gateway(默认网关)的ip,因为如果是默认网关的网卡坏了,即便是误切换也无所谓了,默认网关坏了那么我们的服务是怎么也不可能被访问到了。

 

下边对 ping 一个ip和ping group的功能及配置方法一一介绍。

ipfail的配置与使用,我们要使用ipfail这个断网切换的功能,只要在ha.cf这个配置文件中配置即可:

1.配置文件中有很多英文的解释以及示例被#号注释,供参考,我们使用ipfail时只要去掉相应的#号即可,下面写出ping一个ip的ipfail配置: 

ping 192.168.2.251

respawn hacluster     /usr/lib64/heartbeat/ipfail

apiauth ipfail gid=haclient uid=hacluster

 *************************************************************************************************

只有这3行,非常简单,只要写在ha.cf重启动heartbeat服务就可以生效了,我来解释一下这3行配置文件的意思:

  • ping 192.168.2.251   > 一般是ping网关,告诉ipfail网络是否畅通。
  • respawn hacluster     /usr/lib64/heartbeat/ipfail     > 这句就是指定断网切换的程序文件路径,我们一定要给出正确的路径,一般情况下,这个ipfail文件会在heartbeat安装目录下的lib/heartbeat/子文件夹下,确认好以后我们给出正确的路径, 其中hacluster是一个uid,是以hacluster这个用户身份运行ipfail。即,当断网后,以hacluster用户的身份运行ipfail文件


  • apiauth ipfail gid=haclient uid=hacluster     >是指定对ipfail有权限的用户和组
*************************************************************************************************


2.ping一个group的ipfail配置:

ping_group group1 172.16.103.254 172.16.103.212

respawn hacluster     /usr/local/lib/heartbeat/ipfail

apiauth ipfail gid=haclient uid=hacluster
*************************************************************************************************

ping_group group1 172.16.103.254 172.16.103.212

       这个就是同时ping多个ip,只有所有的ip都无法ping通时,ipfail才会执行切换的动作,保证了不会是因为被ping的ip出了问题而产生误切换。后边两句前面说过了,不再解释了。

      最后需要注意的是不要把ping 和ping group 这两行同时写出来,写ping的内容时,要保证ping group是注释的,写ping group时,要保证ping那行是注释着的,否则会出问题的, 切换运行不正常。
*************************************************************************************************

########################################################################

 

资源文件上更改启动哪些资源(必须填写主节点):

[root@server40 ha.d]# vim haresources 

server40.example.com IPaddr::192.168.2.233/24/eth0:0 httpd

 

########################################################################

haresources这个文件中定义了实现集群所需的各个软件的启动脚本,这些脚本必须放在/etc/init.d 或者/etc/ha.d/resource.d 目录里 IPaddr 的作用是启动 Virutal IP,它是 HeartBeart 自带的一个脚本;ldirectord 的作用是启动 ldirectord 监控程序,它会使 ldirectord.cf 中定义的 lvs 生效,并监听其健康状;httpd 是 apache 服务的启动脚本。

配置好ha.cf文件之后,便是haresources文件。该文件列出集群所提供的服务以及服务的默认所有者。 注意:两个集群节点上的该文件必须相同。集群的IP地址是该选项是必须配置的,不能在haresources文件以外配置该地址, haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址以及启动的服务等。其配置语句格式如下:

node-name network-config resource-group

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

 

在haresources文件中需要如下内容:

server40.example.com IPaddr::192.168.2.233/24/eth0:0 httpd 

该行指定在启动时,节点server40.example.com得到IP地址192.168.2.233,并启动Apache。在停止时,Heartbeat停止Apache,最后释放IP地址192.168.2.233。这里假设命令“uname –n”的输出为“server40.example.com”-如果输出为“server40”,便应使用“server40”。

正确配置好haresources文件之后,将ha.cf和haresource拷贝到/etc/ha.d目录。

注意:资源文件中能执行的命令必须在/etc/ha.d/resource.d/ 中可见

########################################################################

 

认证文件(/etc/ha.d/authkeys),文件的权限必须是 600:

[root@server40 ha.d]# vim authkeys

auth 1

1 crc

#2 sha1 HI!

#3 md5 Hello! 

########################################################################

注:安全级别由高到低:sha1->md5->crc

需要配置的第三个文件authkeys决定了您的认证密钥。共有三种认证方式:crc,md5,和sha1。您可能会问:“我应该用哪个方法呢?”简而言之: 如果您的Heartbeat运行于安全网络之上,如本例中的交叉线,可以使用crc,从资源的角度来看,这是代价最低的方法。如果网络并不安全,但您也希望降低CPU使用,则使用md5。最后,如果您想得到最好的认证,而不考虑CPU使用情况,则使用sha1,它在三者之中最难破解。

 

因此,对于sha1,示例的/etc/ha.d/authkeys可能是

 

auth 1

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

 

对于md5,只要将上面内容中的sha1换成md5就可以了。 对于crc,可作如下配置:

 

auth 2

2 crc

 

不论您在关键字auth后面指定的是什么索引值,在后面必须要作为键值再次出现。如果您指定“auth 4”,则在后面一定要有一行的内容为“4 ”。

 

确保该文件的访问权限是安全的,如600。

########################################################################

 

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

 

[root@server40 modprobe.d]# modprobe softdog

[root@server19 modprobe.d]# modprobe softdog

 

[root@server40 modprobe.d]# vim softdog.conf

options softdog
                

[root@server40 ha.d]# yum install httpd -y

[root@server19 ha.d]# yum install httpd -y

 

[root@server40 ha.d]# scp ha.cf haresources authkeys 192.168.2.19:/etc/ha.d/

 

编辑测试页面:

[root@server40 html]# echo `hostname`>index.html

[root@server19 html]# echo `hostname`>index.html

 

启动heartbeat:

[root@server40 html]# /etc/init.d/heartbeat start

 

在主节点上出现以下信息则成功:

[root@server40 html]# ifconfig 

eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:D8:7C:90  

          inet addr:192.168.2.233  Bcast:192.168.2.255  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

apache被自动启动

[root@server40 html]# /etc/init.d/httpd status

httpd (pid  4226) is running...

 

而在备节点上,apache没有被自动启动:

[root@server19 html]# /etc/init.d/httpd status

httpd is stopped

 

浏览器中输入:192.168.2.233

出现以下信息则正确,表明主节点在工作

server40.example.com 

 

当当掉主节点的heartbeat时,备节点会主动接管,虚拟ip会飘到备节点:

[root@server40 html]# /etc/init.d/heartbeat stop

Stopping High-Availability services: Done.

[root@server40 html]# /etc/init.d/httpd status

httpd is stopped

 

[root@server19 html]# /etc/init.d/httpd status

httpd (pid  25037) is running...

eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:5D:75:96  

          inet addr:192.168.2.233  Bcast:192.168.2.255  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

 

浏览器中输入:192.168.2.233

出现以下信息则正确,表明备节点在工作

server19.example.com 

 

当主节点的heartbeat再次被启动时,会将运行在备节点上的资源服务接过去。

 

 

二.部署LB

安装lvs管理工具ipvsadm:

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

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

 

向ipvsadm表中添加爱规则:

[root@server40 ~]# ipvsadm -A -t 192.168.2.232:80 -s rr

[root@server40 ~]# ipvsadm -a -t 192.168.2.232:80 -r 192.168.2.31:80 -g

[root@server40 ~]# ipvsadm -a -t 192.168.2.232:80 -r 192.168.2.41:80 -g

 

[root@server19 ~]# ipvsadm -A -t 192.168.2.232:80 -s rr

[root@server19 ~]# ipvsadm -a -t 192.168.2.232:80 -r 192.168.2.31:80 -g

[root@server19 ~]# ipvsadm -a -t 192.168.2.232:80 -r 192.168.2.41:80 -g

 

用命令可查看所添加的规则:

[root@server40 ~]# ipvsadm -l

 

停掉本HA节点的httpd服务:

[root@server40 ~]# /etc/init.d/httpd stop

 

给real server安装httpd服务:

[root@server31 ~]# yum install httpd -y

[root@server41 ~]# yum install httpd -y

 

编辑测试页面并启动httpd服务:

[root@server31 html]# echo `hostname`

[root@server41 html]# echo `hostname`

[root@server31 html]# /etc/init.d/httpd start

[root@server41 html]# /etc/init.d/httpd start

 

在real server上安装MAC与IP地址的解析协议即arp:

[root@server31 html]# yum install arptables_jf -y

[root@server41 html]# yum install arptables_jf -y

 

添加规则:

[root@server31 ~]# ifconfig eht0:0 191.68.2.232 netmask 255.255.255.255

[root@server31 ~]# arptables -A IN -d 192.168.2.232 -j DROP

[root@server31 ~]# arptables -A OUT -s 192.168.2.232 -j mangle --mangle-ip-s 192.168.2.31

[root@server31 ~]# /etc/init.d/arptables_jf save

 

[root@server41 ~]# ifconfig eht0:0 191.68.2.232 netmask 255.255.255.255

[root@server41 ~]# arptables -A IN -d 192.168.2.232 -j DROP

[root@server41 ~]# arptables -A OUT -s 192.168.2.232 -j mangle --mangle-ip-s 192.168.2.41

[root@server31 ~]# /etc/init.d/arptables_jf save

 

测试:

反复刷新网页,每次出现的网页不同则表示成功。

 

三.调度器

########################################################################

HA只有一台工作,real server两台都得工作

 

lvs三种工作模式(nat,tun,DR)

VS/NAT

在一组服务器前有一个调度器,它们是通过 Switch/HUB 相连接的。这些服务器提供相同的网络服务、相同的内容,即不管请求被发送到哪一台服务器,执 行结果是一样的。服务的内容可以复制到每台服务器的本地硬盘上,可以通过网络文件系统(如 NFS)共享,也可以通过一个分布式文件系统来提供。VS/NAT 的优点是服务器可以运行任何支持 TCP/IP 的操作系统,它只需要一个 IP 地址配置在调度器上,服务器组可以用私有的 IP 地址。缺点是它的伸缩能力有限, 当服务器结点数目升到 20 时,调度器本身有可能成为系统的新瓶颈,因为在 VS/NAT 中请求和响应报文都需要通过负载调度器。


 


VS/TUN

它的连接调度和管理与 VS/NAT 中的一样,只是它的报文转发方法不同。调度器根据各个服务器的负载情况,动态地选择一台服务器,将请求报文封装在另一个 IP 报文中,再将封装后的 IP 报文转发给选出的服务器;服务器收到报文后,先将报文解封获得原来目标地址为 VIP 的报文,服务器发现 VIP地址被配置在本 地的 IP 隧道设备上,所以就处理这个请求,然后根据路由表将响应报文直接返回给客户。在 VS/TUN 的集群系统中,负载调度器只将请求调度到不同的后端服务器,后端服务器将应答的数据直接返回给用户。这样,负载调度器就可以处理大量的请求,它甚至可以调 度百台以上的服务器(同等规模的服务器),而它不会成为系统的瓶颈。即使负载调度器只有100Mbps 的全双工网卡,整个系统的最大吞吐量可超过 1Gbps。所以,VS/TUN 可以极大地增加负载调度器调度的服务器数量。VS/TUN 调度器可以调度上百台服务器,而它本身不会成为系统的瓶颈,可以 用来构建高性能的超级服务器。

 

VS/DR

跟 VS/TUN 方法相同,VS/DR 利用大多数 Internet 服务的非对称特点,负载调度器中只负责调度请求,而服务器直接将响应返回给客户,可以极大地提高整个集群系统的吞吐量调度器和服务器组都必须在物理上有一个网卡通过不分断的局域网相连,如通过交换机或者高速的HUB 相连。VIP 地址为调度器和服务器组共享,调度器配置的 VIP 地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把 VIP 地址配置在各自的 Non?ARP 网络设备上,它对外面是不可见的,只是用于处 理目标地址为 VIP 的网络请求。

 

以下是LVS-DR的工作原理,包括数据包、数据帧的走向和转换过程:官方的原理说明:Director接收用户的请求,然后根据负载均衡算法选取一台realserver,将包转发过去,最后由realserver直接回复给用户。

实例场景设备清单:

 

说明:我这里为了方便,client是与vip同一网段的机器。如果是外部的用户访问,将client替换成gateway即可,因为IP包头是不变的,变的只是源mac地址。

① client向目标vip发出请求,Director接收。此时IP包头及数据帧头信息如下:

 

② VS根据负载均衡算法选择一台active的realserver(假设是192.168.57.122),将此RIP所在网卡的mac地址作为目标mac地址,发送到局域网里。此时IP包头及数据帧头信息如下:

 

③ realserver(192.168.57.122)在局域网中收到这个帧,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文。随后重新封装报文,发送到局域网。此时IP包头及数据帧头信息如下:

 

④ 如果client与VS同一网段,那么client(192.168.57.135)将收到这个回复报文。如果跨了网段,那么报文通过gateway/路由器经由Internet返回给用户。

 

Ldirectord功能说明:

checktimeout=3

这个值就是 ldirectord 等待健康检查执行完毕的等待时间,单位秒。如果因为某些原因检查失败或在设置的时间周期内没有完成检查,ldirectord 将会从 IPVS 表中移除真实服务器

 

checkinterval=1

这个值指定 ldirectord 在两个检查之间的间隔时间。

 

autoreload=yes

如果启用这个选项,它使 ldirectord 按时计算这个配置文件的 md5 校验和值,看其是否有改动,当发现有改动时自动应用那些改动,这个方便的 特性运行你容易地改变集群的配置,你对配置文件改动后几秒,ldirectord 将察觉到有改动,调用 ipvsadm 命令实现改动,从有效服务器池中移除 真实服务器或按需要将它们添加到池中[17]。

 

quiescent=no

当一个节点在 checktimeout 设置的时间周期内没有响应时它是“静止的”(它的权重为0),当你设置了这个选项后,ldirectord 将 会从 IPVS 表中移除真实服务器而不是“停止”它,从 IPVS 表移除节点将中断现有的客户端连接,并使 LVS 丢掉所有的连接跟踪记录和持续连接模板,如果 你不将这个选项设置为 no,当某个节点崩溃时,对某些客户端计算机而言可能会显示为集群关闭了,因为在这个节点崩溃前这些客户端计算机被分配给它了,而连 接跟踪记录和程序连接模板仍然保留在 Director 上。

 

Ldirectord将会每秒连接一次real server并请求/index.html。如果real server返回的数据没有包含 "Test Message" 信息,则检测失败,并且real server将会被踢出集群,当real server被检测成功时,才会被恢复到集群。如果所有的real server都被剔除了,则本地的服务则会被当做real server而工作。

 

中文网站:zh.linuxvirtualserver.org

########################################################################

 

在real server上必须屏蔽掉vip,采用设置arp即在底层换掉mac地址

屏蔽方法:1、内核上屏蔽

               2、arptable(红帽推荐的方法)

实验环境:

Load Balancer:192.168.2.40(主)     192.168.2.19(备)       

Real Server:192.168.2.31              192.168.2.41

Vip   192.168.2.232

 

[root@server40 ha.d]# /etc/init.d/heartbeat stop

[root@server19 ha.d]# /etc/init.d/heartbeat stop

 

下载安装调度器的软件包:

ldirectord-3.9.2-1.2.x86_64.rpm

[root@server40 ~]# yum localinstall ldirectord-3.9.2-1.2.x86_64.rpm -y

 

由以下命令查看ldirectord的配置文件位置:

[root@server40 ~]# rpm -ql ldirectord

/usr/share/doc/packages/ldirectord/ldirectord.cf

 

将其配置文件拷贝至ha目录下:

[root@server40 ~]# cp /usr/share/doc/packages/ldirectord/ldirectord.cf /etc/ha.d/

 

修改配置文件:

Load Balancer 通过 Ldirectord 监测各 Real Server 的健康状况。在 Real Server 不可用时把它从群中剔除,恢复时重新加入。

[root@server40 ha.d]# vim ldirectord.cf 

# Sample for an http virtual service

virtual=192.168.2.232:80  ##这一行指定我们想要在 Director 上设置的 VIP 地址和端口号,这就是你要添加到 DNS 向客户端广播的 ip 地址,任何情况下,这就是客户端计算机用来连接到你配置的集群资源的 ip 地址。

        real=192.168.2.31:80 gate  ##服务器

        real=192.168.2.41:80 gate  ##服务器

        fallback=127.0.0.1:80 gate  ##当real server均不可用时,调用自己的服务

        service=http  ##定义服务

        scheduler=rr  ##调度策略,轮询

        #persistent=600

        #netmask=255.255.255.255

        protocol=tcp

        checktype=negotiate

        checkport=80   ##检测端口

        request="index.html"  ##ldirectord默认到real server找index.html文件,若找不到,则认为real server不可用

#       receive="Test Page"    ##ldirectord默认到real server找index.html文件的"Test Page"内容,若找不到,则认为real server不可用

#       virtualhost=

 

拷贝ldirectord.cf到HA的备节点上:

[root@server40 ha.d]# scp ldirectord.cf 192.168.2.19:/etc/ha.d/

 

刷掉之前实验时的IPVS表:

[root@server40 ha.d]# ipvsadm -C

 

[root@server40 ha.d]# vim haresources 

server40.example.com IPaddr::192.168.2.232/24/eth0:0 httpd ldirectord

 

[root@server40 ha.d]# scp haresources 192.168.2.19:/etc/ha.d/

 

基本的配置工作已经完成,可以尝试启动ldirectord,但当启动ldirectord时会报如下错:

[root@server40 ha.d]# /etc/init.d/ldirectord start

Starting ldirectord... Can't locate IO/Socket/INET6.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/sbin/ldirectord line 3061.

BEGIN failed--compilation aborted at /usr/sbin/ldirectord line 3061.

failure

[root@server40 ha.d]# yum install perl-IO-Socket-INET6 -y

 

[root@server31 ~]# ifconfig eth0:0 192.168.2.232 netmask 255.255.255.255

[root@server31 ~]# arptables -A IN -d 192.168.2.232 -j DROP

[root@server31 ~]# arptables -A OUT -s 192.168.2.232 -j mangle --mangle-ip-s 192.168.2.31 

[root@server31 ~]# /etc/init.d/arptables_jf save

 

[root@server41 ~]# ifconfig eth0:0 192.168.2.232 netmask 255.255.255.255

[root@server41 ~]#  arptables -A IN -d 192.168.2.232 -j DROP

[root@server41 ~]# arptables -A OUT -s 192.168.2.232 -j mangle --mangle-ip-s 192.168.2.41

[root@server41 ~]# /etc/init.d/arptables_jf save

 

 

停掉以下所有的服务,因为以下所有的服务均会由heartbeat启动:

[root@server40 ha.d]# /etc/init.d/ldirectord stop

Stopping ldirectord... success

[root@server41 ~]# /etc/init.d/httpd stop

[root@server19 ha.d]# /etc/init.d/ldirectord stop

Stopping ldirectord... success

[root@server19 ~]# /etc/init.d/heartbeat stop

Stopping High-Availability services: Done.

 

开机自启如下服务:

[root@server41 ~]# /etc/init.d/httpd stop

[root@server41 ~]# chkconfig httpd on

[root@server41 ~]# chkconfig arptables_jf on

 

[root@server31 ~]# /etc/init.d/httpd stop

[root@server31 ~]# chkconfig httpd on

[root@server31 ~]# chkconfig arptables_jf on

 

[root@server40 ha.d]# /etc/init.d/heartbeat start

[root@server19 ha.d]# /etc/init.d/heartbeat start

 

测试检查:

1、浏览器输入192.168.2.232

看到页面在两个realserver上切换表示成功!你也可以通过 ipvsadm -l 查看详细连接情况!

[root@server40 ha.d]# ipvsadm -l

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.2.232:http rr

  -> 192.168.2.31:http            Route   1      0          3         

  -> 192.168.2.41:http            Route   1      0          2    

 

2、先后关掉两台real server的httpd服务,刷浏览器测试

 

3、将主节点的心跳关闭,心跳自动切换到备节点

[root@server40 ha.d]# /etc/init.d/heartbeat stop

刷新浏览器依旧出现real server提供的服务的界面

 

 

 

 

 


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

上一篇:没有了

下一篇:共同探讨haproxy高可用负载均衡

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