HAProxy高性能软负载均衡器

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

内容简介:现在公司实现高可用已经成为必不可少的一环,在众多的负载均衡集群方案中,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检查一下配置文件是否正确


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

查看所有标签

猜你喜欢:

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

写给大家看的Web设计书

写给大家看的Web设计书

Robin Williams、John Tollett / 苏金国、刘亮 / 人民邮电出版社 / 201005 / 69.00元

在这个网络时代,Web设计几乎已经成为每个人生活的必备技能。如果你想自力更生创建一个网站,或者认为自己的网站在设计上还不尽如人意,希望它看上去更具创意和专业性,那么本书正是为你准备的! 作者Robin和John先采用通俗易懂的方式将有关基础知识娓娓道来,比如Internet、搜索信息、构建简单网页等,然后为我们奉上了精妙的技巧、技术和设计示例来启发大家的设计灵感,比如Web基本设计原则、实现......一起来看看 《写给大家看的Web设计书》 这本书的介绍吧!

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

在线压缩/解压 HTML 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具