HAProxy
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HAProxy相关的知识,希望对你有一定的参考价值。
1 关于HAProxy1.1 介绍:
HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
1.2 衡量负责均衡器性能的因素:
Session rate 会话率:每秒钟产生的会话数
Session concurrency 并发会话数:服务器处理会话的时间越长,并发会话数越多
Data rate 数据速率:高会话数,高数据速率要求更多的内存
1.3 HAProxy工作模式:
mode http:客户端请求被深度分析后再发往服务器
mode tcp: 客户端与服务器之间建立会话,不检查第七层信息
mode health: 仅做健康状态检查,已经不建议使用
1.4 配置文件说明:
global部分:全局设置进程级别参数
default:为后续的其它部分设置缺省参数 缺省参数可以被后续部分重置
frontend:描述接收客户端侦听套字节集
backend:描述转发链接的服务器集
listen:把frontend和backend结合到一起的完整声明
vim /etc/haproxy/haproxy.cfg
###########全局配置#########
global
log 127.0.0.1 local2 #日志输出配置,所有日志都记录在本机,通过local2输出
chroot /var/lib/haproxy #chroot运行路径
pidfile /var/run/haproxy.pid #pid存放的路径
maxconn 4000 #最大的连接数
user haproxy
group haproxy
daemon #以守护进程运行
###########默认配置#########
defaults
mode http #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只返回OK
log global
option httplog #日志类别,采用httplog
option dontlognull #不记录健康检查日志信息
option http-server-close #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式实现
option forwardfor except 127.0.0.0/8
option redispatch
retries 3 #3次连接失败就认为服务器不可用
timeout http-request 10s #默认http请求超时时间
timeout queue 1m #默认队列超时时间
timeout connect 10s #连接超时
timeout client 1m #客户端超时
timeout server 1m #服务器超时
timeout http-keep-alive 10s #默认持久连接超时时间
timeout check 10s #心跳监测超时
maxconn 3000 #最大连接数
###########统计页面配置#########
listen stats
bind 0.0.0.0:1080 #监听端口
stats refresh 30s #统计页面自动刷新时间
stats uri /stats #统计页面url
stats realm Haproxy Manager #统计页面密码框上提示文本
stats auth admin:admin #统计页面用户名和密码设置,可以设置多个
stats hide-version #隐藏统计页面上HAProxy的版本信息
###########frontend前端配置#########
#原配置文件说明
frontend main *:5000
acl url_static path_beg -i /static /images /javascript /stylesheets #acl后面是规则名称,-i为忽略大小写,后面跟的是要访问的域名,如果访问这个域名就触发images等规则
acl url_static path_end -i .jpg .gif .png .css .js
use_backend static if url_static
default_backend app
#自定义配置文件
frontend web 192.168.4.100:80 #定义前端的名称
acl url_static path_beg -i /static #匹配url的开头
acl url_html path_end -i .html #匹配url的结尾
acl url_php path_end -i .php #匹配.php的结尾
use_backend html-group if url_html #定义后端服务组(以html结尾)
use_backend php-group if url_php #定义后端服务组(以php结尾)
default_backend html-group #默认后端服务组(仅IP)
backend html-group #后端服务组的具体的信息
balance roundrobin #轮询调度算法
server app101 192.168.4.101:80 check
server app102 192.168.4.102:80 check
backend php-group
balance roundrobin
server app103 192.168.4.103:80 check
server app104 192.168.4.104:80 check
###########backend后端配置#########
backend static #backend起的名称,static作用域
balance roundrobin #调度算法
server static 127.0.0.1:4331 check
backend app
balance roundrobin
server app1 127.0.0.1:5001 check
server app2 127.0.0.1:5002 check
server app3 127.0.0.1:5003 check
server app4 127.0.0.1:5004 check
listen webserver 0.0.0.0:80 #webserver:名称,允许所有通过80端口访问
cookie SERVERID rewrite #记录客户端访问网站服务器的cookie信息
balance roundrobin #调度算法
server server44 192.168.4.44:80 cookie app44 check inter 2000 rise 2 fall 5
server server45 192.168.4.45:80 cookie app45 check inter 2000 rise 2 fall 5
#后端服务器命名server44 cookie 为cookie命名app44
2 案例1普通LB集群
HAProxy服务器:RHEL7.2 IP:192.168.4.41
web:192.168.4.44 192.168.40.45
2.1 配置
[[email protected] ~]# yum -y install haproxy
[[email protected] ~]# vim /etc/haproxy/haproxy.cfg
#删除default以下的其它配置,添加如下配置
listen webserver 0.0.0.0:80 #webserver:名称 允许所有通过80端口访问
cookie SERVERID rewrite #记录客户端访问网站服务器的cookie信息
balance roundrobin #调度算法
server web101 192.168.4.44:80 cookie app101 check inter 2000 rise 2 fall 5
server web102 192.168.4.45:80 cookie app102 check inter 2000 rise 2 fall 5
#后端服务器 cookie app101 为cookie命名
在defaults 最后一行添加 stats uri /admin
http://192.168.4.41/admin 是URL
去掉http://192.168.4.41 剩下的就是uri
也可以单独添加:
listen stats
bind 0.0.0.0:1080 #监听端口
stats refresh 30s #统计页面自动刷新时间
stats uri /admin #统计页面url
stats realm Haproxy Manager #统计页面密码框上提示文本
stats auth admin:admin #统计页面用户名和密码设置
stats hide-version #隐藏统计页面上HAProxy的版本信息
2.2 启动服务
[[email protected] ~]# systemctl start haproxy
[[email protected] ~]# systemctl enable haproxy
2.3 访问
http://192.168.4.100/admin (根据配置文件)
以上是关于HAProxy的主要内容,如果未能解决你的问题,请参考以下文章