高性能群集部署技术-使用Haproxy搭建Web群集

目录

  1.1Haproxy的概述

  2.1HTTP请求

  2.1.1负载均衡常用调度算法

  2.1.2常见的Web群集调度器

  3.1案例环境

  3.1.1安装httpd服务器 

  3.1.2Haproxy服务器配置

  3.1.3测试Web群集

  3.1.4Haproxy的日志


1.1Haproxy的概述

   HAProxy(High Availability Proxy)是一款开源的高性能负载均衡与反向代理软件,主要用于处理网络流量的分发和管理。它支持 TCP、HTTP、WebSocket 等多种协议,可在高并发场景下稳定运行,广泛应用于 Web 服务器、数据库、消息队列等后端服务的负载均衡。

2.1HTTP请求

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

   例如,访问 http://www.test.com/a.php?Id=123,就是一个 GET 请求,如果访问正常,会从服务器的日志中获取 200 状态码。假如此请求使用 POST 方式,那么传递给 a.php 的 Id 参数依旧是 123,但是浏览器的 URL 将不会显示后面的 Id=123 字样,因此表单类或者有用户名、密码等内容提交时建议使用 POST 方式。不管使用哪种方式,最终 a.php 获取的值是一样的。

2.1.1负载均衡常用调度算法

     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(Source Hashing)。SH 即基于来源访问调度算法,此算法用于一些有 Session 会话记录在服务器端的场景,可以基于来源的 IP、Cookie 等做群集调度。例如,使用基于源 IP 的群集调度算法,有三个节点 A、B、C,第一个用户第一次访问被指派到了 A,第二个用户第一次访问被指派到了 B,当第一个用户第二次访问时会被继续指派到 A,第二个用户第二次访问时依旧会被指派到 B,只要负载均衡调度器不重启,第一个用户访问都会被指派到 A,第二个用户访问都会被指派到 B,实现群集的调度。此调度算法好处是实现会话保持,但某些 IP 访问量非常大时会引起负载不均衡,部分节点访问量超大,影响业务使用。        

2.1.2常见的Web群集调度器

    目前,常见的Web群集调度器分为软件和硬件。软件通常使用开源的LVS,Haproxy,Nginx,硬件一般使用比较多的是F5。

3.1案例环境

高性能群集部署技术-使用Haproxy搭建Web群集_第1张图片

主机 操作系统 IP 地址 应用
nginx1 openEuler 24.03 192.168.10.101 nginx
nginx2 openEuler 24.03 192.168.10.102 nginx
haproxy openEuler 24.03 192.168.10.103 haproxy

3.1.1安装httpd服务器

  在192.168.10.102和192.168.10.103上安装httpd服务器

  dnf -y install httpd

  systemctl stop firewalld 

  安全机制关闭

  echo "test01" > /var/www/html/index.html    设置一个网页

  在192.168.10.104上验证:curl 192.168.10.102                                                                        curl192.168.10.103

编译安装Haproxy

  在192.168.10.101上执行dnf -y install haproxy

3.1.2Haproxy服务器配置

(1)建立Haproxy的配置文

[root@localhost ~]#vim /etc/haproxy/haproxy.cfg

Haproxy 配置项介绍:
     Haproxy 配置文件通常分为三个部分,即 global、defaults 和 listen。global 为全局配置,defaults 为默认配置,listen 为应用组件配置。

global
    log 127.0.0.1 local2  //配置日志记录,local2 为日志设备,默认存放到系统日志
    maxconn 4000        //最大连接数
    user haproxy        //用户
    group haproxy       //用户组
defaults
    log global    //定义日志为 global 配置中的日志定义
    mode http     //模式为 http
    option httplog    //采用 http 日志格式记录日志
    retries 3        //检查节点服务器失败次数,连续达到三次失败,则认为节点不可用
    maxconn 3000      //最大连接数
    timeout connect  5s      //连接超时时间
    timeout client   1m      //客户端超时时间
    timeout server   1m      //服务器超时时间
listen webcluster    //定义一个 appli4-backup 的应用
    bind 0.0.0.0:80    //监听所有网卡的 80 端口
    option httpchk GET /index.html  //通过 GET /index.html 检查服务器健康状态
    balance roundrobin  //负载均衡调度算法使用轮询算法
    server inst1 192.168.10.101:80 check inter 2000 fall 3  //后端服务器 1,每 2 秒检查一次,3 次失败后下线
    server inst2 192.168.10.102:80 check inter 2000 fall 3  

(2)修改haproxy.cfg配置文件

[root@localhost ~]# vim /etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
user haproxy
group haproxy
daemon
maxconn 4000
defaults
mode http
log global
option httplog
option dontlognull
retries 3
timeout http - request 5s
timeout queue 1m
timeout connect 5s
timeout client 1m
timeout server 1m
timeout http - keep - alive 5s
timeout check 5s
maxconn 3000
listen webcluster
bind 0.0.0.0:80
option httpchk GET /index.html
balance roundrobin
server inst1 192.168.10.102:80 check inter 2000 fall 3
server inst2 192.168.10.103:80 check inter 2000 fall 3

3.1.3测试Web群集

   在192.168.10.104上执行curl 192.168.10.102    test01                                                                   curl 192.168.10.103    test02

3.1.4Haproxy的日志

   在192.168.10.101中执行vim /etc/haproxy/haproxy.cfg中添加

    log 127.0.0.1 local3

   cd /etc/rsyslog.d

   vim haproxy.conf

    $ModLoad imudp   

    $UDPServerRun 514

    local3.* /var/log/haproxy.log   

然后启动rsyslog和Haproxy服务

  systemctl restart rsyslog 

  systemctl restart haproxy

最后测试日志信息

 在192.168.10.104上执行curl 192.168.10.101

 再在192.168.10.101上查看日志信息   tail -f /var/log/haproxy.log

嘿嘿嘿,今天的笔记就分享到这了~~~

你可能感兴趣的:(前端)