Linux 虚拟服务器(LVS)由章文嵩在国防科技大学就读博士期间创建
利用LVS可以实现高可用的、可伸缩的Web、Mail、Cache和Media等网络服务,已经被集成到linux内核里了。

1.什么是集群?

     使用一组服务器提供相同的服务
2.使用集群的目的?

     增强可靠性   降低成本   提高可扩展性   提高性能
3.集群分类? 

    HPC 高性能计算集群    (气象   航天   航空)
    LB    负载均衡集群 (平均地分摊处理)    * LVS    hproxy

    HA    高可用集群    (主 备)    *     keepalived         RHCS
4.LVS负载均衡方式?
    LVS/NAT模式(网络地址转换)   *
    LVS/DR模式(直接路由)   * *
    LVS/TUN模式(隧道)

5.LVS术语?
Director Server:调度服务器,将负载分发到Real Server的服务器
Real Server : 真实服务器,真正提供应用服务的服务器
RIP:真实IP地址,集群节点上使用的IP地址
DIP:Director连到Real Server的IP地址
VIP:虚拟IP地址,公布给用户访问的IP地址

实验(一)

实验目的:实现LVS/NAT模式的负载均衡集群

实验环境准备:

外网IP地址:1.1.1.1 主机名waiwang

内网IP地址:192.168.1.10 主机名:localhost   web1

内网IP地址:192.168.1.20 主机名:localhost   web2

配置nat模式服务器的IP地址:1.1.1.254 和IP地址192.168.1.254  主机名:fanlj

1.在nat模式的服务器上开启路由转发功能,能够接收两个网段的包。所以开启路由转发功能。

临时开启内核路由转发功能

wKiom1X_10HR_Fk3AACxps-3ZIA176.jpg

永久开启内核路由转发功能

wKiom1X_16-Bt-sNAAB9e3uNgFc890.jpg

或者

LVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性..._第1张图片

2.配置网关,把内网服务器的IP地址指向网关,客户端的IP地址也指向网关,这样才能够转发,在

LVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性..._第2张图片

wKioL1X_3LqiUJoxAADo3L3fqcI025.jpg

LVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性..._第3张图片

3.配置lvs/nat模式的负载均衡集群,查看实现负载均衡集群的软件包是否安装,如果没有安装软件包。

wKioL1X_6j_z_cboAAEX4mLtL6M404.jpg

4.配置/nat模式的负载均衡集群,使用ipvsadm命令 配置集群功能,添加虚拟服务, ipvsadm  -L  -n    查看添加的策略,rr为轮询算法。

LVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性..._第4张图片

ipvsadm  选项
-A    添加虚拟服务器
-t    设置群集地址(VIP,Virtual IP)
-s    指定负载调度算法
-a        添加真实服务器
-d        删除真实服务器
-r         指定真实服务器(Real Server)的服务器的ip地址
-e        修改策略信息
-E        修改调度算法
-C        删除虚拟服务
-m       NAT模式  (不指定时模式是DR模式)
-g        DR模式
-i         TUN模式-w       为节点服务器设置权重,默认为1
5.向虚拟服务中添加realserver

LVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性..._第5张图片

6.保存配置,并且启动服务。

wKioL1YCE-PyCaHvAACcIEHbmlQ732.jpg

wKioL1YCFG6iFXluAAD-Lfvq9dE622.jpg

7.客户端 进行测试

(1)在web1,web2启动网站服务,并且设置默认主页,web1的默认主页内容为192.168.1.10,web2的默认主页的内容为192.168.1.20.

wKiom1YCFajBqU9jAADvbzWMfbs746.jpgLVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性..._第6张图片

(2)在客户端1.1.1.1上测试

LVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性..._第7张图片

(3)查看虚拟服务的状态信息

wKiom1YCGJeibvXVAADAFxyOgag405.jpg

把 realserver(192.168.1.20)从虚拟服务中删除

LVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性..._第8张图片

修改虚拟服务的调度算法

LVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性..._第9张图片

修改权重值  (默认值是  1)

LVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性..._第10张图片

LVS负载均衡默认使用什么模式?默认为DR模式

wKioL1YChzzSsZViAAEBWZB9uAk628.jpg

清空所有的策略和算法

wKiom1YCh5XRFJ7tAAC_guwcM50537.jpg

实验(二)

实验目的:实现LVS/DR模式的负载均衡集群

实验环境准备:

客户端IP地址:1.1.1.1 主机名waiwang

web1IP地址:1.1.1.10 主机名:localhost   web1

web2IP地址:1.1.1.20 主机名:localhost   web2

配置DR模式服务器的IP地址:1.1.1.254   主机名:fanlj

要解决的问题
(1)让realserver拥有vip地址
(2)让realserver 不响应客户端访问vip地址的arp广播包

