Haproxy 搭建 Web 群集日志以及参数优化

男儿欲遂平生志,五经勤向窗前读。这篇文章主要讲述Haproxy 搭建 Web 群集日志以及参数优化相关的知识,希望能为你提供帮助。
@[toc]
1、常见的Web集群调度器目前常见的Web集群调度器分为软件和硬件
软件通常使用开源的LVS、Haproxy、nginx
LVS性能最好,但是搭建相对复杂;Nginx的upstream模块支持集群功能,但是对集群节点健康检查功能不强,高并发没有Haproxy好
硬件一般使用的比较多的是F5,也有很多人使用梭子鱼、绿盟等国内产品
2、Haproxy应用分析LVS在企业应用中抗负载能力很强,但存在不足
LVS不支持正则处理,不能实现动静分离
对于大型网站,LVS的实施配置复杂,维护成功相对较高
Haproxy是一款可提供高可用性、负载均衡、及基于TCP和HTTP应用的代理的软件
适用于负载大的Web站点
运行在硬件上可支持数万计的并发连接的连接请求
3、Haproxy调度算法原理Haproxy支持多种调度算法,最常用的有三种
RR (Round Robin)
RR算法是最简单常用的一种算法,即轮询调度
LC(Least Connections)
最小连接数算法,根据后端的节点连接数大小动态分配前端请求。
SH(Source Hashing)
基于来源访问调度算法,用于一些有Session会话记录在服务器端的场景,可以基于来源的IP、Cookie等做集群调度
4、Haproxy搭建 Web 群集实验所需安装包
==haproxy-1.5.19.tar.gz
nginx-1.12.0.tar.gz==
环境配置

主机 操作系统 IP地址 工具/软件/安装包
Haproxy-Server CentOS7 ens33:192.168.19.10 haproxy-1.5.19.tar.gz
Nginx-Server1 CentOS7 ens33:192.168.19.11 nginx-1.12.0.tar.gz
Nginx-Server2 CentOS7 192.168.19.17 nginx-1.12.0.tar.gz
客户端 CentOS7 ens33:192.168.19.100 --------
1、部署haproxy服务器(192.168.19.10)
1.关闭防火墙,将安装Haproxy所需软件包传到/opt目录下
systemctl stop firewalld setenforce 0cd /opt haproxy-1.5.19.tar.gz

2、编译安装 Haproxy
yum install -y pcre-devel bzip2-devel gcc gcc-c++ make tar zxvf haproxy-1.5.19.tar.gz cd haproxy-1.5.19/ make TARGET=linux2628 ARCH=x86_64 make install

==参数说明==
TARGET=linux26ARCH=x86_64
内核版本系统位数,64位系统
使用uname -r查看内核,如:2.6.18-371.el5,此时该参数用TARGET=linux26;kernel大于2.6.28的用TARGET=linux2628
3、Haproxy服务器配置
mkdir /etc/haproxy cp examples/haproxy.cfg /etc/haproxy/cd /etc/haproxy/ vim haproxy.cfg global

==–4~5行–修改,配置日志记录,local0为日志设备,默认存放到系统日志==
log /dev/loglocal0 info log /dev/loglocal0 notice #log loghostlocal0 info maxconn 4096#最大连接数,需考虑ulimit-n限制

==–8行–注释,chroot运行路径,为该服务自设置的根目录,一般需将此行注释掉==
#chroot /usr/share/haproxy uid 99#用户UID gid 99#用户GID daemon#守护进程模式defaults logglobal#定义日志为global配置中的日志定义 modehttp#模式为http optionhttplog#采用http日志格式记录日志 optiondontlognull#不记录健康检查日志信息 retries 3#检查节点服务器失败次数,连续达到三次失败,则认为节点不可用 redispatch#当服务器负载很高时,自动结束当前队列处理比较久的连接 maxconn 2000#最大连接数 contimeout5000 clitimeout50000 srvtimeout50000 #这些都要注释掉,连接、服务器、客户端的连接超时设定 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s ----------------------------------- ?著作权归作者所有:来自51CTO博客作者kiroct的原创作品,请联系作者获取转载授权,否则将追究法律责任 Haproxy搭建负载集群 https://blog.51cto.com/u_15380854/4963628

