千家信息网

使用Haproxy搭建web群集

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,内容要点:一、常见的 Web集群调度器:二、Haproxy 应用分析:三、Haproxy 调度算法原理:四、实验示例:第一步:搭建两台 Nginx 服务器第二步:搭建 Haproxy第三步:在 win
千家信息网最后更新 2026年10月31日使用Haproxy搭建web群集

内容要点:

一、常见的 Web集群调度器:

二、Haproxy 应用分析:

三、Haproxy 调度算法原理:

四、实验示例:

第一步:搭建两台 Nginx 服务器

第二步:搭建 Haproxy

第三步:在 win7 上用浏览器访问调度服务器(192.168.100.100/test.html)

第四步:优化日志

一、常见的 Web集群调度器:

目前常见的 Web 集群调度器分为软件和硬件,软件通常使用开源的LVS、Haproxy、Nginx,硬件一般使用比较多的是 F5,也有很多人使用国内的一些产品,如梭子鱼、绿盟等。


二、Haproxy 应用分析:

(1)LVS 在企业应用中抗负载能力很强,但存在不足:


  • LVS 不支持正则处理,不能实现动静分离;

  • 对于大型网站,LVS 的实现配置复杂,维护成本相对较高

(2)Haproxy 是一款可提供高可用性、负载均衡、及基于 TCP 和 HTTP 应用的代理的软件


  • 特别适用于负载特别大的 Web站点;

  • 运行在当前的硬件上可支持数以万计的并发连接请求

三、Haproxy 调度算法原理:

Haproxy 支持多种调度算法,最常用的有三种:


(1)RR:


RR 算法是最简单最常用的一种算法,即轮询调度;

理解举例

  • 有三个节点A、B、C,第一个用户访问会被指派到节点A,第二个用户访问会被指派到节点B,第三个用户访问会被指派到节点

  • 第四个用户访问继续指派到节点A,轮询分配访问请求实现负载均衡效果


(2)LC:


LC 算法即最小连接数算法,根据后端的节点连接数大小动态分配前端请求;

理解举例

  • 有三个节点A. B、C,各节点的连接数分别为A:4、B:5、 C:6, 此时如果有第一个用户连接请求,会被指派到A上,连接数变为A:5、B:5、 C:6

  • 第二个用户请求会继续分配到A上,连接数变为A:6、B:5、 C:6; 再有新的请求会分配给B,每次将新的请求指派给连接数最小的客户端

  • 由于实际情况下A. B、C的连接数会动态释放,很难会出现一样连接数的情况,因此此算法相比较r算法有很大改进,是目前用到比较多的-种算法

(3)SH:


SH 即基于来源访问调度算法,次算法用于一些有 Session 会话记录在服务器端的场景,可以基于来源的 IP、Cookie 等做集群调度。

理解举例

  • 有三个节点A. B、C,第一个用户第一-次访问被指派到了A,第二个用户第一次访问被指派到了B

  • 当第一个用户第二次访问时会被继续指派到A,第二个用户第二次访问时依旧会被指派到B,只要负载均衡调度器不重启,第一个用户访问都会被指派到A,第二个用户访问都会被指派到B,实现集群的调度

  • 此调度算法好处是实现会话保持,但某些IP访问量非常大时会引起负载不均衡,部分节点访问量超大,影响业务使用

四、实验示例:

(1)环境准备:


  • 两台 Nginx 服务器,一台 Haproxy调度服务器,一台window作为测试用;

  • 在两台 Nginx服务器写两个测试网页;

  • 所有主机网卡都设置成仅主机模式,修改好网卡信息;

  • 客户端可以通过访问调度服务器,访问到两台节点服务器,不需要访问真实服务器地址。

角色IP地址
Haproxy192.168.100.100
Nginx 01192.168.100.201
Nginx 02192.168.100.202
window7(作为测试用)192.168.100.50


第一步:搭建两台 Nginx 服务器

关于nginx的搭建可以看我之前的博客,有详细的搭建过程和细节,这边具体细节不再写了。

