一.LVS介绍【如果不去指定调度算法,那么LVS默认的调度算法就是wlc算法。】
LVS linux虚拟服务
由国内章博士研发,在红帽5的时代发布。
作为Linux内核模块,基于内核工作。
LVS的调度算法:
1.rr轮询算法【优点:负载均衡的效果好,缺点:面对后端性能不同的服务器,会造成资源浪费。】
2.wrr基于权重的轮询 ,权重值就是阿拉伯数字,【缺点就是,给服务器大的权重值,虽然服务器的配置好,但是此时服务器的CPU使用率已经达到了百分之90多,并且此时其他的服务器的CPU还有大量空余。如果此时还使用基于权重的轮询,将大量的客户端请求转发到这个服务器,这个服务器会变得非常卡。】
会话保持方案:
a.会话共享存储,
b.换调度算法
3.lc最少连接, 哪个服务器的连接数最少,就将新的客户端请求交给哪个服务器进行处理。
4.wlc基于权重的最少连接:默认的调度算法。【即考虑服务器的配置,同时考虑服务器处理连接的连接数。】在接收客户端新请求的时候,挑选配置相对高,连接数量相对少的服务器来处理客户端请求。
5.sh 源地址hash【在一段时间之内将同一个客户端的请求,转交给同一个服务器进行处理,能够帮助我们廉价的解决会话保持问题。会很严重的破坏负载均衡效果。对客户端IP地址进行哈希运算。 】
6.dh算法,目的地址哈希hash,会对数据中的目的IP地址做哈希运算,【对服务器的IP地址进行哈希运算。能够很有效的提升缓存的命中率,客户端的访问效率也就高了,如果不同客户端请求的哈希运算结果一致的话,就将运算结果一致的客户端请求交给同一个服务器进行处理。】【主要用在后端服务器是缓存服务器的场景下。】
二.LVS工作模式
根据内部工作原理:
1.NAT模式
2.DR模式
3.TUN模式
NAT模式和DR模式的区别?【重点】

如上图所示,这是LVS的NAT模式的工作流程,这是一个负载均衡集群的结构,随后是两个调取器,调度器之后是一些servers服务器,接收请求是客户端到调度器到服务器,响应请求是服务器到调度器到客户端。

如上图所示,这是LVS的DR模式,接收请求是客户端到调度器到后端服务器,响应请求是服务器直接给客户端进行响应。【此时只有请求是经过调度器的,响应是直接给客户端的。】
以NAT模式构建负载均衡集群的时候,不建议后端的服务器的数量过多,如果后端的服务器的数量过多,请求和响应都要经过调度器,此时调度器的性能就会成为访问速度的瓶颈,造成客户端的访问效率降低。
以DR模式构建负载均衡集群的时候,请求是经过调度器的,响应是服务器直接返回给客户端的。
相对而言,后端服务器的数量可以比NAT模式的后端服务器的数量多一些。
1.LVS中的NAT模式

服务器的IP地址在整个集群中成为RIP地址。
调度器上面要有一个IP地址,用来和后端服务器进行通信,
调度器上面要有一个VIP地址,调度器基于这个VIP地址来提供虚拟服务,
客户端上面的IP地址成为CIP
客户端联系的是VIP地址,调度器通过DIP联系后端服务器来转发客户端请求。
核心要素:【重点,】
1.请求,响应都要经过调度器
2.调度器上的VIP和DIP需要分属于不同的网络。
3.调度器要开启路由转发功能,实现两个网段之间的通信。
4.所有real server 的网关地址需要指向调度器的DIP地址。
5.不建议后端服务器的数量过多。
此时有一个问题?
在响应客户端数据的时候,是服务器将数据返回给调度器,调度器再将数据返回给客户端,那么怎么使得服务器先把响应数据交给调度器?
需要把后端服务器的网关指定为调度器的DIP地址,那么之后服务器再往外发送数据的时候,需要先经过网关地址,此时后端服务器的网关地址就是调度器的DIP地址。
以LVS的NAT模式构建集群的话,建议后端的服务器的数量在20以内。
NAT模式的工作原理【重点,】

如上图所示,蓝色的是请求数据,黄色的是响应数据。
来自客户端的请求,目的IP地址会从VIP地址替换成服务器的RIP,
返回给客户端的响应,源IP地址会从RIP地址替换成调度器的VIP地址。
请求经过调度器时,目的IP会被转换为RIP
响应经过调度器时,源IP会被转换为VIP
FULLNAT【改进的NAT模式,但是Linux内核不支持,需要手动修改服务器内核代码。使得Linux操作系统支持这个FULLNAT模式。】

蓝色的还是客户端的请求,黄色的是返回给客户端的响应。
2.NAT模式案例

1.配置调度器地址【一个vip地址,一个DIP地址,不同网段。两块网卡】
2.配置real server地址,注意网关【指定为调度器的DIP地址。】
3.在后端real server 安装httpd,建立测试网页。
4.安装ipvsadm工具。【在调度器上。对LVS软件进行管理。】
5.开启调度器的路由转发功能。

如上图所示,将这个net.ipv4.ip_forward = 0的值改为1
想要体现出负载均衡的效果,可以给后端服务器不同的测试页面。当显示出不同的测试页面的时候,就证明负载均衡成功。

如上图所示,这是永久修改系统参数,开启调度器的路由转发功能。
6.添加虚拟服务,创建集群

如上图所示,这就是创建了一个虚拟服务,一个调度器上面是可以启用多个虚拟服务的。
-A 向LVS配置中新增一个虚拟服务。
-t指定虚拟服务类型是TCP类型,并且绑定这个虚拟服务与后续的IP地址和端口。
-s定义负载均衡算法,控制请求分发到后端服务器的策略。
功能:在 LVS 集群中创建一个 TCP 虚拟服务,监听 192.168.146.100:80,并采用轮询(rr)算法实现负载均衡。
使用场景:当客户端访问 192.168.146.100:80 时,LVS 会根据轮询策略将请求依次转发到后端的真实服务器(需额外配置真实服务器列表)。

如上图所示,这是用来查看负载均衡表,查看调度器上有哪些虚拟服务,以及后端的real server
如果要修改轮询的算法的话,将-A选项修改为-E选项就是修改
7.添加real server信息

如上图所示,这是给这个调度器上的虚拟服务添加real server信息,随后查看负载均衡表,可以看到当前负载均衡集群的信息。
也就是说,将来当这个192.168.149.100:80这个虚拟服务接收到请求后,会按照轮询算法,向后端的real server转发服务。
这里的-m代表的是以NAT模式创建负载均衡集群。
可以使用-w来给后端的real server服务器添加权重。
8.测试访问
这个负载均衡集群搭建好之后,测试访问需要使用调度器的VIP地址来访问服务。

如上图所示,这是访问vip地址的80端口服务,此时出现web01和web02轮询出现,代表按照轮询算法的负载均衡集群搭建成功。

如上图所示,我们可以到调度器上使用-c选项来查看当前负载均衡表的详细信息。