首页 > 代码库 > linux之LVS的DR模式搭建以及配置高可用管理LVS(heartbeat,keepalive)

linux之LVS的DR模式搭建以及配置高可用管理LVS(heartbeat,keepalive)

LVS/DR

Realserver:

172.25.44.6

172.25.44.7

Virtualserver:

VR3:172.25.44.3

VR5:172.25.44.5

Vip:172.25.44.100

Lvs和realserver必须在同一网段

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

Virtualserver:

ip addr add 172.25.44.100/24 dev eth0   ##添加vip

ip addr show

yum install ipvsadm -y

ipvsadm -A -t 172.25.44.100:80 -s wlc   ##-A:添加一个虚拟服务; -t:tcp 服务;-s:算法

ipvsadm -a -t 172.25.44.100:80 -r 172.25.44.6:80 -g  ##g:gate

ipvsadm -a -t 172.25.44.100:80 -r 172.25.44.7:80 -g

ipvsadm -l

技术分享

/etc/init.d/ipvsadm start

 

realserver:

rs6和rs7都进行下列配置

 

yum install httpd -y

vim /var/www/html/index.html  ##两个服务端写不同内容以便测试

/etc/init.d/httpd start

yum install arptables_jf -y

arptables -A IN -d 172.25.44.100 -j DROP

arptables -A OUT -s 172.25.44.100 -j mangle  --mangle-ip-s 172.25.44.6

arp协议不在对外广播RS上有vip,目的是让客户机Client访问VR上的vip。

 

测试;

物理机上用 arp -an |grep 172.25.44.100 检查vip运行的服务器

浏览器访问 172.25.44.100 反复刷新网页,每次出现的网页不同则表示成功。

Lvs不具备健康检查,当把一个RS6上的httpd服务停掉后,VR3仍会显示两个RS的策略,客户在访问的时候会仍会访问到发生错误的RS6上.

如下图在物理机上测试访问vip:

技术分享

那么lvs需要配置健康检查,防止客户访问到错误的页面

VR3需要下载软件包

ldirectord-3.9.5-3.1.x86_64.rpm

cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/

vim /etc/ha.d/ldirectord.cf

技术分享

fallback指的是当两个RS都坏掉后,就直接指向本地的http服务,所以一般指向本地后网页页面应为错误提示,提示用户停止继续访问。

ipvsadm -C  ##清除策略

ipvsadm -l  ##显示策略信息

 

/etc/init.d/ldirectord start

ipvsadm -l  ##检查是否显示策略

测试:

关闭RS7上的httpd服务

ipvsadm -l

技术分享

策略只显示RS6,那么客户机在访问时是否VR只将数据包扔给RS6,进行数据处理。

 

但是现在VR服务器只有一个,当VR发生问题时,则需要配置高可用集群管理

现有两种高可用集群管理模式:heartbeatkeepalive

配置方法如下所述:

 

LVS/DR+HEARTBEAT

添加一台VR5服务器,配置好heartbeats服务

VR3:172.25.44.3

VR5:172.25.44.5

VR3和VR5的heartbeat服务需要配置好(两台服务器本身不需要绑定vip)(heartbeat配置详见上一文档)

现在只需要改动

/etc/ha.d/haresources

技术分享

server5.example.com IPaddr::172.25.44.100/24/eth1 httpd ldirectord(实验以server5作为主机,server3作为备机)

Heartbeat服务开启时就可以自动开启 httpd ldirectord服务所以ldirectord服务和httpd在实验前处于关闭状态。现在集群配置完成

 

测试:

两边都打开heartbeat服务

/etc/init.d/heartbeat start

资源应先开启在主节点server5上,查看vip,ldirectord开启状态,并看策略文件。

技术分享

关闭server5结点上的heartbeat服务

查看资源是否在server3上开启,并查看服务是否正常运行。手动打开server5上的heartbeat服务,测试资源是否会回到server5上。

在测试过程中用arp -an | grep 172.25.44.100指令(在物理机上执行此指令)观察vip的运行点是否与server3或server5匹配(mac地址)

Keepalives+LVS

(heartbeat,ldirtoctty都停止)

node3和node5上配置keepalives

 

Node5:

编译原码keepalived服务

tar zxf keepalived-1.2.24.tar.gz

yum install gcc openssl-devel -y ##安装依赖软件

cd keepalived-1.2.24

./configure --prefix=/usr/local/keepalived

make && make install

 

ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

ln -s /usr/local/keepalived/etc/keepalived/ /etc/

ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin

##建立软连接

 

vim /etc/keepalived/keepalived.conf

技术分享

  3   global_defs {

  4    notification_email {

  5    root@localhost

  6 }

  7    notification_email_from keepalive@server5.example.com

  8    smtp_server 127.0.0.1

 

 17   vrrp_instance VI_1 {

 18     state MASTER

 19     interface eth1

 20     virtual_router_id 51    ##取值0-255

 

 27     virtual_ipaddress {

 28         172.25.44.100

 29     }

 30 }

技术分享

32 virtual_server 172.25.44.100 80 {

34     lb_algo wlc    ##wlc算法

35     lb_kind DR     ##DR模式

36     #persistence_timeout 50

 37     protocol TCP

 39     real_server 172.25.44.6 80 {

 40         weight 1

 41         TCP_CHECK {

 42             connect_timeout 3

 43             nb_get_retry 3

 44             delay_before_retry 3

 45         }

 46     }

 47     real_server 172.25.44.7 80 {

 48         weight 1

 49         TCP_CHECK {

 50             connect_timeout 3

 51             nb_get_retry 3

 52             delay_before_retry 3

 53         }

 54     }

 55

 56 }   ##56行以下内容全部删除

 

chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived  ###添加执行权限

scp -r /usr/local/keepalived/ 172.25.44.3:/usr/local   ##将编译后的配置文件传送到node3,node3上不必再进编译工作

Node3:

ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

ln -s /usr/local/keepalived/etc/keepalived/ /etc/

ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin

chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived

 

vim /etc/keepalived/keepalived.conf  ##只需要修改部分内容

 7    notification_email_from keepalive@server3.example.com

18     state BACKUP

 

 两个节点都把keepalived配置好后,启动服务

/etc/init.d/keepalived start        ##测试能否成功启动

成功启动后,测试:

1. 高可用测试:停止 master 上的 keepalived 服务,看 backup 是否接管。

2. 负载均衡测试:访问 http://172.25.44.100,看到页面在两个 realserver 上切换表示成功!

你也可以通过 ipvsadm -Lnc 查看详细连接情况!

3. 故障切换测试:任意关闭 realserver 上的 httpd 服务,Keepalived 监控模块是否能及时发现(keepalived具备健康检查),然后屏蔽故障节点,同时将服务转移到正常节点来执行。

 

 

 

 

 

 

 

 

本文出自 “11897256” 博客,请务必保留此出处http://65147718.blog.51cto.com/11897256/1864813

linux之LVS的DR模式搭建以及配置高可用管理LVS(heartbeat,keepalive)