搭建好 Nginx服务之后,在 Nginx主页 html 中添加一个测试主页,便于验证实验结果:

第一台:

echo "this is kgc web" > /usr/local/nginx/html/tset.html

第二台:

echo "this is accp web" > /usr/local/nginx/html/tset.html


第二步:搭建 Haproxy

(1)安装编译工具:

yum install bzip2-devel pcre-devel gcc gcc-c++ make -y


(2)可以通过远程挂载将 haproxy压缩包挂载到本地,再解压缩:

 tar zxvf haproxy-1.5.19.tar.gz -C /opt/ //解压到/opt目录下


(3)编译:

make TARGET=linux3100注:这个版本号,可以使用 uname -a 命令来查看版本号
make install


(4)创建文件,进行备份修改:


mkdir /etc/haproxycp examples/haproxy.cfg /etc/haproxy/vim /etc/haproxy/haproxy.cfgglobal        log 127.0.0.1   local0        log 127.0.0.1   local1 notice        #log loghost    local0 info        maxconn 4096        uid 99        gid 99        daemon        #debug        #quietdefaults        log     global        mode    http        option  httplog        option  dontlognull        retries 3        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.100.201:80 check inter 2000 fall 3       server inst2 192.168.100.202:80 check inter 2000 fall 3


(5)启动脚本:


cp examples/haproxy.init /etc/init.d/haproxy //复制到init.d启动进程中 chmod +x /etc/init.d/haproxy //添加执行权限 chkconfig --add haproxy  //添加到service,便于识别 ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy //创建软连接


(6)开启服务:

service haproxy start


关闭防火墙等环境


[root@Haproxy haproxy-1.5.19]# systemctl stop firewalld.service [root@Haproxy haproxy-1.5.19]# setenforce 0


第三步:在 win7 上用浏览器访问调度服务器(192.168.100.100/test.html)

http://192.168.100.100/test.html

第四步:优化日志

对调度器的配置文件进行优化和修改,可以将正常的访问信息和错误的信息分别存放在不同的日志文件中,方便管理;Haproxy的日志默认是输出到系统的 syslog 中,在生产环境中一般单独定义出来。


(1)修改主配置文件


vim/etc/haproxy/haproxy.cfg修改global段:log /dev/log    local0 info      //正常访问的信息存放地log /dev/log    local0 notice    //提示、警告等信息存放地


(2)重启服务

service haproxy restart


(3)创建文件,并添加规则


[root@Haproxy haproxy]# touch /etc/rsyslog.d/haproxy.conf[root@Haproxy haproxy]# cd /etc/rsyslog.d/[root@Haproxy rsyslog.d]# vim haproxy.conf if ($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&~


(4)重启日志服务

systemctl restart rsyslog.service


(5)查看日志文件: /var/log/haproxy/haproxy-info.log

cat haproxy-info.log


调度 服务 用户 算法 服务器 节点 文件 日志 信息 集群 均衡 三个 分配 应用 测试 常见 环境 硬件 软件 A. 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 哈尔滨大商圈互联网科技有限公司 科技互联网公司装修 致聘互联网科技 苏州大垚互联网科技 多迪互联网科技有限公司 卫星互联网科技股票 互联网和高科技公司 温州喔噻互联网科技有限公司 以后互联网后是啥科技 互联网科技有哪些公司 洛阳共同富裕互联网科技有限公司 互联网在线教育科技创业 保险科技服务互联网营销体系 长沙互联网科技 领航科技大厦互联网公司 艺电能源互联网科技有限公司招聘 互联网领先科技活动 中国互联网公司的科技投入 第三届互联网大会安防黑科技 承德科技产业互联网平台 河南真二互联网科技有限公司 奔汉互联网科技 四个字互联网科技公司取名 互联网科技革命什么开始 玉溪互联网科技怎么选 如何创新互联网科技 伍佰万互联网科技怎么赚钱 银行科技岗属于互联网吗 浙南科技城互联网大厦招聘 北京瑞云互联网科技有限公司
0