==–删除下面所有listen项–,添加==
listenwebcluster 0.0.0.0:80 option httpchk GET /test.html#检查服务器的test.html文件 balance roundrobin#负载均衡调度算法使用轮询算法roundrobin server inst1 192.168.19.11:80 check inter 2000 fall 3#定义在线节点 server inst2 192.168.19.17:80 check inter 2000 fall 3

Haproxy 搭建 Web 群集日志以及参数优化

文章图片
Haproxy 搭建 Web 群集日志以及参数优化

文章图片

Haproxy 搭建 Web 群集日志以及参数优化

文章图片

Haproxy 搭建 Web 群集日志以及参数优化

文章图片

Haproxy 搭建 Web 群集日志以及参数优化

文章图片

Haproxy 搭建 Web 群集日志以及参数优化

文章图片

Haproxy 搭建 Web 群集日志以及参数优化

文章图片

==2、编译安装Nginx服务器(192.168.19.11、192.168.19.17)==
systemctl stop firewalld setenforce 0yum install -y pcre-devel zlib-devel gcc gcc-c++ make useradd -M -s /sbin/nologin nginxcd /opt tar zxvf nginx-1.12.0.tar.gz -C /opt/cd nginx-1.12.0/ ./configure --prefix=/usr/local/nginx --user=nginx --group=nginxmake & & make installln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx#启动nginx 服务

Haproxy 搭建 Web 群集日志以及参数优化

文章图片

Haproxy 搭建 Web 群集日志以及参数优化

文章图片

Haproxy 搭建 Web 群集日志以及参数优化

文章图片

Haproxy 搭建 Web 群集日志以及参数优化

文章图片

Haproxy 搭建 Web 群集日志以及参数优化

文章图片

==192.168.19.11==
echo "this is pxl web" > /usr/local/nginx/html/test.html

Haproxy 搭建 Web 群集日志以及参数优化

文章图片

==192.168.19.17==
echo " this is jingjing web" > /usr/local/nginx/html/test.html
Haproxy 搭建 Web 群集日志以及参数优化

文章图片

==service haproxy start==
Haproxy 搭建 Web 群集日志以及参数优化

文章图片

3、测试 Web集群
在客户端使用浏览器打开 http://192.168.19.10/test.html ,不断刷新浏览器测试负载均衡效果
Haproxy 搭建 Web 群集日志以及参数优化

文章图片
Haproxy 搭建 Web 群集日志以及参数优化

文章图片

五、日志定义
默认haproxy的日志是输出到系统的syslog中,查看起来不是非常方便,为了更好的管理haproxy的日志,我们在生产环境中一般单独定义出来。需要将haproxy的info及notice日志分别记录到不同的日志文件中。
vim /etc/haproxy/haproxy.cfg global log /dev/log local0 info log /dev/log local0 noticeservice haproxy restart

需要修改rsyslog配置,为了便于管理。将haproxy相关的配置独立定义到haproxy.conf,并放到/etc/rsyslog.d/下,rsyslog启动时会自动加载此目录下的所有配置文件。
vim /etc/rsyslog.d/haproxy.confif ($programname == haproxy and $syslogseverity-text == info) then -/var/log/haproxy/haproxy-info.log & ~ if ($programname == haproxy and $syslogseverity-text == notice) then -/var/log/haproxy/haproxy-notice.log & ~

说明:
这部分配置是将haproxy的info日志记录到/var/log/haproxy/haproxy-info.log下,将notice日志记录到/var/log/haproxy/haproxy-notice.log下。“& ~”表示当日志写入到日志文件后,rsyslog停止处理这个信息。
systemctl restart rsyslog.servicetail -f /var/log/haproxy/haproxy-info.log#查看haproxy的访问请求日志信息

【Haproxy 搭建 Web 群集日志以及参数优化】
Haproxy 搭建 Web 群集日志以及参数优化

文章图片


    推荐阅读