1.让所有服务器拥有虚拟服务的ip地址。

LVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性..._第11张图片

LVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性..._第12张图片

LVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性..._第13张图片

2.让realserver 不响应客户端访问vip地址的arp广播包。

arp_ignore :
0(默认值):回应任何网络接口上对任何本地 IP 地址的 arp 查询请求  
1 只回答目标 IP 地址是来访网络接口本地地址的 ARP 查询请求
2 只回答目标 IP 地址是来访网络接口本地地址的 ARP 查询请求,且来访 IP 必须在该网络接口的子网段内
3 不回应该网络接口的 arp 请求,而只对设置的唯一和连接地址做出回应
4-7 保留未使用
8 不回应所有(本地地址)的 arp 查询

arp_announce:
0 (默认):在任意网络接口上的任何本地地址
1 尽量避免不在该网络接口子网段的本地地址做出 arp 回应。当发起 ARP 请求的源 IP 地址是被设置应该经由路由达到此网络接口的时候很 有用。此时会检查来访 IP 是否为所有接口上的子网段内 ip 之一。如果改来访 IP 不属于各个网络接口上的子网段内,那么将采用级别 2 的方 式来进行处理
2 对查询目标使用最适当的本地地址。在此模式下将忽略这个 IP 数据包的源地址并尝试选择与能与该地址通信的本地地址。首要是选择所
有的网络接口的子网中外出访问子网中包含该目标 IP 地址的本地地址。如果没有合适的地址被发现,将选择当前的发送网络接口或其他
的有可能接受到该 ARP 回应的网络接口来进行发送。
web1

wKioL1YDBVui9iKjAAD294k_qQU637.jpg

wKioL1YDDPaSc_1kAAD2KDnShX4768.jpg

web2

wKioL1YDBWfQyuxiAAD294k_qQU558.jpg

wKiom1YDDP3DxrU6AAD2KDnShX4165.jpg

使其定义的生效

LVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性..._第14张图片

3、在LVS/DR模式的分发器上设置分发策略

LVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性..._第15张图片

4.客户端测试(1.1.1.1)

LVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性..._第16张图片

5.在LVS/DR模式的分发器上查看虚拟服务的状态信息

wKiom1YDEB6S1A0tAADT2IkMWso822.jpg

实验(三)

实验目的:

在分发器上执行“监控脚本”监控realserver服务器的服务的状态
1.通过端口扫描工具nmap扫描web服务器的80端口的状态,查看nmap是否已安装。

wKioL1YDHkKTxne3AABcgdCZdek376.jpg

nmap 后跟选项

-n   不做反向DNS解析,以加快扫描速度.

-s   扫描

-T   指定协议TCP

-p   为指定端口

后跟真正提供web服务的主机

LVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性..._第17张图片

2.编写监控脚本,查看其健康性,监控realserver服务器的服务的状态,当web页面down后自动删除分发器上的策略,当web页面恢复正常后自动添加分发器上的策略,为其服务。此脚本分为2个部分,第一部分为查看web服务上的服务是否提供,如果web服务down后删除分发器上的策略,第二部分为如果web服务down后又重新启动添加分发器上的策略。

LVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性..._第18张图片

总结LVS的10种调度算法

LVS调度算法 (10种算法)
man   ipvsadm

常用调度算法有4种
轮询(Round Robin)  rr
加权轮询(Weighted Round Robin) wrr
最少连接(Least Connections) lc
加权最少连接( Weighted Least Connections )  wlc
1.轮询(Round Robin)
将客户端请求平均分发到Real Server
2.加权轮询(Weighted Round Robin)
根据Real Server的性能设置权重,再进行轮询调度
3.最少连接(Least Connections)
动态地将网络请求调度到已建立的连接数最少的服务器上
4.加权最少连接wlc( Weighted Least Connections )
根据Real Server的性能设置权重,再将网络请求调度到已建立的连接数最少的服务器上
5.基于局部性的最少链接(Locality-Based Least Connections) lblc,根据请求的目标IP地址,找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接” 的原则选出一个可用的服务器,将请求发送到该服务器
6.带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)lblcr,维护从一个目标IP地址到一台服务器的映射,根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。
7.目标地址散列(Destination Hashing) DH
根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空
8.源地址散列(Source Hashing)  sh
根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,
若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空
9.最短的期望的延迟(Shortest Expected Delay Scheduling  SED)基于WLC算法A、B、C三台机器分别权重1、2、3 ,连接数也分别是1、2、3。如果使用WLC算法的话一个新请求进入时它可能会分给ABC中的任意一个使用sed算法后会进行这样一个运算:A(1+1)/1,B(1+2/2,C(1+3)/3根据运算结果,把连接交给C
10.最少队列调度(Never Queue Scheduling NQ)
如果有台Real Server的连接数为0就直接分配过去,无需SED运算