LVS-DR

一:LVS(LVS中文手册:http://www.linuxvirtualserver.org/zh/lvs2.html)
1.LVS定义:
LVS是linux  virtual server的简写,即linux虚拟服务器,是一个虚拟的服务器集群系统。是由章文嵩博士开发的一款开源软件,1998年5月发布,是中国国内最早出现的自由软件项目之一,属于计算机软件类,有很好的可伸缩性,可靠性和可管理性。
2.lvs的特点:
可伸缩网络服务的几种结构,它们都需要一个前端的负载调度器(或者多个进行主从备份)。我们先分析实现虚拟网络服务的主要技术,指出IP负载均衡技术是在负载调度器的实现技术中效率最高的。在已有的IP负载均衡技术中,主要有通过网络地址转换(Network Address Translation)将一组服务器构成一个高性能的、高可用的虚拟服务器,我们称之为VS/NAT技术(Virtual Server via Network Address Translation)。在分析VS/NAT的缺点和网络服务的非对称性的基础上,我们提出了通过IP隧道实现虚拟服务器的方法VS/TUN (Virtual Server via IP Tunneling),和通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性。VS/NAT、VS/TUN和VS/DR技术是LVS集群中实现的三种IP负载均衡技术。
技术简介:
LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。
LVS模型中的主要角色:
1.调度器:Director,又称Dispatcher,Balancer,调度器主要用于接收用户请求。
2.真实主机Real Server,简称RS,用于真正处理用户请求。
3.Director Virtual IP:调度器用于与客户端通信的IP地址,简称VIP。
4.Real Server IP:后端主机的用于与调度器通信的IP地址,简称RIP。

LVS-DR_第1张图片
LVS三种IP负载均衡技术:
1.VS/NAT
通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器,真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。
2.VS/TUN
采用NAT技术时,由于请求和响应报文都必须经过调度器地址重写,当客户秦汉高俅越来越多时,调度器的处理能力将成为瓶颈。为了解决这个问题,调度器请求报文通过IP隧道转发至真实的服务器,而真实的服务器将响应直接返回给客户,所以调度器只处理请求报文。由于一般网络服务应答比请求报文大许多,采用VS/TUN技术后,集群系统的的最大吞吐量可以提高10倍。
3.VS/DR
VS/DR通过改写请求报文的MAC地址,将请求发送至真实服务器,而真实的服务器将响应直接返回给客户。同VS/TUN技术一样,VS/DR技术可以极大的提高集群系统的伸缩性。这种方法没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求,但是要求调度器与真实的服务器都有一块网卡连接在同一网段上。
DR模式工作原理过程简述:
VS/DR模式的连接调度和管理与NAT和TUN中的一样,他的报文转发方法和前两种不同,DR模式将报文直接路由(转发)给目标真实服务器。在DR模式中,调度器根据各个真实服务器的负载情况,连接多少等,动态的选择一台服务器,不修改目标IP和目标端口,也不封装IP报文,而是将请求报文的数据帧的目标MAC地址改为真实服务器的MAC地址。然后再将修改的数据帧在服务器组的局域网上发送。因为数据帧的MAC地址是真实服务器的MAC地址,并且又在同一个局域网。那么根据局域网的通讯原理,真实复位是一定能够接收到LB发送的数据包。真实服务器受到请求数据包的时候,揭开IP包查看接收道的IP是VIP。(此时只有自己的IP符合目标IP才会接收进来,所以我们需要在本地的lo或者eth0接口上面配置VIP。另外,由于网络接口都会进行ARP广播响应,但集群的其他及其都有这个VIP的lo接口,都响应就会起冲突。所以我们需要爱把真实的服务的lo接口ARP响应关掉。)然后真实服务器做成请求响应,之后根据自己的路由信息将这个数据包发送给客户端,并且目标地址IP还是VIP。

LVS-DR_第2张图片
二:LVS-DR模式下的负载均衡
实验环境
物理机:172.25.254.44
VIP:172.25.254.100
server1(VS):172.25.254.1
server2(RS):172.25.254.2
server3(RS):172.25.254.3
server4(VS2):172.25.254.4

####配置VS和RS####
1.更改server1的yum仓库(/content/rhel6.5/有需要加入仓库的包):

LVS-DR_第3张图片

LVS-DR_第4张图片

LVS-DR_第5张图片

LVS-DR_第6张图片

2.server1安装ipvsadm:

LVS-DR_第7张图片
3.给server1添加vip,并且给VIP添加RIP:

LVS-DR_第8张图片
ip addr add 172.25.254.100/24 dev eth0  #添加ip

LVS-DR_第9张图片

ipvsadm -A -t 172.25.254.100:80 -s rr  #临时添加VIP,rr轮循模式
ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.2:80 -g  #给VIP添加RIP,-g是使用DR模式
ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.3:80 -g 


ipvsadm -l  #显示内核虚拟服务器表
ipvsadm -ln  #以ip方式显示内核虚拟服务器表

LVS-DR_第10张图片
4.给server3写好apache的配置文件并重启服务

LVS-DR_第11张图片

5.给server2写好apache的配置文件并重启服务:

LVS-DR_第12张图片

6.在物理机中测试:

测试失败,是因为在两个RS中没有172.25.254.100这个IP,此时去配置

LVS-DR_第13张图片

LVS-DR_第14张图片

这个时候去测试,就是成功的,并且发现server2和server3是轮循状态

LVS-DR_第15张图片

此时server1中ipvsadm -ln 发现inActConn次数发现变化了,说明是调度器去调度的

LVS-DR_第16张图片

****在物理机中:

arp -an | grep 100 得到VIP的VMAC地址,此时VMAC地址为sserver1中的VMAC地址

arp -d 172.25.254.100 清除VMAC

curl 172.25.254.100 重新得到一个新的VMAC

arp -an | grep 100  查看得到的新VMAC地址,这个地址可能是server2或server3的eth0网卡的MAC(此实验中得到的是server3中的)

curl 172.25.254.100  ##一直得到的将会是server2或者server3中的内容(本实验是server3中的)

LVS-DR_第17张图片

此时在serverr1中ipvsadm -ln 发现server2和server3两个后端依旧存在,但是物理机已经增加了访问次数,inActConn数值却不变,说明VS调度器并没有使用,直接去访问server2或者server3了(本次实验中是访问server3了)

LVS-DR_第18张图片

####隐藏RS的VIP####(NO ARP)

1.在server3中安装arptables_jf工具

LVS-DR_第19张图片

2.配置server3的网络

arptables -A IN -d 172.25.254..100 -j DROP  #由于在同一个wlan中,不同计算机中相同ip会冲突,此时使用arp火墙将vip拦截,进入的时候丢弃172.25.254.100这个IP

arptables -A OUT -s 172.25.254.100 -j mangle --mangle-ip-s 172.25.254.3    #将RIP伪装成VIP出去

arptables -L  

/etc/init.d/arptables save   #保存修改

LVS-DR_第20张图片

 

3.在server2中安装arttables_jf ,配置网络

LVS-DR_第21张图片

LVS-DR_第22张图片

LVS-DR_第23张图片

4.物理机测试:

先清空MAC地址

重新访问

LVS-DR_第24张图片

#######健康检查######

ldirectord是专门为LVS监控而编写的,用来监控lvs架构中服务器池(server pool)的服务状态。

ldirectord运行在IPVS节点上,ldirectord作为一个守护进程启动后会对服务器池中的每一个真实服务器发送请求进行监控,如果服务器没有响应ldirectord的请求,那么ldirectord认为该服务器不可用,ldirectord会运行ipvsadm对IPVS表中该服务器进行删除,如果等下次再次进行检测有相应则通过ipvsadm进行添加。

1在server1中下载ldirectord安装包,使用yum安装,写好ldirectord配置文件:

LVS-DR_第25张图片

LVS-DR_第26张图片

LVS-DR_第27张图片

LVS-DR_第28张图片

2.在server1中安装apache,写好默认发布目录,并且加载服务(删除掉/var/www/html/下的php的东西):

LVS-DR_第29张图片

4.自身测试:

5.清除缓存,查看调度器是否完好,启动ldirectord工具:

LVS-DR_第30张图片

6.在物理机测试:

会出现server2和server3轮循的情况

LVS-DR_第31张图片

**当server2的apache坏掉了,ipvsadm -l会发现没有了server2的后端,此时在物理机中访问100,则只会出现server3,若server3也坏掉了,那么物理机中访问100时,只会出现server1的内容

*down掉server2

LVS-DR_第32张图片

LVS-DR_第33张图片

*down掉server3

LVS-DR_第34张图片

LVS-DR_第35张图片

*如果sever2和server3都开启服务,则就可以重新检测到

#####LVS+keepalived实现服务高可用#######

keepalived在这里主要用作RS的健康状态检查以及LoadBalance主机和BackUp主机之间的failover的实现。IPVS通常与Keepalived配合使用,后者也是IPVS项目的子项目之一,用于检测服务器状态。

在lvs体系中,Keepalived主要有3个功能:

1.管理LVS负载均衡软件

2.实现对LVS集群节点的健康检查功能

3.作为系统网络服务的高可用功能

主机环境:RHEL6.5系列,selinux和iptables disabled

实验主机:

LVS-ACTIVE:172.25.254.1

LVS-BACKUP:172.25.254.4

RS1:172.25.254.2

RS2:172.25.254.3

1.在server1中关闭ldirectord

2.(server1)主备机上进行软件安装和配置

LVS-DR_第36张图片

3.解压keepalived

tar zxf keepalived-2.0.6.tar.gz

cd keepalived-2.0.6

./configure -prefix=/usr/local/keepalived -with-init=SYSV   #转换成二进制可执行文件

make    #编译

make install    #安装

LVS-DR_第37张图片

LVS-DR_第38张图片

LVS-DR_第39张图片

LVS-DR_第40张图片

LVS-DR_第41张图片

4.server1中写好keepalived的配置文件,并开启服务:

LVS-DR_第42张图片

LVS-DR_第43张图片

LVS-DR_第44张图片

5.在server4中,安装:

LVS-DR_第45张图片

LVS-DR_第46张图片

6.编写server4的keepalived配置文件并开启服务:

LVS-DR_第47张图片

7.测试:

停掉server1的keepalived,看server4是否可以接收

LVS-DR_第48张图片

查看server4的日志发现(cat /var/log/message):

开启server1的keepalived发现server1又接管回来了

8.负载均衡,物理机连续curl 172.25.254.100,查看是否时负载均衡

LVS-DR_第49张图片

任意关闭RS上的httpd服务,看监管模块能否及时发现,然后评比节点,同时将服务转移到正常节点上来(本次实验关闭server2的httpd)

LVS-DR_第50张图片

#########LVS+Keepalived的应用情况##########

1.一个VIP拥有两个端口在两台主机上负载均衡

(1)在server3和server2中安装:

LVS-DR_第51张图片

LVS-DR_第52张图片

(3)在server1中编写keepalived的配置文件(给后面添加VI_2,即lft测试的ip为172.25.254.200)并重启服务:

LVS-DR_第53张图片

LVS-DR_第54张图片

(4)在server4中编写keepalived配置文件:

LVS-DR_第55张图片

LVS-DR_第56张图片

(5)在server2和server3中添加ip 172.25.254.200,并隐藏ip:

(6)在server2中新建一个目录server2,并开启server2和server3的服务:

(6)测试,看是否互相主备:

关于keepalived,物理机测试一遍,关闭server1的keepalived,物理机测试二遍

LVS-DR_第57张图片

LVS-DR_第58张图片

LVS-DR_第59张图片

关于lftp,物理机测试:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(LVS-DR)