LVS 是Linux virtual server的简写,是linux 虚拟服务器,是一个虚拟服务器集群系统,可以在Unix/Linux平台下实现负载均衡集群功能,该项目在1998年由章文嵩博士组织建立
早在2.2内核版本开始,IPVS 就已经以内核补丁的形式出现
从2.4.23版本开始IPVS如那件就是合并到Linux内核的常用版本的内核补丁的集合
从2.4.24 以后IPVS已经成为Linux官方标准内核的一部分。
1 IPVS 工作在内核层面
2 管理LVS的工具,ipvsadm 管理LVS的工具,工作在外围。
DR LVS 负载调度器
CL 客户端
RS 后端web 服务器
工作原理概述:
数据包通过VIP找到LVS,其中携带者客户端的CIP和VIP,当到达LVS后,LVS通过DNAT目标的地址转换技术将VIP转换成RIP使其可以找到后端的服务,当数据包到达RS后,其不知道CIP的地址,一般不在统一网段,通过在RS上配置LVS的内部网关来找到LVS,通过LVS的源地址转换技术转换为将RIP转换为VIP发送给客户端
对LVS要求:
LVS必须有双网卡,且需要开启内核转发功能
RS 要求,RS 需要指定指向LVS内部网卡的网关,及数据包可以通过网关从RS顺利到达LVS。
优点:支持VIP和RIP不在同一网段
缺点:来去都经过LVS ,转发效率不高
工作原理概述:
数据包在客户端是CIP:VIP ,当到达LVS之后,通过在其外面封装数据包头来达到其可以到达RS的目的,当到达RS后,RS需要解封装数据包头,提取出VIP和CIP,此时RS上需要有VIP,且开启ARP抑制,如此才能使得客户端的数据包在不经过LVS的情况下顺利返回客户端,
对LVS 要求:
可以支持IPIP隧道技术,实现数据包的封装,
RS 要求,实现对数据包的解封装和ARP抑制功能,
优点:适用于LAN/WAN网络,及LVS和RS不再同一个物理范围内的场景
缺点:配置复杂,需要支持一定的技术
工作原理概述:
客户端通过VIP进行访问LVS,到达LVS的是CIP和VIP 的数据包,LVS通过在该区域内通过ARP广播获取到后端RS的MAC地址,因此LVS必须和RS在同一网段,并通过调度算法将某个RS对应的MAC地址封装到CIP和VIP的数据包上,进而实现将数据包送达RS的目标,当数据包到达RS后,因为RS端配置了VIP 并启用了ARP抑制,因此数据包可以用过VIP和CIP 在数据包出去时直接和客户端进行对话,而不去要经过LVS调度器
对LVS要求:
一般的设备都可以
对RS要求:
需要配置VIP和ARP抑制功能
优点:支持高并发,多大数万
缺点:LVS必须和RS在同一网段,否则不成立
源IP地址和目标IP地址在进和出网络时都进行转换
优点:跨VLAN通信(LIP决定)用于沟通底层VLAN的。
功能多,有抗攻击模块,多VLAN。支持的主机量更大。
缺点:需要需要编译内核,
6 LVS 的调度算法
1 设备概述:
设备名称 | 设备功能 | 设备IP |
---|---|---|
server1 | LVS调度器 | 192.168.122.232 |
server2 | web服务器,提供web页面 | 192.168.122.4 |
server3 | web服务器,提供web页面 | 192.168.122.109 |
2 软件包及yum源相关配置:
1 软件包:
链接:https://pan.baidu.com/s/1ITkJkLuuz9YnGd-poQ5R4A
密码:bdr4
2 配置yum 源:
查看yum源:
1 查看后端RS地址
设置VS 调度策略
-A 表示添加VIP
-a 表示添加站点
-t 表示指定为tcp
-s 指定调度机制为轮循(RR)
-r 指定后端地址
-g 表示模式为DR模式
查看调度策略
用与接收ARP请求但不返回,其作用是将使用VIP地址直接与客户端通信
-A 表示添加
-d 表示 目标地址
-j 为动作
-s 为源地址
证明轮循机制成立
其缺点是对后端服务不会进行健康检查,当后端服务出现故障时,前端将会出现访问故障,不能很好的解决健康检查问题。
ldirectord来管理lvs,可以定时检查后端realserver,发现故障后自动清除,恢复后自动加入lvs表,
使其可以直接对IPVS控制
参数说明
前四行是全局配置,他们可以应用到多个虚拟主机。
checktimeout: 等待健康检查执行完毕的等待时间,单位是s。
checkinterveal:指定健康检查的时间间隔
autoreload :如果启用,使用ldirectord 按时计算这个配置文件的md5校验和,看其是否改动,如果配置文件发生变动,其将自己通过调用命令,将其添加到池中
也可以向ldirectoed 守护进程发送HUP(使用kill命令)强制重载
quiescent=:一个节点在 checktimeout 设置的时间周期内没有响应是它是“静止的”(它的权重为
0),当你设置了这个选项后,ldirectord将 会从 IPVS 表中移除真实服务器而不是“停
止”它,从 IPVS 表移除节点将中断现有的客户端连接,并使 LVS 丢掉所有的连接跟踪记
录和持续连接模板,如果 你不将这个选项设置为 no,当某个节点崩溃时,对某些客户端
计算机而言可能会显示为集群关闭了,因为在这个节点崩溃前这些客户端计算机被分配
给它了,而连 接跟踪记录和程序连接模板仍然保留在 Director上。
virtual=192.168.122.10 虚拟IP地址
real=172.25.254.122:80 gate 设置 RS IP 地址
real=172.25.254.121:80 gate 设置 RS IP 地址
fallback=127.0.0.1:80 gate # 此处的表示所有的节点down掉后VS上
request="index.html" 后端健康检查检查的东西
\ #receive="Test Page" 此处的含义是其必须其后端的网页内容为"Test Page"
#virtualhost=\ww.x.y.z
关闭之前的配置
启动服务:
RS端设置VIP
RS 端设置VIP
ARP 策略必须存在
当关闭ipvsadm 并重新加载ld 时,其配置情况依然存在
其不会报错,会直接切换到正常的服务的中
:其默认自己将会成为RS进行服务:以保证服务不中断
原文地址:http://blog.51cto.com/11233559/2103637