zoukankan      html  css  js  c++  java
  • 负载均衡----HAproxy

    目前haproxy支持的负载均衡算法有如下8种

    1、roundrobin

    表示简单的轮询,每个服务器根据权重轮流使用,在服务器的处理时间平均分配的情况下这是最流畅和公平的算法。该算法是动态的,对于实例启动慢的服务器权重会在运行中调整。(动态)

    2、leastconn(常用)

    连接数最少的服务器优先接收连接。leastconn建议用于长会话服务,例如LDAP、SQL、TSE等,而不适合短会话协议。如HTTP.该算法是动态的,对于实例启动慢的服务器权重会在运行中调整。(动态)

    3、static-rr

    每个服务器根据权重轮流使用,类似roundrobin,但它是静态的,意味着运行时修改权限是无效的。另外,它对服务器的数量没有限制。该算法一般不用;(静态)

    4、source(常用)

    对请求源IP地址进行哈希,用可用服务器的权重总数除以哈希值,根据结果进行分配。只要服务器正常,同一个客户端IP地址总是访问同一个服务器。如果哈希的结果随可用服务器数量而变化,那么客户端会定向到不同的服务器;

    该算法一般用于不能插入cookie的Tcp模式。它还可以用于广域网上为拒绝使用会话cookie的客户端提供最有效的粘连;

    该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整。(静态)

    5、uri

    表示根据请求的URI左端(问号之前)进行哈希,用可用服务器的权重总数除以哈希值,根据结果进行分配。只要服务器正常,同一个URI地址总是访问同一个服务器。一般用于代理缓存和反病毒代理,以最大限度的提高缓存的命中率。该算法只能用于HTTP后端;

    该算法一般用于后端是缓存服务器;

    该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整。(静态)

    6、url_param

    在HTTP GET请求的查询串中查找<param>中指定的URL参数,基本上可以锁定使用特制的URL到特定的负载均衡器节点的要求;

    该算法一般用于将同一个用户的信息发送到同一个后端服务器;

    该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整。(静态)

    7、hdr(name)

    在每个HTTP请求中查找HTTP头<name>,HTTP头<name>将被看作在每个HTTP请求,并针对特定的节点;

    如果缺少头或者头没有任何值,则用roundrobin代替;

    该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整。(静态)

    8、rdp-cookie(name)

    为每个进来的TCP请求查询并哈希RDP cookie<name>;

    该机制用于退化的持久模式,可以使同一个用户或者同一个会话ID总是发送给同一台服务器。如果没有cookie,则使用roundrobin算法代替;

    该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据“hash-type”的变化做调整。(静态)

    下面是haproxy的配置

    global
    log 127.0.0.1 local2

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

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

    defaults
    mode http                               #实例的默认运行模式
    retries 3                                  #连接后端服务器的失败重试次数
    timeout connect 10s               #连接服务器的最长等待时间,默认单位为毫秒,可使用其它时间单位
    timeout client 20s                   #连接客户端发送数据时最长等待时间,默认单位为毫秒,可使用其它时间单位
    timeout server 30s                 #服务器回应给客户端数据发送的最长等待时间,默认单位为毫秒,可使用其它时间单位
    timeout check 5s                    #对后端服务器的检查超时时间,默认单位为毫秒,可使用其它时间单位

    frontend admin_stats
    bind *:8089                            #设置监控页面的访问地址,该地址表示为监听本机所有地址的8089端口
    mode http
    log global                               #使用全局日志
    stats refresh 30s                    #监控页面自动刷新时间
    stats uri /haproxy-status         #uri的访问后缀
    stats realm welcome login Haproxy         #文本提示信息
    stats auth admin:123456        #统计页面的用户名和地址,每行一个
    stats hide-version                   #隐藏统计页面的HAProxy的版本信息
    stats admin if TRUE                #可手工启动或禁用后端真实服务器,仅在1.4.9版本后有效

    frontend main *:8088
    # acl url_static path_beg -i /static /images /javascript /stylesheets            #acl配置范例
    # acl url_static path_end -i .jpg .gif .png .css .js                                         #acl配置范例

    acl web_url path_beg -i /test   #设置一个acl,该acl规定了url里面包含了/test/的话,就会粗发该acl。

    use_backend web if web_url   #当acl--web触发后,使用backend---web。

    default_backend web               #默认backend

    backend web
    balance leastconn                     #使用最小链接算法
    server web01 172.16.1.11:8001 weight 1 check     #添加server并设定权重
    server web02 172.16.1.12:8001 weight 1 check     #添加server并设定权重
    server web03 172.16.1.13:8001 weight 1 check     #添加server并设定权重

    安装

    HAproxy的安装非常简单

    可以直接yum安装

    yum  -y  install  haproxy

    也可以自行编译

    wget http://fossies.org/linux/misc/haproxy-1.8.14.tar.gz#解压

    tar -zxvf haproxy-1.8.14.tar.gz

    cd haproxy-1.8.14

    make TARGET=linux2628 ARCH=x86_64 PREFIX=/usr/local/haproxy

    make install PREFIX=/usr/local/haproxy

    #参数说明

    TARGET=linux26 #内核版本,使用uname -r查看内核,如:2.6.18-371.el5,此时该参数就为linux26kernel 大于2.6.28的用:TARGET=linux2628

    ARCH=x86_64 #系统位数

    PREFIX=/usr/local/haprpxy #/usr/local/haprpxyhaprpxy安装路径

     

     

    配置(自己创建)

     

    /usr/local/haproxy/haproxy.cfg

     

  • 相关阅读:
    LNMP架构三
    LNMP架构二
    LNMP架构
    LAMP架构三
    LAMP架构二
    LAMP架构
    rsync工具介绍
    mysqldump备份单表数据
    阿铭每日一题 day 14 20180125
    阿铭每日一题 day 13 20180124
  • 原文地址:https://www.cnblogs.com/QicongLiang/p/9837617.html
Copyright © 2011-2022 走看看