半小时极限学会LVS(学不会顺着网线来打我)

目录

1. 什么是LVS?

2. 集群体系结构图​编辑

3. lvs集群的类型

3.1 nat模式

nat模式数据逻辑

3.2 DR模式

DR模式数据逻辑​编辑

DR模式的特点

4. lvs的调度算法

4.1 lvs调度算法类型

4.1.1 lvs静态调度算法

4.1.2 lvs动态调度算法

4.1.3 在4.15版本内核以后新增调度算法

5. lvs部署命令介绍

5.1 lvs软件相关信息

5.2 ipvsadm命令

实操记录

DR模式

6.LVS调度算法(十种)

静态:

动态:

7.防火墙解决轮询问题

8.lvs持久链接 -p


1. 什么是LVS?

LVS(Linux Virtual Server)是一种基于 Linux操作系统的负载均衡技术,它通过IP负载均衡和NAT(Network Address Translation)技术,将多个服务器组成一个虚拟服务器集群,从而实现高可用性和高性能的网络服务。

2. 集群体系结构图

3. lvs集群的类型

lvs-nat
修改请求报文的目标 IP, 多目标 IP DNAT
lvs-dr
操纵封装新的 MAC 地址
lvs-tun
在原请求 IP 报文之外新加一个 IP 首部
lvs-fullnat
修改请求报文的源和目标 IP

3.1 nat模式

Ivs-nat:
1.本质是多目标 IP DNAT ,通过将请求报文中的目标地址和目标端口修改为某挑出的 RS RIP 和 PORT实现转发
2.RIP DIP 应在同一个 IP 网络,且应使用私网地址 ;RS 的网关要指向 DIP
3.请求报文和响应报文都必须经由 Director 转发, Director 易于成为系统瓶颈
4.支持端口映射,可修改请求报文的目标 PORT
5.VS 必须是 Linux 系统, RS 可以是任意 OS 系统

nat模式数据逻辑

3.2 DR模式

DR Direct Routing ,直接路由, LVS 默认模式 , 应用最广泛 , 通过为请求报文重新封装一个 MAC 首部进行转发,源MAC DIP 所在的接口的 MAC ,目标 MAC 是某挑选出的 RS RIP 所在接口的 MAC 地址;源 IP/PORT,以及目标 IP/PORT 均保持不变。

DR模式数据逻辑

DR模式的特点

1.Director 和各 RS 都配置有 VIP
2. 确保前端路由器将目标 IP VIP 的请求报文发往 Director
3. 在前端网关做静态绑定 VIP Director MAC 地址
4.RS RIP 可以使用私网地址,也可以是公网地址; RIP DIP 在同一 IP 网络;
5.RIP 的网关不能指向 DIP ,以确保响应报文不会经由 Director
6.RS Director 要在同一个物理网络
7. 请求报文要经由 Director ,但响应报文不经由 Director ,而由 RS 直接发往 Client
8. 不支持端口映射(端口不能修败)
9.RS 可使用大多数 OS 系统

4. lvs的调度算法

4.1 lvs调度算法类型

ipvs scheduler :根据其调度时是否考虑各 RS 当前的负载状态被分为两种:静态方法和动态方法。
静态方法:仅根据算法本身进行调度,不考虑 RS 的负载情况。
动态方法:主要根据每 RS 当前的负载状态及调度算法进行调度 Overhead=value 较小的 RS 将被调度。

4.1.1 lvs静态调度算法

1 RR roundrobin 轮询 RS 分别被调度,当 RS 配置有差别时不推荐
2 WRR Weighted RR ,加权轮询根据 RS 的配置进行加权调度,性能差的 RS 被调度的次数少
3 SH Source Hashing ,实现 session sticky ,源 IP 地址 hash ;将来自于同一个 IP 地址的请求始终发往 第一次挑中的RS ,从而实现会话绑定。
4 DH Destination Hashing ;目标地址哈希,第一次轮询调度至 RS ,后续将发往同一个目标地址的请求始终转发至第一次挑中的RS ,典型使用场景是正向代理缓存场景中的负载均衡,如:宽带运营商。

4.1.2 lvs动态调度算法

主要根据 RS 当前的负载状态及调度算法进行调度 Overhead=value 较小的 RS 会被调度
1 LC least connections (最少链接发)
适用于长连接应用 Overhead (负载值) =activeconns (活动链接数) x 256+inactiveconns (非活
动链接数)
2 WLC Weighted LC (权重最少链接)
默认调度方法 Overhead=(activeconns x 256+inactiveconns)/weight
3 SED Shortest Expection Delay,
初始连接高权重优先 Overhead=(activeconns+1+inactiveconns) x 256/weight
但是,当 node1 的权重为 1 node2 的权重为 10 ,经过运算前几次的调度都会被 node2 承接
4 NQ Never Queue ,第一轮均匀分配,后续 SED
5 LBLC Locality-Based LC ,动态的 DH 算法,使用场景:根据负载状态实现正向代理
6 LBLCR LBLC with Replication ,带复制功能的 LBLC ,解决 LBLC 负载不均衡问题,从负载重的复制
到负载轻的 RS

4.1.3 4.15版本内核以后新增调度算法

