部署
在ubuntu环境中,直接使用apt-get install keepalived安装
原理
vrrp协议
虚拟路由器:虚拟路由器是VRRP备份组中所有路由器的集合,它是一个逻辑概念,主路由器+所有备份路由器=虚拟路由器
主路由器: 虚拟路由器通过虚拟IP对外提供服务,而在虚拟路由器内部同一时间只有一台物理路由器对外提供服务,这台提供服务的物理路由器被称为主路由器
备份路由器:虚拟路由器中的其他物理路由器不拥有对外的虚拟IP,也不对外提供网络功能,仅接受MASTER的VRRP状态通告信息,这些路由器被称为备份路由器。当主路由器失败时,处于BACKUP角色的备份路由器将重新进行选举,产生一个新的主路由器进入MASTER角色,继续提供对外服务,整个切换对用户来说是完全透明的。
选举算法: 1.VRRP组中IP拥有者。如果虚拟IP地址与VRRP组中的某台VRRP路由器IP地址相同,则此路由器为IP地址拥有者,这台路由器将被定位主路由器。 2.比较优先级。如果没有IP地址拥有者,则比较路由器的优先级,优先级的范围是0~255,优先级大的作为主路由器 3.比较IP地址。在没有Ip地址拥有者和优先级相同的情况下,IP地址大的作为主路由器。
配置
部署keepalived的服务器需要网卡开启多播功能,并且iptables需要允许vrrp多播
1 | |
一般关闭防火墙,避免防火墙拦截请求
1 | |
默认日志在/var/log/messages文件中
LVS
LVS NAT
ipvs运行在iptables中的input链中,对比请求中的ip,转发到postrouting链中,发送给后台真实的ip
缺点:对Director Server压力会比较大,请求和响应都需经过director server
LVS DR
过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变
缺点: RS和DS必须在同一机房中
LVS Tun
在原有的IP报文外再次封装多一层IP首部,内部IP首部(源地址为CIP,目标IIP为VIP),外层IP首部(源地址为DIP,目标IP为RIP)
调度算法
轮询调度
rr
加权轮询
wrr
原地址hash
sh
目标地址hash
dh
最少连接
lc
加权最短连接
wlc
最短期望延迟
sed
最少队列
nq
基于局部性的最少连接
lblc
带复制的基于局部性最少链接
lblcr
配置
配合keepalived,实际上是在keepalived中的添加配置
1 | |
注意,如果使用DR的LVS负载机制,就需要在转发的nginx服务器上,添加lo网络接口多播的虚拟ip监听,开启的脚本如下,执行bash functions start,启动后,就可以再看lo网络接口中监听192.168.1.200的请求了,
1 | |