zoukankan      html  css  js  c++  java
  • Haproxy介绍、安装与配置

    Haproxy技术详解
    一、 介绍
    HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
    HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。
    HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。
    包括 GitHub、Bitbucket、Stack Overflow、Reddit、Tumblr、Twitter和 Tuenti在内的知名网站,及亚马逊网络服务系统都使用了HAProxy。

    【以上摘自百度百科】

    二、 原理
    HAProxy 支持TCP(四层)和HTTP(七层)两种代理模式,也是支持虚拟主机的。
    HAProxy 的优点能够补充 Nginx 的一些缺点,比如支持 Session 的保持,Cookie 的引导;同时支持通过获取指定的 url 来检测后端服务器的状态。
    HAProxy 跟 LVS 类似,本身就只是一款负载均衡软件;单纯从效率上来讲 HAProxy 会比 Nginx 有更出色的负载均衡速度,在并发处理上也是优于 Nginx 的。
    HAProxy 支持 TCP 协议的负载均衡转发,可以对 MySQL 读进行负载均衡,对后端的 MySQL 节点进行检测和负载均衡,大家可以用 LVS+Keepalived 对 MySQL 主从做负载均衡。
    HAProxy 负载均衡策略非常多:Round-robin(轮循)、Weight-round-robin(带权轮循)、source(原地址保持)、RI(请求URL)、rdp-cookie(根据cookie)。

    三、 安装(以CentOS为例)
    A.联网yum安装

    $ sudo yum install haproxy -y

    文件存放位置:

    /usr/sbin/haproxy #二进制文件
    /usr/share/haproxy #共享文件
    /var/lib/haproxy #库文件
    /etc/rc.d/init.d/haproxy #启动二进制文件
    /etc/logrotate.d/haproxy #日志切割
    /etc/sysconfig/haproxy #配置
    /etc/haproxy #配置目录

    B.源码编译
    haproxy-1.8.8.tar.gz源码包地址:[从官网下载需要翻墙]
    链接: https://pan.baidu.com/s/1yj8qy2JB0Rh-WPy33T7aAw 提取码: yy5d
    # 编译过程如下:

    $ sudo tar –zxvf haproxy-1.8.8.tar.gc –C /usr/local/src
    $ sudo groupadd -r haproxy && useradd -g haproxy -M -s /sbin/nologin haproxy 
    $ sudo cd /usr/local/src/haproxy-1.8.8
    $ sudo make TARGET=linux26 ARCH=X86_64 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy
    $ sudo mkdir –p /etc/haproxy && vim /etc/haproxy/haproxy.cfg

    ###################################haproxy.cfg配置文件######################################

    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 *:5000
        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
    
    backend static
        balance     roundrobin
        server      static 127.0.0.1:4331 check
    
    backend app
        balance     roundrobin
        server  app1 127.0.0.1:5001 check
        server  app2 127.0.0.1:5002 check
        server  app3 127.0.0.1:5003 check
        server  app4 127.0.0.1:5004 check

    ###########################################################################################


    四、 配置文件详解

  • 相关阅读:
    C# Firefox Session Manager 文件的导出与管理
    安徒生的童话《冰雪皇后》原本是这样的
    许多人不知道的生活小秘方
    洗衣服窍门大全
    小窍门解决大问题(绝对值得收藏)
    日常生活小技巧
    谷歌浏览器应用商店打不开,下载不了扩展程序的解决办法
    食品安全如何让百姓放心
    把 WORD 里的换行符(向下的箭头)换成回车符(常用回车符)
    充满创意的生活小妙招 --爱生活爱创意!
  • 原文地址:https://www.cnblogs.com/herui1991/p/9772548.html
Copyright © 2011-2022 走看看