运维实战 负载均衡LVS
前期概述
LVS
LVS,全称Linux Virtual Server,翻译为Linux虚拟服务器,即一个虚拟的服务器集群系统.
简单来说,LVS是一个基于四层且具有强大性能的反向代理服务器.
LVS通过工作于内核的ipvs模块来实现功能,主要工作于netfilter 的INPUT链.
而用户需要对ipvs进行操作配置则需要使用ipvsadm这个工具.
ipvsadm主要用于设置lvs模型/调度方式以及指定后端主机.
简单来说,分为两个部分
- ipvs (真正生效实现调度的代码所在的位置)
- ipvsadm (编写规则事先定义的位置)
LVS中的角色
LVS的模型中有两个角色:
调度器: Director,又称为Dispatcher,Balancer.
调度器主要用于接受用户请求.
真实主机: Real Server,简称为RS.
用于真正处理用户的请求.
为了更好地理解,可以将所在角色的IP地址分为以下三种:
Director Virtual IP: 调度器用于与客户端通信的IP地址,简称为VIP
Director IP: 调度器用于与RealServer通信的IP地址,简称为DIP
Real Server : 后端主机的用于与调度器通信的IP地址,简称为RIP
三种调度模式
NAT模式: 基于ip伪装MASQUERADES
,原理是多目标DNAT;所有请求和响应都经由Director调度器.
TUN模式: 基于隧道封装技术。在IP报文的外面再包一层IP报文,调度器和RS不需要在同一网段,RS直接对客户端响应.
DR模式: 所有RS都需要有VIP,将目标地址的MAC地址改为RealServer的MAC地址RS直接对客户端响应;但调度器和RS需要在同一网段.
本次项目使用DR模式进行试验.
项目内容
前期准备
- 四台虚拟机(Server1-4),其中
1
和4
为调度机,2
和3
为RealServer. - 调度端安装
ipvsadm
,RS
安装测试所需的httpd
和处理arp
协议所需的防火墙arptables_jf
- 所有虚拟机设置VIP为
172.25.5.100/32
- 宿主机充当测试用客户端
可能遇到的问题
- 所有虚拟机都添加了同一个VIP,也就是说客户端获取到的VIP可能对应任意一台服务器,当对应的是RS而不是调度机时,即使所有设置都正确也无法进行论调(毕竟根本没有经过调度端),为避免这种情况,需要对RS进行arp防火墙设置.
LVS
本身并不具有健康检查功能,也就是说如果2
或3
上的httpd
出现问题无法正常工作时,他也会一如既往的调度到出现问题的RS,出现报错.keepalived
可以解决这个问题.- 如果只有一台调度机而调度机损坏,则无论RS是否完好整个系统都会崩溃.当需要多台调度机做高可用时也可以使用
keepalived
来进行设置.