LB :
调度算法 :
rr
wrr

分类 :
Hardware
F5 ,BIG IP
Citrix ,Netscaler
A10
Software
四层
LVS
七层 反向代理
nginx http,smtp,pop3,imap
haproxy http,tcp(mysql,smtp)

LVS :Linux Virtual Server
director : 调度器
realserver
lvs与iptables 不能同时使用
LVS
ipvsadm :管理集群服务的命令行工具
ipvs :
CIP :Client IP
VIP : Virtual IP
RIP : RS IP
DIP : Director IP

LVS支持模型 :
NAT :地址转换
集群节点跟director必须在同一个IP网络中;
RIP通常是私有地址,仅用于各集群节点间的通信;
director位于client和real server之间,并负责处理进出的所有通信
realserver必须将网关指向DIP;
支持端口映射;
realserver可以使用任意OS;
较大规模应用场景中,director易成为系统瓶颈;
Linux集群——LVS类型详解_第1张图片
DR :直接路由
集群节点跟director必须在同一个物理网络中;
RIP可以使用公网地址,实现便捷的远程管理和监控;
director仅负责处理入站请求,响应报文则由real server直接发往客户端;
real server不能将网关指向DIP;
不支持端口映射;
Linux集群——LVS类型详解_第2张图片
TUN :隧道
集群节点可以跨越internet;
RIP必须是公网IP
director仅负责处理入站请求,响应报文则由real server直接发往客户端;
realserver网关不能指向director;
只有支持隧道功能的OS才能用于realserver;
不支持端口映射;
Linux集群——LVS类型详解_第3张图片
多目标DNAT

调度方法 :
固定调度
RR : 轮询
WRR :加权 (Weight)
SH : source hash 源地址hash session affinity
DH :Destination hashing 目标地址hash
动态调度
LC : 最少连接
计算方法 :ACTIVE256+INACTIVE
WLC :加权最少连接
计算方法 :(ACTIVE
256+INACTIVE)/weight
SED : (ACTIVE+1)*256/weight
NQ : never queue
LBLC : 基于本地的最少连接
LBLCR :基于本地带复制功能的最少连接

lvs默认调度方法 :wlc

web : cookie session
session sharing

ipvsadm :
管理集群服务
添加、-A -t|u|f service-address [-s scheduler]
-t :TCP协议的集群
-u:UDP协议的集群
service-address : IP:PORT
-f :FWM:防火墙标记
service-address : Mark Number
修改、-E
删除 -D -t|u|f service-address
例如 :ipvsadm -A -t 172.16.100.1:80 -s rr
管理集群服务中的RS
添加、 -a -t|u|f service-address -r server-address [-g|i|m] [-w weight]
-t|u|f service-address : 事先定义好的某集群服务
-r server-address : 某RS的地址,在NAT模型中,可使用IP:PORT实现端口映射;
[-g|i|m] : LVS类型
-g : DR
-i : TUN
-m: NAT
[-w weight] : 定义服务器权重
修改、 -e
删除、 -d -t|u|f service-address -r server-address
例如 :ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.8 -m
ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.9 -m
查看
-L|1
-n : 数字格式显示主机地址和端口
--stats : 统计数据
--rate : 速率
--timeout :显示tcp、tcpfin和udp的会话超时时长
--daemon :
-c :显示当前的ipvs连接状况
删除所有集群服务
-C :清空ipvs规则
保存规则
-S
#ipvsadm -S > /path/to/somefile
载入此前的规则
-R
#ipvsadm -R < /path/from/somefile
各节点之间的时间偏差不应该超出一秒钟 :
NTP :Network Time Protocol
ntpdate

DR 模型 :
VIP :MAC (DVIP)
arptables :
kernel parameter :
arp_ignore : 接收到ARP请求时的响应级别;
0 :default 只要本地配置的有相应地址,就给予响应;
1 :仅在请求的目标地址配置请求到达的接口上的时候,才给予响应;
arp_announce :定义将自己地址向外通告时的通告级别
0 :default 将本地任何接口上的任何地址向外通告;
1 :试图仅向目标网络通告与其网络匹配的地址;
2 :仅向与本地接口上地址匹配的网络进行通告;
实例配置 :
Linux集群——LVS类型详解_第4张图片

LVS健康检查
elinks
curl --connect-timeout 1 超时时间限制
-I
用法如图:
Linux集群——LVS类型详解_第5张图片
健康检查实例脚本 :
Linux集群——LVS类型详解_第6张图片

Linux集群——LVS类型详解_第7张图片

declare -a A 声明数组

LVS持久连接 :
无论使用什么算法,LVS持久都能实现在一定时间内,将来自同一个客户端请求派发至此前选定的RS,
持久连接模板(内存缓冲区)
每一个客户端 及分配给它的RS的映射关系;
ipvsadm -A|E ... -p timeout :
timeout : 持久连接时长,默认300秒,单位是秒;
在基于SSL会话中,需要用到持久连接

持久连接的方式 :
PPC : 将来自于同一个客户端对同一集群服务的请求,始终定向至此前选定的RS; 持久端口连接
PCC :将来自于同一个客户端对所有端口的请求,始终定向至此前选定的RS; 持久客户端连接
把所有端口统统定义为集群服务,一律向RS转发
PNMPP :持久防水墙标识连接
防火墙标记 :
PREROUTING
80,443

rsync server(inotify+rsync server)
sersync工具
memcached