使用Haproxy搭建web群集

发布于:2025-06-24 ⋅ 阅读:(22) ⋅ 点赞:(0)

一、Haproxy

Haproxy 是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如 LVS 和 Nginx。相比较而言,LVS 性能最好,但是搭建相对复杂;Nginx的upstream 模块支持群集功能,但是对群集节点健康检查功能不强,高并发性能没有 Haproxy 好。Haproxy 官方网站是 http://www.haproxy.org/。

http请求

通过 URL 访问网站使用的协议是 HTTP 协议,此类请求一般称为 HTTP 请求。HTTP 请求的方式分为GET方式和POST方式。当使用浏览器访问某一个URL,会根据请求 URL 返回状态码,通常正常的状态码为 2xx、3xx(如 200、301),如果出现异常会返回 4xx、5xx(如 400、500)。

负载均衡常见调度算法

LVS、Haproxy、Nginx 最常用的调度算法有三种,如下所述
(1)RR(Round Robin)。RR 算法是最简单最常用的一种算法,即轮询调度。例如,有三个节点 A、B、C,第一个用户访问会被指派到节点 A,第二个用户访问会被指派到节点B,第三个用户访问会被指派到节点C,第四个用户访问继续指派到节点 A,轮询分配访问请求实现负载均衡效果。此算法还有一种加权轮询即根据每个节点的权重轮询分配访问请求
(2)LC(Least Connections)。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的连接数会动态释放,很难会出现一样连接数的情况,因此此算法相比较 rr 算法有很大改进,是目前用到比较多的一种算法。
(3)SH(SourceHashing)。SH 即基于来源访问调度算法,此算法用于一些有Session 会话记录在服务器端的场景,可以基于来源的 IP、Cookie 等做群集调度。例如,使用基于源 IP 的群集调度算法,有三个节点 A、B、C,第一个用户第一次访问被指派到了 A,第二个用户第一次访问被指派到了 B,当第一个用户第二次访问时会被继续指派到A,第二个用户第二次访问时依旧会被指派到 B,只要负载均衡调度器不重启,第一个用户访问都会被指派到 A,第二个用户访问都会被指派到 B,实现群集的调度。此调度算法好处是实现会话保持,但某些IP访问量非常大时会引起负载不均衡,部分节点访问量超大,影响业务使用。

二、实验案例

在这里插入图片描述

1.安装网站服务器

(在102和103)
本案用http代替nginx网站访问
在这里插入图片描述
关闭防火墙和安全机制
在这里插入图片描述
建立测试网站并启动服务
102为test1网站
在这里插入图片描述
103为test2网站
在这里插入图片描述

安装haproxy

(在101上)
在这里插入图片描述

配置haproxy服务器

在这里插入图片描述
Haproxy 配置项介绍:
Haproxy 配置文件通常分为三个部分,即 global、defaults 和 listen。
global 为全局配置,defaults 为默认配置,listen 为应用组件配置。

global 配置项通常有下面配置参数,以示例参数说明如下
在这里插入图片描述
defaults 配置项配置默认参数,一般会被应用组件继承,如果在应用组件中没有特别声明,将按照默认配置参数设置。
在这里插入图片描述
listen 配置项一般配置应用模块参数。
在这里插入图片描述
启动服务器
在这里插入图片描述
测试web群集
在这里插入图片描述
在这里插入图片描述

haproxy日志

Haproxy 的日志默认输出到系统的 syslog 中,查看起来不是非常方便,为了更好地管理 Haproxy 的日志,在生产环境中一般单独定义出来,定义的方法如下所述。
(1)修改haproxy配置文件,将原文件给改为
在这里插入图片描述
在这里插入图片描述
(2)配置 Rsyslog 服务
创建 rsyslog 的 HAProxy 日志规则文件:
在这里插入图片描述
在这里插入图片描述
重启 Rsyslog 和 HAProxy 服务
在这里插入图片描述
再次访问之后就可以生成日志
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到