负载均衡产品
硬件
F5
深信服
软件
nginx
LVS
Haproxy
LVS (linux virtual server)
内核
四层
工作模式
规定的数据包如何传输
响应数据包是否经过 负载均衡器
经过负载均衡器
nat
修改目标IP为RIP
必须的条件是,RS的网关为DIP
full-nat
请求和响应都修改
修改源IP 和目标IP
不经过(响应包都不经过负载均衡器)
DR 直接路由
修改的请求的数据包中目标MAC 为RS 的MAC
必须的条件是,集群在一个局域网内,所有集群成员都要设置VIP
只有负载均衡器响应VIP的ARP 广播
IP-tunnel
在原有的数据请求数据包上报过一层新的IP头部,之后重新路由
集群的成员是否必须在一个局域网中
不用再局域网之内的
full-nat
ip-tunnel
在局域网之内的
DR
NAT
高可用软件
keepalived
vrrp
心态信息
组播:224.0.0.18
管理 vip 进行资源切换
本身可以配置负载均衡器
依赖是LVS
lvs 继承于内核的模块
之前管理(配置)lvs的软件是ipvsadm
现在可以是 keepalived
keepalived + lvs 4层负载均衡
keepalived + nginx
keepalived + mysql
总体目标是实现高可用,避免出现单独故障
配置keepalived + lvs步骤:
1.修改负载均衡器的 keepalived.conf 配置文件
-
- router_id
- 角色 MASTER / BACKER
- 优先级
- 发送心跳的接口(网络设备名称)
- vip
---------------------------------------------
lvs --> real server
算法:rr
工作模式:DR
如何对 real server 进行健康检查
检查的方法:
- TCP_CHECK 基于4层
- HTTP_GET http 80
- SSL_GET https 443
2.所有的Real server 需要配置回环接口的 lo VIP地址
echo 1 #不响应非自己的 arp 广播
echo 2 # 使用最有IP 进行响应
配置keepalived + nginx步骤:
1.修改负载均衡器的 keepalived.conf 配置文件
- router_id
- 角色 MASTER / BACKER
- 优先级
- 发送心跳的接口(网络设备名称)
- vip
---------------------------------------------
lvs --> real server
算法:rr
工作模式:DR
如何对 real server 进行健康检查
检查的方法:
- TCP_CHECK 基于4层
- HTTP_GET http 80
- SSL_GET https 443
2.在负载均衡器上配置 Nginx
http{
upstream html {
server 192.66.66.101:80;
server 192.66.66.102:80;
}
upstream php {
server 192.66.66.103:80;
server 192.66.66.104:80;
}
server{
location / {
proxy_pass http://html;
}
location ~\.php {
proxy_pass http://php;
}
}
}
3.Real server的配置
实现普通的web服务即可
高可用负载均衡器架构总结
四层负载均衡的高可用方案:
keepalived + lvs + 任意的服务 (web/mysql/dns/ftp/email)
keepalived + nginx + 任意的服务 (web/mysql/dns/ftp/email)
keepalived + haproxy + web 任意的服务 (web/mysql/dns/ftp/email)
七层的负载方案:
keepalived + nginx + web服务(nginx httpd/tomcat)
keepalived + haproxy + web服务(nginx httpd/tomcat)
keepalived + httpd + web服务(nginx httpd/tomcat)