运维项目中的高可用的场景会出现很多,大部分都是 keepalived+nginx/lvs/HAProxy 来使用,或者直接h使用网络设备F5来实现
我重点把HAProxy+Keepalived 知识总结下,方便自己去深入学习
前言
---四层:lvs:快,应付更大的流量
---七层:nginx :慢于四层:能够看懂客户端请求的资源
---四层,七层:HaProxy:快
对比 Nginx / LVS / HAProxy 的表现
特性 | Nginx | LVS | HAProxy |
---|---|---|---|
工作层级 | 四层(TCP)和七层(HTTP)均支持 | 主要支持四层(L4)负载均衡 | 四层(TCP)和七层(HTTP)均支持 |
性能 | 较高,但七层模式解析应用层内容较慢 | 最高,工作在内核态,转发效率极高 | 性能较高,特别在 L4 模式下接近 LVS |
功能复杂度 | 功能丰富,适合七层应用场景 | 功能简单,侧重高性能转发 | 功能丰富,支持高级健康检查和统计分析 |
实现方式 | 基于用户态 | 基于内核态,性能优异 | 基于用户态,优化程度较高 |
适用场景 | 适合七层负载均衡和静态资源分发 | 适合四层高并发、低延迟的场景 | 适合四层和七层,灵活配置,性能较平衡 |
四层网络以及七层网络 实际业务中应用
特性 | 四层网络(L4) | 七层网络(L7) |
---|---|---|
工作层级 | 传输层(TCP/UDP) | 应用层(HTTP/HTTPS 等) |
应用场景 | 基础数据传输、VPN、视频流、四层负载均衡 | 网站访问、API 网关、CDN、反向代理、安全防护 |
性能 | 高性能,数据包直接转发,无需解析内容 | 性能较低,需要解析应用层内容 |
灵活性 | 低,基于 IP 和端口调度 | 高,基于应用协议(如 HTTP 内容)调度 |
典型工具 | LVS、四层防火墙 | Nginx、HAProxy、WAF、CDN |
一.keepalived 高可用
Keepalived 为负载平衡和高可用性提供了框架。负载平衡框架依赖于众所周知且广泛使用的 Linux 虚拟服务器 (IPVS) 内核模块,keepalived.conf里配置就能够实现LVS的功能
该模块提供第 4 层负载平衡。Keepalived 实现了一组健康检查器,以根据其健康状况动态和自适应地维护和管理负载平衡的服务器池。
其实keepalived 是为了lvs 负载均衡而研发出来的,目前广泛被应用于载平衡和高可用性框架
Keepalived 官方文档地址是:https://www.keepalived.org/doc/
1.1 keepalived服务介绍
Keepalived 起初是专门为LVS 设计的,专门用来监控LVS集群系统中各个服务节点的状态,后又加入VRRP(虚拟路由器冗余协议 的缩写)功能,因此keepalived 广泛应用于(nginx haproxy)等高可用软件,VRRP出现的目的就是为了解决静态路由出现单点故障问题,它保证网站稳定运行。keepalived 服务有两大功能:healthcheck 和failover
1.2 keepalived failover 功能
failover 功能:实Master主机和Backup主机之间故障转移和自动切换
当主节点keepalived(Master)失效或者出现故障时,备节点keepalived(Backup)将自动接管主负载均衡器的所有工作(vip 资源及相应服务):一旦主节点keepalived故障修复,Master又会接管回它原来处理的工作,而备节点keepalived(Backup)会释放master 失效时接管的工作,此时两者恢复到最初角色
1.3 keepalived healthchecks 功能
healthchecks 功能:keepalived 定期检查负载均衡器的可用性在决定是否分发请求。
1.4 VRRP 协议简介
VRRP协议,全称: virtual route redundent protocol 中文名:虚拟路由冗余协议
keepalived是vrrp协议在Linux上的实现
VRRP出现就是为了解决静态路由单点故障,VRRP是一种竞选协议机制来将路由任务交给某台VRRP 路由器。
- VRRP协议,全称Virtual Router Redundancy Protocol,中文名,虛拟路由器冗余协议,VRRP的出现就是为了解决静态路由的单点故障。。
- VRRP是通过一种竞选协议机制来将路由任务交给某台VRRP路由器。。.
- VRRP是用过IP多播的方式实现通信。。
- 主发包,备接包,当备接不到主发的包的时候,就启动接管程序接管主的资源。备可以有多个,通过优先级竞选。。
- VRRP使用了加密协议。
keepalived高可用服务器之间通过VRRP协议通信,VRRP协议通过竞争机制来确定主备的,主的优先级高于备,因此,工作时主会获得所有的资源,备节点等待状态,当主节点服务关闭,或者宕机时,备节点接管主机点的资源,然后顶替主节点对外提供服务。
VRRP协议介绍 http://www.h3c.com/cn/d_200802/335873_30003_0.htm
VRRP技术白皮书
二.HaProxy 负载均衡
Keepalived 为负载平衡和高可用性提供了框架。负载平衡框架依赖于众所周知且广泛使用的 Linux 虚拟服务器 (IPVS) 内核模块,
global
maxconn 51200 #最大连接数
chroot /usr/local/haproxy #改变当前工作目录
uid 99
gid 99
daemon #后台方式运行
#quiet
nbproc 1 #并发进程数
pidfile /usr/local/haproxy/logs/haproxy.pid #定义haproxy的pid
defaults #默认部分的定义
mode http #mode {http|tcp|health} 。
#http是七层模式,tcp是四层模式,health是健康检测返回OK
#retries 2
option redispatch
option abortonclose
timeout connect 5000ms #连接超时
timeout client 30000ms #客户端超时
timeout server 30000ms #服务器超时
#timeout check 2000 #心跳检测超时
log 127.0.0.1 local0 err #[err warning info debug]
#使用本机syslog服务的local3设备记录错误信息
balance roundrobin
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend app
mode tcp
bind *:8081
option tcplog
default_backend app
# acl url_static path_beg -i /static /images /javascript /stylesheets
# acl url_static path_end -i .jpg .gif .png .css .js
# use_backend static if url_static
# default_backend app
#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend app
balance roundrobin
server 10.203.19.23 10.203.19.23:80 check
server 10.203.19.24 10.203.19.24:80 check
#######################################################################
#-------------------------------k8s master up------------------------------
frontend k8s-master
bind *:6443
mode tcp
option tcplog
tcp-request inspect-delay 5s
default_backend k8s-master
backend k8s-master
mode tcp
option tcplog
option tcp-check
balance roundrobin
default-server inter 10s downinter 5s rise 2 fall 2 slowstart 60s maxconn 250 maxqueue 256 weight 100
server k8s-master-01 10.138.130.51:6443 check
server k8s-master-02 10.138.130.52:6443 check
server k8s-master-03 10.138.130.53:6443 check
#-------------------------------k8s master end-----------------------------
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
listen stats
bind *:1080
stats auth admin:Admin@123
stats refresh 5s
stats realm HAProxy\ Statistics
stats uri /admin
####主从Ha配置文件一致
参考文章: Keepalived及VRRP原理介绍
Comments | NOTHING