Haproxy介绍、安装与配置

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

【以上摘自百度百科】css

 

2、 原理
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)。java

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

$ sudo yum install haproxy -y

文件存放位置:web

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

B.源码编译
haproxy-1.8.8.tar.gz源码包地址:[从官网下载须要FQ]
连接: https://pan.baidu.com/s/1yj8qy2JB0Rh-WPy33T7aAw 提取码: yy5d
# 编译过程以下:vim

$ 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

 

###########################################################################################安全


4、 配置文件详解服务器

相关文章
相关标签/搜索