Haproxy 搭建 Web 群集

一、Haproxy概述

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

二、Haproxy知识点

        1. HTTP 请求

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

        2. 负载均衡常用调度算法

          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 访问量非常大时会引起负载不均衡,部分节点访问量超大,影响业务使用。

        3. 常见的 Web 群集调度器

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

三、实验案例环境

        1.使用三台服务器模拟搭建一套 Web 群集,具体的拓扑如图 

主机操作系统IP地址软件

Haproxy 服务器

CentOS 7.6 x86_64

192.168.10.101

haproxy-1.5.19.tar.gz

nginx1CentOS 7.6 x86_64192.168.10.102nginx-1.20.1
nginx2CentOS 7.6 x86_64192.168.10.103nginx-1.20.1
客户端CentOS 7.6 x86_64192.168.10.107curl

2.实验需求

(1) 测试安装 nginx、haproxy;

 (2)Haproxy、nginx 配置

  (3)都要关闭防火墙、selinux

四、实验步骤

        1.在102、103IP主机上yum安装nginx服务器

                yum -y install epel-release

                yum -y install nginx

        2.编辑网页文档

                vim /usr/share/nginx/html/index.html

                    填入内容:     web1

                在103web上同等操作,内容为“web2”,因为轮询好辨别

                  启动:   systemctl start nginx   

       3.编译安装 Haproxy,Haproxy 官方下载软件网站是 http://www.haproxy.org/

                在 Haproxy 服务器使用 haproxy-1.5.19.tar.gz 安装包进行编译安装

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

                        tar xf haproxy-1.5.19.tar.gz

                        cd haproxy-1.5.19

                        make TARGET=linux2628 && make install         

        4.Haproxy 服务器配置

                (1)建立 Haproxy 的配置文件

                         mkdir /etc/haproxy //创建配置文件目录

                         cp examples/haproxy.cfg /etc/haproxy/   //将 haproxy.cfg 文件复制到配置文件目录

   Haproxy 配置项介绍:

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

               global 配置项通常有下面配置参数

                        global

                                log 127.0.0.1 local0  //配置日志记录,local0 为日志设备,默认存放到系统日志

                                log 127.0.0.1 local1 notice  //notice 为日志级别,通常有 24 个级别

                                maxconn 4096  //最大连接数

                                uid 99  //用户 uid

                                gid 99  //用户 gid

                defaults 配置项配置默认参数,一般会被应用组件继承

                        defaults

                                log global  //定义日志为 global 配置中的日志定义

                                mode http  //模式为 http

                                option httplog  //采用 http 日志格式记录日志

                                retries 3  //检查节点服务器失败次数,连续达到三次失败,则认为节点不可用

                                redispatch  //当服务器负载很高时,自动结束当前队列处理比较久的连接

                                maxconn 2000  //最大连接数

                                contimeout 5000  //连接超时时间

                                clitimeout 50000  //客户端超时时间

                                srvtimeout 50000  //服务器超时时间

                listen 配置项一般配置应用模块参数

                       listen appli4-backup 0.0.0.0:10004 //定义一个 appli4-backup 的应用

                                option httpchk   /index.html //检查服务器的 index.html 文件

                                option persist //强制将请求发送到已经 down 掉的服务器

                                balance roundrobin //负载均衡调度算法使用轮询算法

                                server web1 192.168.10.102:80 check inter 2000 fall 3 //定义在线节点

                                server web1 192.168.10.103:80 check inter 2000 fall 3 

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

                    haproxy.cfg 配置文件的内容修改如下

                           global

                                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

                                #quiet

                        defaults

                                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 /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

       5.创建自启动脚本

                        cp ~/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy

                         ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

                        chmod +x /etc/init.d/haproxy

                        chkconfig --add /etc/init.d/haproxy

                                /etc/init.d/haproxy start         #启动

        6.测试 Web 群集

                用104客户机测试访问负载均衡

                        curl 192.168.10.101

  • 30
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值