HAProxy高性能软负载均衡器

栏目: 服务器 · 发布时间: 6年前

内容简介:现在公司实现高可用已经成为必不可少的一环,在众多的负载均衡集群方案中,Haproxy是比较有名的一个。它可以实现TCP或Http的负载均衡。优点如下:借用官网的图,图中的HA即为Haproxy软件,下面的PROXY为要代理的服务器,客户端只需要访问HA,相当于在访问PROXY。像这种软件的东西,直接动手比说理论有用的多。我还是基于Docker演示,明白其原理主要是配置文件,用虚拟机或容器都是类似的。

现在公司实现高可用已经成为必不可少的一环,在众多的负载均衡集群方案中,Haproxy是比较有名的一个。它可以实现TCP或Http的负载均衡。优点如下:

  • 免费开源,与硬件负载均衡相比划算很多
  • 最高可以维护40000~50000个并发,作为软件级别的负载均衡来说,实在强大
  • 支持多种负载均衡算法,同时支持session保持
  • 支持虚拟主机
  • 拥有服务器监控页面,可以了解系统的实时运行状态

借用官网的图,图中的HA即为Haproxy软件,下面的PROXY为要代理的服务器,客户端只需要访问HA,相当于在访问PROXY。

HAProxy高性能软负载均衡器

演示

像这种软件的东西,直接动手比说理论有用的多。我还是基于 Docker 演示,明白其原理主要是配置文件,用虚拟机或容器都是类似的。

  1. 拉取Haproxy:1.8镜像
docker pull haproxy:1.8
复制代码
  1. 拉取httpd镜像,并且准备web容器
docker pull httpd:2.4
docker run -it -d --name web1 httpd:2.4
docker run -it -d --name web2 httpd:2.4
docker run -it -d --name web-static httpd:2.4

docker exec -it web1 /bin/bash
复制代码

进入容器之后分别修改其html页面

HAProxy高性能软负载均衡器
  1. 运行Haproxy容器,并且准备其配置文件

Haproxy的配置文件主要分为几部分

  • global 一些全局配置信息,主要和进程相关,注意如果涉及到目录相关的,要提前创建目录
  • defaults 默认的配置信息
  • frontend 前端的配置,暴露给用户的部分
  • backend 后端的配置,真实的提高服务的部分

在官方的网站中,所有的配置指令都有详细的解释,网址在文末的参考中。

我们的配置如下

HAProxy高性能软负载均衡器
global
    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

    stats socket /var/lib/haproxy/stats

defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

frontend  main
    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js

    use_backend static          if url_static
    default_backend             app
    bind :80
backend static
    balance     roundrobin
    server      static 172.17.0.5:80 check

backend app
    balance     roundrobin
    server  app1 172.17.0.3:80 check
    server  app2 172.17.0.4:80 check
复制代码

结果

在访问同一台服务器,可以看到响应的内容确实转发到后端不同的服务器上面

HAProxy高性能软负载均衡器

最后

纸上得来终觉浅,绝知此事要躬行。Haproxy一直在大脑中停留着,亲自配置一遍才知道其是怎么回事。中间遇到两个问题

  1. Haproxy1.5版本与1.8版本的frontend配置稍有不同,学会参考文档
  2. 配置文件中的stats指定的目录在系统中如果不存在,会报错,指定的目录都要存在才行

让配置生效之前先用haproxy -c检查一下配置文件是否正确


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Master Switch

The Master Switch

Tim Wu / Knopf / 2010-11-2 / USD 27.95

In this age of an open Internet, it is easy to forget that every American information industry, beginning with the telephone, has eventually been taken captive by some ruthless monopoly or cartel. Wit......一起来看看 《The Master Switch》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

在线进制转换器
在线进制转换器

各进制数互转换器