Haproxy高性能负载均衡(天生的负载均衡器)
1.Haproxy相关概念
(1)概念
HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理
HAProxy非常适用于并发大(并发达1w以上)web站点,这些站点通常又需要会话保持或七层处理
可以很简单安全的整合至当前的架构中,同时可以保护web服务器不被暴露到公网
(2)工作模式
代理与调度的区别:
代理:工作于osi模型的第七层,对客户端的"数据包"进行二次封装
比如手机和电脑的请求数据包
调度:工作于osi模型的第四层,直接转发客户端的数据包到真实服务器
mode http:只适用于web服务
mode tcp:适用于各种服务
mode health:仅做健康检查,很少使用
(3)调度算法
roundrobin:轮询
static-rr:加权轮询
leastconn:最少连接者先处理
source:根据请求源IP,类似于nginx的ip_hash
ri:根据请求的URI
rl_param:根据请求人URL参数'balance url_param'
rdp-cookie(name) :根据cookie(name)来锁定并哈希每一次的TCP请求
hdr(name) :根据HTTP请求头来锁定每一次HTTP请求
2.Haproxy负载均衡集群搭建
(1)lvs1节点安装Haproxy软件
[root@pubserver cluster]# vim 12_install_haproxy.yml
---
- name: config haproxy
hosts: lvs1
tasks:
- name: stop keepalived #停止Keepalived服务
service:
name: keepalived
state: stopped
enabled: false
- name: remove softs #卸载软件
yum:
name: ipvsadm,keepalived
state: absent
- name: modify hostname #设置主机名
shell: "hostnamectl set-hostname haproxy"
- name: install haproxy #安装软件
yum:
name: haproxy
state: present
(2)配置Haproxy负载平衡集群
配置文件说明
global为全局配置,通常保持默认即可
defaults为缺省配置,如果后续有相同配置则覆盖缺省值
frontend描述用户和haproxy交互
backend描述haproxy和真实服务器交互
frontend和backend的配置方式适合负载的url代理配置,通常不使用
通常使用listen模式,理解为虚拟主机即可
[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg
...
listen webservers #定义虚拟服务器
bind 0.0.0.0:80 #定义监听端口,0.0.0.0允许本机所有
mode http #定义工作模式
balance roundrobin #定义调度算法
server web1 192.168.88.100:80 check inter 2000 rise 2 fall 5
server web2 192.168.88.200:80 check inter 2000 rise 2 fall 5
#check:对后端服务器进行健康检查
#inter:健康检查心跳包发送时间间隔
#rise:连续检查N次有响应则认为健康
#fall:连续检查N次无响应则认为故障
(3)启动systemctl start haproxy.service
3.Haproxy健康检查页面
(1)配置Haproxy
[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg
...
listen stats #定义虚拟服务器
bind 0.0.0.0:1080 #定义监听端口
stats refresh 30s #定义页面刷新时间
stats uri /stats #定义请求路径
stats auth admin:admin #定义用户/密码
(2)## 参数说明:
Queue:队列数据的信息(当前队列数量、最大值、队列限制数量)
Session rate:每秒会话率(当前值、最大值、限制数量)
Sessions:总会话量(当前值、最大值、总量)
Bytes:流量统计(入站、出站流量)
Denied:拒绝请求情况(拒绝请求、拒绝回应)
Errors:错误请求情况(错误请求、错误连接、错误回应)
Warings:警告情况(重新尝试警告、重新连接警告)
Server:后端服务器情况(状态、最后检查时间、权重、备份服务器数量、宕机服务器数量、宕机时长
HAProxy、LVS、Keepalived、Nginx区别:
高性能:HAProxy专注于高性能负载均衡,可工作于四层和七层
高可用:LVS基于linux内核的负载均衡技术,工作在四层,资源消耗低,承受的访问量大
Keepalived则强调高可用性,通过VRRP协议实现服务的主备切换,健康检查等
相对全面:Nginx作为高性能的HTTP和反向代理服务器,广泛应用于Web应用程序中,提供高并发连接处理和灵活的配置选项,工作在七层
功能:nginx>haproxy>lvs
性能:lvs>haproxy>nginx
Haproxy高性能负载均衡(天生的负载均衡器)
1.Haproxy相关概念
(1)概念
HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理
HAProxy非常适用于并发大(并发达1w以上)web站点,这些站点通常又需要会话保持或七层处理
可以很简单安全的整合至当前的架构中,同时可以保护web服务器不被暴露到公网
(2)工作模式
代理与调度的区别:
代理:工作于osi模型的第七层,对客户端的"数据包"进行二次封装
比如手机和电脑的请求数据包
调度:工作于osi模型的第四层,直接转发客户端的数据包到真实服务器
mode http:只适用于web服务
mode tcp:适用于各种服务
mode health:仅做健康检查,很少使用
(3)调度算法
roundrobin:轮询
static-rr:加权轮询
leastconn:最少连接者先处理
source:根据请求源IP,类似于nginx的ip_hash
ri:根据请求的URI
rl_param:根据请求人URL参数'balance url_param'
rdp-cookie(name) :根据cookie(name)来锁定并哈希每一次的TCP请求
hdr(name) :根据HTTP请求头来锁定每一次HTTP请求
2.Haproxy负载均衡集群搭建
(1)lvs1节点安装Haproxy软件
[root@pubserver cluster]# vim 12_install_haproxy.yml
---
- name: config haproxy
hosts: lvs1
tasks:
- name: stop keepalived #停止Keepalived服务
service:
name: keepalived
state: stopped
enabled: false
- name: remove softs #卸载软件
yum:
name: ipvsadm,keepalived
state: absent
- name: modify hostname #设置主机名
shell: "hostnamectl set-hostname haproxy"
- name: install haproxy #安装软件
yum:
name: haproxy
state: present
(2)配置Haproxy负载平衡集群
配置文件说明
global为全局配置,通常保持默认即可
defaults为缺省配置,如果后续有相同配置则覆盖缺省值
frontend描述用户和haproxy交互
backend描述haproxy和真实服务器交互
frontend和backend的配置方式适合负载的url代理配置,通常不使用
通常使用listen模式,理解为虚拟主机即可
[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg
...
listen webservers #定义虚拟服务器
bind 0.0.0.0:80 #定义监听端口,0.0.0.0允许本机所有
mode http #定义工作模式
balance roundrobin #定义调度算法
server web1 192.168.88.100:80 check inter 2000 rise 2 fall 5
server web2 192.168.88.200:80 check inter 2000 rise 2 fall 5
#check:对后端服务器进行健康检查
#inter:健康检查心跳包发送时间间隔
#rise:连续检查N次有响应则认为健康
#fall:连续检查N次无响应则认为故障
(3)启动systemctl start haproxy.service
3.Haproxy健康检查页面
(1)配置Haproxy
[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg
...
listen stats #定义虚拟服务器
bind 0.0.0.0:1080 #定义监听端口
stats refresh 30s #定义页面刷新时间
stats uri /stats #定义请求路径
stats auth admin:admin #定义用户/密码
(2)## 参数说明:
Queue:队列数据的信息(当前队列数量、最大值、队列限制数量)
Session rate:每秒会话率(当前值、最大值、限制数量)
Sessions:总会话量(当前值、最大值、总量)
Bytes:流量统计(入站、出站流量)
Denied:拒绝请求情况(拒绝请求、拒绝回应)
Errors:错误请求情况(错误请求、错误连接、错误回应)
Warings:警告情况(重新尝试警告、重新连接警告)
Server:后端服务器情况(状态、最后检查时间、权重、备份服务器数量、宕机服务器数量、宕机时长
HAProxy、LVS、Keepalived、Nginx区别:
高性能:HAProxy专注于高性能负载均衡,可工作于四层和七层
高可用:LVS基于linux内核的负载均衡技术,工作在四层,资源消耗低,承受的访问量大
Keepalived则强调高可用性,通过VRRP协议实现服务的主备切换,健康检查等
相对全面:Nginx作为高性能的HTTP和反向代理服务器,广泛应用于Web应用程序中,提供高并发连接处理和灵活的配置选项,工作在七层
功能:nginx>haproxy>lvs
性能:lvs>haproxy>nginx