lvs详解

一:优点:

1、抗负载能力强。抗负载能力强、性能高,能达到F5硬件的60%;对内存和cpu资源消耗比较低
2、工作在网络4层,通过vrrp协议转发(仅作分发之用),具体的流量由linux内核处理,因此没有流量的产生。
2、稳定性、可靠性好,自身有完美的热备方案;(如:LVS+Keepalived)
3、应用范围比较广,可以对所有应用做负载均衡;
4、不支持正则处理,不能做动静分离。
5、支持负载均衡算法:rr(轮循)、wrr(带权轮循)、lc(最小连接)、wlc(权重最小连接)
6、配置 复杂,对网络依赖比较大,稳定性很高。

二:三种工作模式

nat模式:

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP(客户端IP),后面统称为CIP),目标地址为VIP(负载均衡器前端地址,后面统称为VIP)。

②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的目标地址改为了后端服务器的RIP地址并将报文根据算法发送出去。

③.报文送到Real Server后,由于报文的目标地址是自己,所以会响应该请求,并将响应报文返还给LVS。

④.然后lvs将此报文的源地址修改为本机并发送给客户端。

优点:集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址。

缺点:扩展性有限。当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过负载均衡器。当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速度就会变慢!

1)nat环境部署:

 1 DS:桥接:192.168.1.192        #连接客户端的ip需要通外网,桥接或者nat模式
 2         255.255.255.0
 3         192.168.1.1
 4    vmnet2:192.168.75.1
 5           255.255.255.0
 6 RS1:192.168.75.2
 7     255.255.255.0
 8     192.168.75.1           #真实提供服务的服务器网关必须指向调度器ip
 9 RS2:192.168.75.3
10     255.255.255.0
11     192.168.75.1

2)挂载

mount /dev/cdrom /mnt/

3)安装ipvsadm包

yum -y install ipvsadm

4)开启ip_forward转发

echo 1 > /proc/sys/net/ipv4/ip_forward    (临时开启)

或vim /sysctl.conf 写入net.ipv4.ipforward=1 ,保存退出,执行sysctl -p   (永久开启)

5)配置nat模式

1 ipvsadm -A -t 192.168.1.192:80 -s wrr  #先添加对外连接的ip地址,端口默认80,使用加权轮叫算法
2 ipvsadm -a -t 192.168.1.192:80 -r 192.168.75.2 -w 2 -m  #再分别添加两台上游服务器,-m代表nat模式
3 ipvsadm -a -t 192.168.1.192:80 -r 192.168.75.3 -w 1 -m  

DR模式:

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。   

②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将目标MAC改为了RIP的MAC地址,并将此包发送给RS。

③.RS发现请求报文中的目的MAC是自己,就会将次报文接收下来,处理完请求报文后,将响应报文通过lo接口送给eth0网卡直接发送给客户端。

注意:需要设置lo接口的VIP不能响应本地网络内的arp请求      #即让vip不对外宣告隐藏自己,只接受负载均衡器转发的请求

优点:

和TUN(隧道模式)一样,负载均衡器也只是分发请求,应答包通过单独的路由方法返回给客户端。与VS-TUN相比,VS-DR这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。 

DR模式的效率很高,但是配置稍微复杂一点,因此对于访问量不是特别大的公司可以用haproxy/nginx取代。日1000-2000W PV或者并发请求1万一下都可以考虑用haproxy/nginx。

缺点:所有 RS 节点和调度器 LB 只能在一个局域网里面。

 1 direct_server:192.168.254.17
 2                                          
 3     real_server:192.168.254.18
 4     real_server:192.168.254.19
 5   #以上三台集群服务器都要为同一网段         
 6     #vip为虚拟服务ip
 7     vip:192.168.254.250    
 8     
 9     
10 direct_server:
11     yum install ipvsadm
12 
13 老板
14 direct_server:
15     ipvsadm -C    #清除配置信息
16     
17     
18     #添加对外提供的服务ip
19     ipvsadm -A -t 192.168.254.250:80 -s rr    #-A为ADD   -t为tcp   -s rr为设置算法为轮叫算法
20     
21     #添加2台real_server主机
22     ipvsadm -a -t 192.168.254.250:80 -r 192.168.254.18:80 -g #-a为add   -t为tcp   -r为realserver   -g为DR路由模式
23     ipvsadm -a -t 192.168.254.250:80 -r 192.168.254.19:80 -g #-a为add   -t为tcp   -r为realserver   -g为DR路由模式
24     
25     #配置网卡的子网口为vip,ip地址为192.168.254.250
26     ifconfig ens33:0 192.168.254.250 broadcast 192.168.254.250 netmask 255.255.255.255 up   #ens33:0自定义名称  up:开启
27     
28     #添加路由(访问192.168.254.250都走ens33:0这个网卡)
29     route add -host 192.168.254.250 dev ens33:0
30 
31 员工1 | 员工2
32 real_server:
33     #在回环地址的子网口上配置服务ip(vip)
34     ifconfig lo:0 192.168.254.250 broadcast 192.168.254.250 netmask 255.255.255.255 up 
35     
36     #添加路由
37     route add -host 192.168.254.250 dev lo:0
38     #然后在两台real_server上写入
39     echo "1">/proc/sys/net/ipv4/conf/lo/arp_ignore
40     echo "2">/proc/sys/net/ipv4/conf/lo/arp_announce
41     echo "1">/proc/sys/net/ipv4/conf/all/arp_ignore
42     echo "2">/proc/sys/net/ipv4/conf/all/arp_announce    只写两个all也可以  
43 
44 
45     echo "0">/proc/sys/net/ipv4/conf/lo/arp_ignore
46     echo "0">/proc/sys/net/ipv4/conf/lo/arp_announce
47     echo "0">/proc/sys/net/ipv4/conf/all/arp_ignore
48     echo "0">/proc/sys/net/ipv4/conf/all/arp_announce  
49     
50     
51     arp_ignore:定义接收到ARP请求时的响应级别      
52         0:默认,只用本地配置的有响应地址都给予响应       
53         1仅仅在目标IP是本地地址,并且是配置在请求进来的接口上的时候才给予响应 √
54             (仅在请求的目标地址配置请求到达的接口上的时候,才给予响应)
55 
56     arp_announce:定义将自己的地址向外通告时的级别       
57         0:默认,表示使用配置在任何接口的任何地址向外通告       
58         1:尽量仅向目标网络通告与其网络匹配的地址       
59         2仅向与本地接口上地址匹配的网络进行通告

猜你喜欢

转载自www.cnblogs.com/zzzynx/p/10829357.html
lvs