1.FO(Weighted Fai Over) 调度算法:常用作灰度发布
在此 FO 算法中,遍历虚拟服务所关联的真实服务器链表,找到还未过载 ( 未设置 IP_VS_DEST_F
OVERLOAD 标志 ) 的且权重最高的真实服务器,进行调度。当服务器承接大量链接,我们可以对此服务器进行过载标记(IP_VS_DEST_F OVERLOAD ),那么 vs 调度器就不会把链接调度到有过载标记的主机中。
2.OVF(Overflow-connection) 调度算法 基于真实服务器的活动连接数量和权重值实现。将新连接调度到权重值最高的真实服务器,直到其活动连接数量超过权重值,之后调度到下一个权重值最高的真实服务器, 在此 OVF 算法中,遍历虚拟服务相关联的真实服务器链表,找到权重值最高的可用真实服务器。一个可用的真实服务器需要同时满足以下条 件:
1.未过载 ( 未设置 IP_VS_DEST_F OVERLOAD 标志 )。
2.真实服务器当前的活动连接数量小于其权重值。
3.其权重值不为零。

5. lvs部署命令介绍

5.1 lvs软件相关信息

程序包: ipvsadm
Unit File: ipvsadm.service
主程序: /usr/sbin/ipvsadm
规则保存工具: /usr/sbin/ipvsadm-save
规则重载工具: /usr/sbin/ipvsadm-restore
配置文件: /etc/sysconfig/ipvsadm-config
ipvs 调度规则文件: /etc/sysconfig/ipvsadm

5.2 ipvsadm命令

1.集群服务管理 : 增、删、改
2.集群服务的 RS 管理 : 增、删、改 、查看

实操记录

DR模式

先准备五台虚机,配置好IP地址以及网关、主机名:
主机名lvswebserver1webserver2clientrouter
IP地址

172.25.254.50/24

172.25.254.200/32

172.25.254.10/24

172.25.254.200/32

172.25.254.20/24

172.25.254.200/32

192.168.0.200/24

192.168.0.100/24 

172.25.254.100/24

网关

vm1、lo

vm1、lovm1、lovm8vm8、vm1
网卡172.25.254.100172.25.254.100172.25.254.100192.168.0.100
webserver1和webserver2都设置:
lvs虚机上下载包~
# dnf install ipvsadm -y 

 [root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.0.100:80 rr

 [root@lvs ~]# ipvsadm -a -t 192.168.0.100 -r 172.25.254.10 -m
Service not defined
[root@lvs ~]# ipvsadm -a -t 192.168.0.100:80 -r 172.25.254.10:80 -m
[root@lvs ~]# ipvsadm -a -t 192.168.0.100:80 -r 172.25.254.20:80 -m

 [root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.0.100:80 rr
  -> 172.25.254.10:80             Masq    1      0          0
  -> 172.25.254.20:80             Masq    1      0          0

 在client上测试:

[root@client ~]# for i in {1..10}; do curl 192.168.0.100; done
webserver2 - 172.25.254.20
webserver1 - 172.25.254.10
webserver2 - 172.25.254.20
webserver1 - 172.25.254.10
webserver2 - 172.25.254.20
webserver1 - 172.25.254.10
webserver2 - 172.25.254.20
webserver1 - 172.25.254.10
webserver2 - 172.25.254.20
webserver1 - 172.25.254.10

 成功~

6.LVS调度算法(十种)

静态

RR

WRR

SH:绑定会话,有弊端,对源做

DH:对目的地做

动态:

LC:最少链接发,负载值=活动链接数x256+非活动链接数

WLC:权重最少链接,有弊端

SED:初始链接高权重,有弊端

所以先每人一个流量,再SED。

NQ:第一轮均匀分配,后续SED

LBLC:动态的DH算法,即使流量顶不住了它也不会去管。

LBLCR:带复制功能,如果流量顶不住了,它会把数据复制过来。

7.防火墙解决轮询问题

首先下载httpd所用到的模块:

[root@webserver1 ~]# yum install mod_ssl -y

[root@webserver1 ~]# systemctl restart httpd

[root@webserver2 ~]# systemctl restart httpd 

[root@webserver2 ~]# netstat -antlupe | grep httpd

[root@lvs ~]# curl -k https://172.25.254.20

 [root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.0.100:80 rr
  -> 172.25.254.10:80             Masq    1      0          0
  -> 172.25.254.20:80             Masq    1      0          0

 [root@lvs ~]# ipvsadm -A -t 172.25.254.200:443 -s rr

[root@lvs ~]# ipvsadm -a -t 172.25.254.200:443 -r 172.25.254.10:443 -g

[root@lvs ~]# ipvsadm -a -t 172.25.254.200:443 -r 172.25.254.20:443 -g

 不合理,因为两个是分开控制的。

所以可以用防火墙标记解决轮询调度问题:

[root@lvs ~]# iptables -t mangle -nL

[root@lvs ~]# iptableds -t mangle -A PREROUTING -d 172.25.254.200 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 66

[root@lvs ~]# iptables -t mangle -nL

 [root@lvs ~]# ipvsadm -C

[root@lvs ~]# ipvsadm -Ln

[root@lvs ~]# ipvsadm -A -f 66  -s rr

[root@lvs ~]# ipvsadm -a -f 66 -r 172.25.254.10 -g

[root@lvs ~]# ipvsadm -a -f 66 -r 172.25.254.20 -g

[root@lvs ~]# ipvsadm -Ln

如果没做防火墙解决轮询:

 

做了防火墙解决轮询:

8.lvs持久链接 -p

[root@lvs ~]# ipvsadm -Ln

 

[root@lvs ~]# ipvsadm -E -f 66 -s rr -p 2

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值