zoukankan      html  css  js  c++  java
  • HAProxy负载均衡技术

    软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现。LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载。

    HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

    HAProxy相比LVS的使用要简单很多,功能方面也很丰富。当 前,HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器、内部协议通信服务器等),和7层(HTTP)。在4层模式 下,HAProxy仅在客户端和服务器之间转发双向流量。7层模式下,HAProxy会分析协议,并且能通过允许、拒绝、交换、增加、修改或者删除请求 (request)或者回应(response)里指定内容来控制协议,这种操作要基于特定规则。

    HAProxy的优点:

    一、免费开源,稳定性也是非常好,这个可通过我做的一些小项目可以看出来,单Haproxy也跑得不错,稳定性可以与LVS相媲美;

    二、根据官方文档,HAProxy可以跑满10Gbps-New benchmark of HAProxy at 10 Gbps using Myricom's 10GbE NICs (Myri-10G PCI-Express),这个作为软件级负载均衡,也是比较惊人的;

    三、HAProxy可以作为MySQL、邮件或其它的非web的负载均衡,我们常用于它作为MySQL(读)负载均衡;

    四、自带强大的监控服务器状态的页面,实际环境中我们结合Nagios进行邮件或短信报警,这个也是我非常喜欢它的原因之一;

    五、HAProxy支持虚拟主机。

    HAProxy的8种算法

    一、roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;

    二、static-rr,表示根据权重,建议关注;

    三、leastconn,表示最少连接者先处理,建议关注;

    四、source,表示根据请求源IP,建议关注;

    五、uri,表示根据请求的URI;

    六、url_param,表示根据请求的URl参数'balance url_param' requires an URL parameter name

    七、hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;

    八、rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。

    yum 方式安装

    yum -y install haproxy  自动安装完成

    updatedb 更新本地搜索缓存库

      locate haproxy 找到 /usr/sbin/haproxy

      /usr/sbin/haproxy    -v    如果能出现版本,那么就是安装成功的。

    源代码安装

    tar -zvxf haproxy-1.5.8.tar
    cd haproxy-1.5.8
    
    more README
    ( GCC between 2.95 and 4.8. Others may work, but not tested.)
    
    uname –a
    
    make TARGET=linux2628 ARCH=x86_64 USE_OPENSSL=1 ADDLIB=-lz
    make install  PREFIX=/usr/local/haproxy
     
    如果编译出错,我们需要回滚一下编译的文件。
    make clean

    haproxy 配置

    1. 创建一个 haproxy 用户,通过 cat /etc/passwd | grep haproxy 获取我们的uid 和 gid

    2. 配置

    global log 127.0.0.1 local0 maxconn 4096 #默认最大连接数 
    chroot /usr/local/haproxy uid 502 gid 502 daemon #以后台形式运行
    haproxy nbproc 1 #进程数量(可以设置多个进程提高性能)
    pidfile /usr/local/haproxy/logs/haproxy.pid #haproxy的pid存放路径,启动进程的用户必须有权限访问此文件
    defaults log 127.0.0.1 local3 mode http #所处理的类别 (#7层 http;4层tcp )
    option httplog option httpclose option dontlognull option forwardfor option redispatch retries 2 #2次连接失败就认为服务不可用,也可以通过后面设置
    balance roundrobin #默认的负载均衡的方式,轮询方式
    timeout connect 5000 #连接超时
    timeout client 50000 #客户端超时
    timeout server 50000 #服务器超时
    listen admin_stats bind 0.0.0.0:8080 #监听端口
    option httplog #采用http日志格式
    stats refresh 30s #统计页面自动刷新时间
    stats uri /stats #统计页面url
    stats realm Haproxy Manager #统计页面密码框上提示文本
    stats auth admin:admin #统计页面用户名和密码设置
    stats hide-version #隐藏统计页面上HAProxy的版本信息
    listen web_proxy 114.215.174.147:80
    server web1 120.55.82.2:80 cookie app1inst1 check inter 2000 rise 2 fall 5
    server web2 121.41.7.219:80 cookie app1inst2 check inter 2000 rise 2 fall 5
    #serverid为web1
    #check inter 1500是检测心跳频率
    #rise 3是3次正确认为服务器可用,
    #fall 5是5次失败认为服务器不可用重

    3. 需要创建 /usr/local/haproxy/logs 文件夹, 否则会有警告

    4. 见3.2.6 使用方式

    haproxy 使用

    启动服务:
    # /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.conf
    
    重启服务:
    # /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.conf -st `cat /usr/local/haproxy/logs/haproxy.pid`  (没有换行)
    
    停止服务:
    # killall haproxy

    haproxy  自动保留session id

  • 相关阅读:
    蓝桥杯(Java方法、详细解法分析)基础练习 阶乘计算
    蓝桥杯(Java方法、详细解法分析)基础练习 阶乘计算
    蓝桥杯 算法训练 P0505(Java解法)
    蓝桥杯 算法训练 P0505(Java解法)
    DLNA架构在机顶盒上播放云存储文件的实现
    分布式文件系统 Mogilefs 安装步骤
    开源分布式文件系统比较
    分布式文件系统 fastDFS 安装步骤
    分布式文件系统MooseFS安装步骤
    人人校招笔试题
  • 原文地址:https://www.cnblogs.com/aqicheng/p/10299456.html
Copyright © 2011-2022 走看看