LB:负载均衡集群

负载均衡器:

硬件

F5,BIG IP

(Citrix)思捷 Netscaler

A10

软件

四层:LVS(Linux Virtual Server)

七层(反向代理):

nginx

http,smtp,pop3,imap

haproxy

http,tcp(mysql,smtp)

集群服务

LVS:director(前端),realserver(后端)

LVS结构和防火墙(netfilter)相似,LVS工作在INPUT链上

LVS

ipvpsadm:用户空间的管理工具(类似于iptables)

ipvs:工作在内核(类似于netfilter)

LVS只对定义了集群服务的服务进行转发

IP地址:CIP(Client ip)-->VIP(Virtual ip)-->DIP(director ip)-->RIP(realserver ip)

LVS类型

NAT最简单,DR最常用

NAT:地址转换(和DNAT一样)

遵循的基本法则

1、集群节点跟director必须在同一个网络中

2、RIP是私有IP,仅用于各集群节点间的通信

3、director位于client和realserver之间,并负责处理进出的所有通信

4、realserver必须将网关指向DIP

5、支持端口映射

6、realserver可以使用任何系统

7、较大规模应用场景中,director易成为系统瓶颈

DR:直接路由

遵循的基本法则

1、集群节点跟director必须在同一个物理网络中(中间没有其他设备)

2、RIP可以不是私有IP,实现便捷的运程管理和监控

3、director仅负责处理入站请求,响应报文直接发往客户端

4、realserver不能将网关指向DIP

5、不支持端口映射

6、realserver可使用大多数的操作系统

TUN:隧道

遵循的基本法则

1、集群节点可以不在一个网络中

2、RIP必须是公网IP

3、realserver网关不能指向dirertor

4、只有支持隧道功能的OS才能用于realserver

5、不支持端口映射

调度算法

静态

rr:轮调

wrr:加权论调(根据服务器的处理能力进行一定比例的论调)

sh:根据源地址进行哈希,一定时间里源地址访问的服务器,下一次还访问这个服务器(实现会话绑定)

dh:根据目的地址进行哈希

动态

lc:最少连接

active*256+inactive

wlc:加权最少连接

(active*256+inactive)/权重

sed:最短期望延迟

(active+1)/权重

nq:永不排队

第一次都分发一个连接,然后再基于sed

lblc:

lblcr:

默认方法:wlc

ipvsadm:

管理集群服务

添加:-A -t|u|f service-address(服务地址) [ -s scheduler(调度算法)]

-t:tcp协议的集群

service-address:PORT(地址加端口)

-u:udp协议的集群

-f:FWM:防火墙标记

service-address:Mark Number

修改:-E

删除:-D -t|u|f service-address

清空:-C 清空所有集群服务

# ipvsadm -A -t 172.16.100.1:80 -s wrr

管理集群realserver

添加:-a -t|u|f service-address -r service-address [-g|i|m] [-w weight]

-t|u|f service-address:事先定义好的集群服务

-r service-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 service-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|l

-n:数字格式的端口地址

--stats:统计数据(连接数,出入站报个数,出入站的字节数)

--rate:统计速率(单位是秒)

--timeout:显示tcp、tcpfin、udp会话超时时常

-c:显示当前ipvs连接状况

保存规则

-S

# ipvsadm -S > /path/to/somefile

导入规则

-R 

# ipvsadm -R < /path/to/somefile


各节点之间的时间要同步



DR

VIP: MAC(DVIP)

arptables:

kernel parameter:(内核参数)

arp_ignore: 定义接收到ARP请求时的响应级别;

0:只要本地配置的有相应地址,就给予响应;

1:仅在请求的目标地址配置请求到达的接口上的时候,才给予响应;


arp_announce:定义将自己地址向外通告时的通告级别;

0:将本地任何接口上的任何地址向外通告;

1:试图仅向目标网络通告与其网络匹配的地址;

2:仅向与本地接口上地址匹配的网络进行通告;