Haproxy搭建web群集

一、常见的WEB群集调度器

目前常见的WEB群集调度器分为软件和硬件

软件通常使用开源的LVS、Haproxy、Nginx

硬件一般使用比较多的是F5,也有很多人使用国内的一些产品如梭子鱼、绿盟等

二、Haproxy应用分析

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

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

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

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

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

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

三、Haproxy调度算法原理

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

(一)、RR(Round Robin)

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

举个列子:有三个节点A、B、C,第一个用户访问会被指派到节点A,第二个用户访问会被指派到节点B,第三个用户访问会被指派到节点,第四个用户访问继续指派到节点A,轮询分配访问请求实现负载。

(二)、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 算法有很大改进,是目前用到比较多的一种算法

(三)、SH(Source Hashing)

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

理解举例:有三个节点A、B、C,第一个用户第一次访问被指派到了A,第二个用户第一次访问被指派到了B。

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

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

四、使用Haproxy搭建web群集

需使用三台虚拟服务器(一台Haproxy,两台nginx)

主机

IP地址

Haproxy

20.0.0.10

Nginx  1

20.0.0.20

Nginx  2

20.0.0.30

搭建过程中所需要的安装包:

nginx-1.12.2.tar.gz     haproxy-1.5.19.tar.gz

(一)配置nginx服务器的配置

具体过程

在两台网站服务器.上安装Nginx,并启动服务

使用源码编译的方式进行安装

安装基础软件包

增加系统用户账号nginx

编译安装Nginx并启动

关闭Firewalld防火墙及优化设置

在两台Nginx.上配置测试网站,注意测试网页的内容应该不同,以便进行测试

  1.1安装依赖包

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

 Haproxy搭建web群集

 

 

   1.2创建名为nginx的用户,且不允许登录系统

     useradd -M -s /sbin/nologin nginx

 Haproxy搭建web群集

 

 

   1.3上传nginx安装包到opt目录,解压nginx安装包

 Haproxy搭建web群集

 

 

   1.4编译配置

   ./configure \

    --prefix=/usr/local/nginx \

    --user=nginx \

    --group=nginx \

 Haproxy搭建web群集

 

 

 

  1.5make && make install

 Haproxy搭建web群集

 

 

  1.6设置网页内容

 Haproxy搭建web群集

 

 

  1.7优化路径 启动nginx服务

 Haproxy搭建web群集

 

 

(二)、nginx2服务器配置

     2.1安装依赖包

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

 Haproxy搭建web群集

 

 

     2.2创建名为nginx的用户,且不允许登录系统

     useradd -M -s /sbin/nologin nginx

 Haproxy搭建web群集

 

 

     2.3上传nginx安装包到opt目录,解压nginx安装包

 Haproxy搭建web群集

 

 

     2.4编译配置

    ./configure \

    --prefix=/usr/local/nginx \

    --user=nginx \

    --group=nginx 

 Haproxy搭建web群集

 

 

 

2.5make && make install

 Haproxy搭建web群集

 

 

2.6设置网页内容

 Haproxy搭建web群集

 

 

2.7优化路径,启动nginx服务

 Haproxy搭建web群集

 

 

 

(三)、haproxy服务器的配置

  3.1安装环境依赖包

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

 Haproxy搭建web群集

 

 

  3.2上传haproxy安装包到opt目录,解压安装包

 Haproxy搭建web群集

 

 

  3.3编译配置

    cd /opt/haproxy-1.5.19/

    make TARGET=linux26

    make install

 Haproxy搭建web群集

 

 Haproxy搭建web群集

 

 

 

  3.4新建配置文件目录,复制样本

    mkdir /etc/haproxy

    cp examples/haproxy.cfg /etc/haproxy/

 Haproxy搭建web群集

 

 

  3.5修改配置文件

     先将这两行注释

Haproxy搭建web群集

 

 

 

    删除所有的listen项目,添加如下内容

     listen   webcluster 0.0.0.0:80

                option httpchk CET /test.html

                balance roundrobin

                server inst1 20.0.0.10:80 check inter 2000 fall 3

                server inst2 20.0.0.20:80 check inter 2000 fall 3

   //这里的IP地址是nginx的节点服务器地址

 Haproxy搭建web群集

 

 

   3.6优化路径开启服务

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

     cd /etc/init.d/

     chmod +x haproxy

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

   #创建软链接

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

 Haproxy搭建web群集

 

 

 

  测试

 Haproxy搭建web群集

 

 Haproxy搭建web群集

 

 

 

(四)、配置日志功能

   在haproxy服务器上配置

    4.1修改配置文件

    vi /etc/haproxy/haproxy.cfg

 Haproxy搭建web群集

 

 

   4.2修改红框中内容

 Haproxy搭建web群集

 

 

   4.3在rsyslog.d下面创建一个目录

 Haproxy搭建web群集

 

 

   4.4添加以下内容

    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

    &~

 Haproxy搭建web群集

 

 

 

   4.5重启服务

 Haproxy搭建web群集

 

 

   4.6查看网页

 Haproxy搭建web群集

 

 

    4.7查看日志内容

     cd /var/log/haproxy

 Haproxy搭建web群集

 

上一篇:云原生haproxy 代理-ebpf


下一篇:简述Etcd、Lvs、HAProxy