Haproxy搭建Web群集

HAProxy 搭建 Web 群集笔记

一、HAProxy 简介

HAProxy(High Availability Proxy)是一款使用C语言编写的*及开放源代码软件,提供高可用性、负载均衡以及基于TCP和HTTP的应用程序代理。它非常适用于负载大的web站点,能够支持数以万计的并发连接请求,其可靠性和稳定性可与硬件级的F5负载均衡设备相媲美。

1. HAProxy 主要特性

  • 高可靠性和稳定性:支持高并发连接,最大可支持40000-50000个并发连接,单位时间内处理的最大请求数为20000个,最大处理能力可达10Git/s。
  • 多种负载均衡算法:支持多达8种负载均衡算法,如RR(轮询)、LC(最少连接)、SH(基于源地址的哈希)等。
  • 会话保持:支持Session会话保持,可以根据Cookie、源地址等实现请求粘性。
  • 灵活的代理功能:支持四层和七层代理转发,能够实现动静分离。
  • 强大的健康检查:默认支持主动的TCP端口、HTTP URL、脚本等方式的健康检查。
  • 详细的日志和统计:提供丰富的日志和统计接口,方便监控和管理。

2. 常见的负载均衡策略

  • RR(Round Robin):轮询调度,按顺序分配请求到不同的服务器。
  • LC(Least Connections):最小连接数算法,根据服务器当前连接数动态分配请求。
  • SH(Source Hashing):基于来源访问调度算法,根据源IP或Cookie等信息分配请求。

二、HAProxy 搭建 Web 群集步骤

1. 环境准备

假设我们有以下三台服务器:

  • HAProxy 服务器:IP 地址为 192.168.238.10
  • Nginx 服务器1:IP 地址为 192.168.238.20
  • Nginx 服务器2:IP 地址为 192.168.238.30

2. 安装 Nginx 服务器

步骤

  1. 在 Nginx 服务器上安装编译工具和开发包。

    bash复制代码

    yum install -y pcre-devel zlib-devel gcc gcc-c++ make
  2. 解压并编译安装 Nginx。

    bash复制代码

    tar zxvf nginx-1.15.0.tar.gz -C /opt/
    cd /opt/nginx-1.15.0
    ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
    make && make install
  3. 配置 Nginx 并启动服务。

    bash复制代码

    cd /usr/local/nginx/html
    echo "this is Nginx Server 1" > test.html
    ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
    nginx
    netstat -ntap | grep nginx

3. 安装 HAProxy

步骤

  1. 关闭防火墙,将 HAProxy 安装包传到 /opt/ 目录下。

    bash复制代码

    systemctl stop firewalld
    setenforce 0
    tar zxvf haproxy-1.5.19.tar.gz -C /opt/
  2. 安装依赖包并编译安装 HAProxy。

    bash复制代码

    yum install -y pcre-devel bzip2-devel gcc gcc-c++ make
    cd /opt/haproxy-1.5.19
    make TARGET=linux2628 ARCH=x86_64 # 根据实际内核版本调整
    make install
  3. 配置 HAProxy。

    bash复制代码

    mkdir /etc/haproxy
    cp /opt/haproxy-1.5.19/examples/haproxy.cfg /etc/haproxy/
    vim /etc/haproxy/haproxy.cfg

    配置文件(部分示例):

    ini复制代码

    global
    log /dev/log local0 info
    maxconn 4096
    defaults
    mode http
    log global
    option httplog
    option dontlognull
    retries 3
    timeout connect 10s
    timeout client 1m
    timeout server 1m
    listen webcluster 0.0.0.0:80
    option httpchk GET /test.html
    balance roundrobin
    server inst1 192.168.238.
上一篇:Python高级(三)_正则表达式


下一篇:GitLab和Git