概述:
lvs负载均衡是一个虚拟服务器集群项目,无论是哪一种lvs结构都需要一个前端的调度器,让原本应该直接访问真实服务器的网络请求经过该调度器,让该调度器去决定该请求应该由谁处理。根据调度器将网络请求分配到真正服务器的不同方式,基本分成了三种模式--nat,tun,dr,还有一种需要对内核添加功能的模式是fullnat,但这次我们先不介绍这个模式。
1.三种模式的介绍
nat模式,这种模式十分好理解,也很好配置,顾名思义nat(Network Address Translation)地址转换的意思,调度器收到客户端请求后将这个请求的ip头部中的目的地址转换成为调度器内网的某台真实主机(选择哪台主机与调度算法有关)。
优点:只要调度器拥有真实ip即可,真正的服务器可以设置为内网的任意ip。
缺点:扩展性不好,因为所有的真实服务都必须和调度器在一个局域网内,而且必须以调度器作为网关,所以所有的网络请求都要经过调度器进来,也要经过调度器出去,当真实服务扩展时,调度器的瓶颈将会越来越明显。
tun模式,该模式是在ip包外再添加一个ip包头也就是ip隧道技术,真实服务也可以接受这样的数据包,解析后去和真实的客户端通信。
优点:现在调度器只是一个添加ip包头的作用,调度器的性能不再成为系统的瓶颈。而且由于使用的是隧道技术,真实服务器可以在公网上布置。
缺点:网络上对数据包的大小是有规定的,包过大将会被拆分,而且每台真实服务都要有公网上的合法ip。
dr模式,与前两种不同的是,这个模式修改的是以太网包的头部的目的mac地址,将数据包转发到不同mac地址的主机,之后真实服务器将和客户端进行通信。
优点:和tun一样,不会让调度器成为系统的瓶颈,而且不需要ip隧道技术。
缺点:调度器和真实服务都需要配置上虚拟ip,而且为了防止局域网内的mac地址混淆,需要关闭掉真实服务器对局域网内对寻找虚拟ip主机的mac地址广播的回应。
2.配置DR模式
首先安装lvs的支持软件
[root@dp1 ~]# yum install ipvsadm
设置虚拟ip和提供的服务,
[root@dp1 ~]# ipvsadm -A -t 172.25.9.100:80 -s rr
-A添加一个虚拟服务,-t添加tcp服务,-s lvs的算法
[root@dp1 ~]# ipvsadm -a -t 172.25.9.100:80 -r 172.25.9.42 -g
[root@dp1 ~]# ipvsadm -a -t 172.25.9.100:80 -r 172.25.9.43 -g
添加真实服务的节点,-a 添加一个真实服务的虚拟ip,-r定义real service的地址,-g使用直接路由方式(DR)。
[root@dp1 ~]# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.25.9.100:http rr
-> rs1.mo.com:http Route 1 0 0
-> rs2.mo.com:http Route 1 0 0
查看lvs的状态此时给dp1添加虚拟ip。
[root@rs1 ~]# ip addr add 172.25.9.100/24 dev eth0
在真实服务器上架设http服务
[root@rs1 html]# /etc/init.d/httpd start
Starting httpd: [ OK ]
[root@rs1 html]# ls
index.html
[root@rs2 html]#