四层:
七层:
硬件:
HAProxy是法国开发者威利塔罗(Willy Tarreau)在2000年使用C语言开发的一个开源软件,是一款具
备高并发(一万以上)、高性能的TCP和HTTP负载均衡器,支持基于cookie的持久性,自动故障切换,支
持正则表达式及web状态统计,目前最新TLS版本为2.2。
HAProxy是可提供高可用性、负载均衡以及基于TcP和HTTP应用的代理,是免费、快速并且可靠的一种解决方案。HProxy非常适用于并发大(并发达1w以上) web站点,这些站点通常又需要会话保持或七层处理。HAProxy的运行模式使得它可以很简单安全的整合至当前的架构中,同时可以保护web服务器不被暴露到网络上。
支持功能
(1) roundrobin,表示简单的轮询
(2) static-rr,表示根据权重
(3) leastconn,表示最少连接者先处理
( 4) source,表示根据请求源IP
(5) uri,表示根据请求的URI,做cdn需使用;
(6) url param,表示根据请求的URl参数’ balance url param’requires an URL parameter name
(7) hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
(8) rdp-cookie (name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。
chroot #锁定运行目录
deamon #以守护进程运行,后台运行
stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin process 1
#socket文件
user, group, uid, gid #运行haproxy的用户身份
nbproc n #开启的haproxy work 进程数,默认进程数是一个
#nbthread 1 #和多进程 nbproc配置互斥(版本有关,CentOS8的haproxy1.8无此问题),指定每个haproxy进程开启的线程数,默认为每个进程一个线程
#如果同时启用nbproc和nbthread 会出现以下日志的错误,无法启动服务Apr 714:46:23 haproxy haproxy: [ALERT] 097/144623 (1454) : config : cannot enable multiple processes if multiple threads are configured. Please use either nbproc or nbthread but not both.
cpu-map 10 #绑定haproxy worker 进程至指定CPU,将第1个work进程绑定至0号CPU
cpu-map 21 #绑定haproxy worker 进程至指定CPU,将第2个work进程绑定至1 号CPU
maxconn n #每个haproxy进程的最大并发连接数
maxsslconn n #每个haproxy进程ssl最大连接数,用于haproxy配置了证书的场景下
maxconnrate n #每个进程每秒创建的最大连接数量
spread-checks n #后端server状态check随机提前或延迟百分比时间,建议2-5(20%-50%)之间,默认值0
pidfile #指定pid文件路径
log 127.0.0.1 local2 info #定义全局的syslog服务器;日志服务器需要开启UDP协议,最多可以定义两个
defaults
log global #引入global定义的日志格式
mode http #模式为http(7层代理http,4层代理tcp)
option httplog #日志类别为http日志格式
option dontlognull #不记录健康检查日志信息
retries 3 #检查节点服务器失败次数,连续达到3次,则反馈不可用
redispatch #当服务器负载很高时,自动结束当前队列处理比较久的连接
maxconn 2000 #最大连接数,此处的数值不能大于全局里的数值
contimeout 5000 #设置连接超时时间,默认单位是毫秒
clitimeout 50000 #设置客户端超时时间,默认单位是毫秒
srvtimeout 50000 #设置服务器超时时间,默认单位是毫秒
#以下是新版本中的
timeout http-request 10s #默认http请求超时时间
timeout queue 1m #默认队列超时时间
timeout connect 10s #默认连接超时时间,新版本中替代
timeout client 1m
timeout server 1m
timeout http-keep-alive
timeout check 10s
defaults [<name>] #默认配置项,针对以下的frontend、backend和listen生效,可以多个name也可以没有name
frontend <name> #前端servername,类似于Nginx的一个虚拟主机 server和LVS服务集群。
backend <name> #后端服务器组,等于nginx的upstream和LVS中的RS服务器
listen <name> #将frontend和backend合并在一起配置,相对于frontend和backend配置更简
洁,生产常用
使用listen替换 frontend和backend的配置方式,可以简化设置,通常只用于TCP协议的应用
#官网业务访问入口
listen webcluster 0.0.0.0:80
option httpchk GET /test.html
balance roundrobin
server inst1 192.168.91.102:80 check inter 2000 fall 3
server inst2 192.168.91.103:80 check inter 2000 fall 3
环境准备
haproxy服务器:192.168.187.150
http1:192.168.187.160
http2:192.168.187.170
systemctl stop firewalld
setenforce 0
[root@localhost ~]# yum -y install pcre-devel bzip2-devel gcc gcc-c++ make
[root@localhost opt]# tar xzvf haproxy-1.4.24.tar.gz
[root@localhost opt]# cd haproxy-1.4.24/
[root@localhost haproxy-1.4.24]# make TARGET=linux2628 ARCH=X86_64
#内核版本
[root@localhost haproxy-1.4.24]# make install
##复制一份出来,修改配置文件
[root@localhost haproxy-1.4.24]#mkdir /etc/haproxy
[root@localhost haproxy-1.4.24]#cd examples/
[root@localhost examples]#cp haproxy.cfg /etc/haproxy/
[root@localhost examples]#cd /etc/haproxy/
[root@localhost haproxy]#vim haproxy.cfg
global
log /dev/log local0 info
###修改日志文件都是local0
log /dev/log local0 notice
###修改日志文件都是local0
#log loghost local0 info
maxconn 4096
#chroot /usr/share/haproxy
###注释掉根目录
uid 99
gid 99
daemon
nbproc 1
###设置服务器1核
#debug
#quiet
defaults
#此处配置默认即可
log global
mode http
option httplog
option dontlognull
retries 3
redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen webcluster 0.0.0.0:80
option httpchk GET /test.html
balance roundrobin
server inst1 192.168.91.102:80 check inter 2000 fall 3
server inst2 192.168.91.103:80 check inter 2000 fall 3
##使haproxy可以使用service命令
[root@localhost examples]#cd /opt/haproxy-1.4.24/examples
[root@localhost examples]#cp haproxy.init /etc/init.d/haproxy
[root@localhost examples]#cd /etc/init.d/
[root@localhost init.d]#chmod +x haproxy
[root@localhost init.d]#chkconfig --add haproxy
##做个软连接,使这个可以在任何地方使用
[root@localhost sbin]#ln -s /usr/local/sbin/haproxy /usr/sbin/
##开启haproxy
[root@localhost sbin]#service haproxy start
systemctl stop firewalld
setenforce 0
[root@master100 opt]#yum install httpd -y
[root@master100 opt]#cd /var/www/html/
[root@master100 opt]#vim test.html
##开启httpd服务
[root@master100 opt]#systemctl start httpd
##看看服务有没有起
ss -napt |grep 80
systemctl stop firewalld
setenforce 0
[root@master100 opt]#yum install httpd -y
[root@master100 opt]#cd /var/www/html/
[root@master100 opt]#vim test.html
##开启httpd服务
[root@master100 opt]#systemctl start httpd
##看看服务有没有起
ss -napt |grep 80
curl 192.168.187.150/test.html
这样就实现了负载均衡
1. #修改配置文件
vim /etc/haproxy/haproxy.cfg
global
log 192.168.59.118 local6 info
log /dev/log local0 notice
2. #修改rsyslog配置
vim /etc/rsyslog.conf
14 # Provides UDP syslog reception
15 $ModLoad imudp #注释掉
16 $UDPServerRun 514 #注释掉
...
74 local6.* /var/log/haproxy.log
3. # 重启服务
systemctl restart rsyslog.service
service haproxy restart
4. #查看haproxy的访问请求日志信息
实时查看日志文件后十行
tail -f /var/log/haproxy.log
这边放在节点1服务器中
##haproxy服务器重启haproxy服务
service haproxy restart
##节点1服务器重启rsyslog.service服务
systemctl restart rsyslog.service
先访问几下服务器
实时查看日志文件后十行
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/a568911/article/details/121468966
内容来源于网络,如有侵权,请联系作者删除!