LVS:linux virtual server,linux虚拟服务器,从linux内核2.6版本开始为模块集成与内核中,使用起来灵活方便,可以实现负载均衡群集部署的功能。
负载均衡分层:
1.负载调度层:
一台或者多台调度器组从,通过在主机加载lvs模块,生成虚拟ip ,调度器通过vip与客户端进行通信,接受客户端请求并根据自身调度算法将请求转发给合适节点根据调度模式,调度器还可能接受服务节点返回的响应包并转发给客户端
2.服务节点群集
接收调度器转发来的请求并响应
3.共享存储层
保证服务节点之间的数据一致性
调度模式:
NET模式
网络地址转换,客户端通过VIP将请求交给调度器(源IP是客户端的IP,目的IP是VIP),调度器接收到请求之后,根据调度算法将请求交给合适的服务器节点,(源IP为客户端的IP,目的IP为该接待你的真实IP),服务节点处理完请求包需要将响应包先交给调度器,(源IP为服务节点真实IP,目的IP为客户端的IP),调度器将该响应包的源IP改为VIP后将响应包发送给客户端。
DR:直接路由,调度器通过VIP接受客户端的请求,根据调度算法选择合适的服务节点,并将请求包的目的的MAC转发给该接节点,服务节点处理完成请求直接响客户端不再需要经过调度器的转发,在该模式下,调度器与服务节点都需要配置VIP,而且还需要注意俩个问题,一个是服务节点配置VIP的网卡不去响应客户端发送的ARP请求,一个是最好服务节点的VIP配置在本地回环网卡上,这样不会影响服务节点的网络通信。第二个问题是服务节点响应数据前需要知道客户端的MaC地址,此时需要发送arp请求,arp请求由服务节点的物理网卡发出,响应包由服务节点的本地回环网卡响应。
TUN:IP隧道,调度器接收到客户端的请求,对请求报进行再封装(二次封装后的源IP是调度器自己的IP地址,目的IP是服务节点自己的IP地址),服务节点接收到调度器封装后的请求包时进行解封装。并处理请求,响应时源IP为VIP,目的IP为客户端的IP,使用该模式需要保证调度器与服务节点所用的硬件及操作系统都支持隧道技术并配置隧道技术。
常用的调度算法
静态调度算法:调度器根据算法本身的特点进行转发数据
rr:round robin 轮询,调度器将请求按顺序依次交给服务节点
wrr:weight round robin 加权轮询,给服务节点设置权重,调度器根据权重值将请求交给
下面我来做一个小型的实验:
调度器:双网卡,路由转发
服务端1,2:安装web
首先我们先来做一下NET模式
在LVS调度器modprobe ip_vs
添加虚拟ip组,在组里添加ip节点到群集
-A 添加虚拟ip
-t 是tcp
-u udp
Vip:vport 指定虚拟ip和端口
-s 调度算法
-a添加真是节点
–t tcp
Vip:vport:指定将节点添加到虚拟ip所在的这个群集中
-r 指定节点的ip
-m nat模式
-g dr模式
-d 删除
保存配置
ipvsadm -S
修改保持会话时间
keepalivetimeout 0
验证:
DR模式
Dr:同网段能ping同
创建虚拟网卡并配置ip
在web1和2上做
关于arp的响应
Vim /etc/sysct.conf
在调度器安装
验证: