LVS工作原理
>1. DS:Director Server。指的是前端负载均衡器节点。
>2. RS:Real Server。后端真实的工作服务器。
>3. VIP:向外部直接面向用户请求,作为用户请求的目标的IP地址。
>4. DIP:Director Server IP,主要用于和内部主机通讯的IP地址。
>5. RIP:Real Server IP,后端服务器的IP地址。
>6. CIP:Client IP,访问客户端的IP地址。
-
DR模式
-
用户请求LVS到达director,director将请求的报文的目标MAC地址改成后端的realserver MAC地址,目标IP为VIP(不变),源IP为用户IP地址(保持不变),然后Director将报文发送到realserver,realserver检测到目标为自己本地VIP,如果在同一个网段,然后将请求直接返给用户。如果用户跟realserver不在一个网段,则通过网关返回用户
![iOBmlT.png](https://img.haomeiwen.com/i12142434/a9c01b00614584d1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
-
-
NTA模式
-
用户请求LVS到达director,director将请求的报文的目标IP地址改成后端的realserver IP地址,同时将报文的目标端口也改成后端选定的realserver相应端口,最后将报文发送到realserver,realserver将数据返给director,director再把数据发送给用户。(两次请求都经过director,所以访问大的话,director会成为瓶颈)
iOBl79.png
-
-
TUN模式
-
用户请求LVS到达director,报文的源IP为CIP,目标IP为VIP。 IPVS比对数据包请求的服务是否为集群服务,若是,在请求报文的首部再次封装一层IP报文,封装源IP为为DIP,目标IP为RIP。 此时源IP为DIP,目标IP为RIP 。RS收到报文处理完请求,并响应,此时的源IP地址为VIP,目标IP为CIP。
iOco4J.png负载均衡算法(常见)
-
轮叫调度 rr
- 依次循环的方式将请求调度到不同的服务器上,该算法最大的特点就是简单。轮询算法假设所有的服务器处理请求的能力都是一样的,调度器会将所有的请求平均分配给每个真实服务器,不管后端 RS 配置和处理能力,非常均衡地分发下去。
-
加权轮叫 wrr
- RS 设置权重,权重越高,那么分发的请求数越多,权重的取值范围 0 – 100。主要是对rr算法的一种优化和补充, LVS 会考虑每台服务器的性能,并给每台服务器添加要给权值,如果服务器A的权值为1,服务器B的权值为2,则调度到服务器B的请求会是服务器A的2倍。权值越高的服务器,处理的请求越多。
-
最少链接 lc
- 后端 RS 的连接数来决定把请求分发给谁
-
加权最少链接 wlc
- 比lc多出权重概念
-
轮叫调度 rr
-
安装及命令
-
安装
2.6以后内核已经继承lvs,仅需下载lvs的管理工具ipvsadm yum install ipvsadm -y
-
命令
-A 增加一台虚拟服务器VIP地址; -t 虚拟服务器提供的是tcp服务; -s 使用的调度算法(rr,wrr,lc,wlc等); -a 在虚拟服务器中增加一台后端真实服务器; -r 指定真实服务器地址; -w 后端真实服务器的权重; -m 设置当前转发方式为NAT模式; -g 设置当前转发方式直接路由模式; -i 设置当前转发方式模式为隧道模式。
-
案例
yum install ipvsadm -y # 增加vip 轮询模式 ipvsadm -A -t 192.168.33.188:80 -s rr # vip 增加一台RS DR模式 权重为2 ipvsadm -a -t 192.168.33.188:80 -r 192.168.33.12 -g -w 2 ipvsadm -a -t 192.168.33.188:80 -r 192.168.33.13 -g -w 2 # 网卡绑定vip ifconfig ens33:0 192.168.28.200 netmask 255.255.255.255 broadcast 192.168.28.200 /sbin/route add -host 192.168.28.200 dev ens33:0
RS设置
- 在RS服务器运行脚本 绑定在lo网卡上
#!/bin/sh #LVS Client Server VIP=192.168.33.188 case $1 in start) ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP /sbin/route add -host $VIP dev lo:0 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce sysctl -p >/dev/null 2>&1 echo "RealServer Start OK" exit 0 ;; stop) ifconfig lo:0 down route del $VIP >/dev/null 2>&1 echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce echo "RealServer Stoped OK" exit 1 ;; *) echo "Usage: $0 {start|stop}" ;; esac
-
网友评论