zoukankan      html  css  js  c++  java
  • haproxy配置

    Haproxy配置

         3.2 配置haproxy

           haproxy安装后会在etc/haproxy目录下生成haproxy.cfg的配置文件,大多数的配置选项都在这个文件中定义

    打开配置文件然后修改零添加下列选项:

    backend webserver

    balance     roundrobin

    cookie      serverid insert nocache indirecta

    server      web1 192.168.137.131:80 check cookie webserver1

    server      web2 192.168.137.128:80 check cookie webserver2

    1.5 Haproxy 配置文件详解
    1.5.1 global 全局配置

    主要控制haproxy启动前的进程及相关设置

    global
    log 127.0.0.1 local0 # 未定义日志级别,记录所有日志
    log 127.0.0.1:514 local1 notice #定义haproxy日志级别[error warringinfo debug] 通过syslog服务处理
    daemon # 以后台形式运行harpoxy
    nbproc 1 # 设置进程数量 设置过程数时,该值的设置应该和服务器的核心数一致
    pidfile /usr/local/haproxy/conf/haproxy.pid #haproxy 进程PID文件
    ulimit-n 819200 # ulimit 的数量限制
    maxconn 4096 #默认最大连接数,需考虑ulimit-n限制
    chroot /usr/local/haproxy/var/chroot # chroot运行路径
    uid/user 99/haproxy #运行haproxy 用户或UID
    gid/group 99/haproxy #运行haproxy 用户组或gid
    debug #haproxy 调试级别,建议只在开启单进程的时候调试
    spread-checks 3 # 健康检查间隔时间
    quiet # 安静模式,启动时无输出
    stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin # 开启socket支持
    stats timeout 2m
    1.5.2 default 默认配置

    如果frontend backend listen段未设置,则默认使用defaults段的设置

    defaults
    log global
    mode http #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
    option httplog #日志类别,采用httplog
    option dontlognull #不记录健康检查日志信息
    retries 2 #两次连接失败就认为是服务器不可用,也可以通过后面设置
    option forwardfor #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip
    option httpclose #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现
    #option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器,以后将不支持
    option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
    maxconn 4096 #默认的最大连接数
    timeout connect 5000ms #连接超时
    timeout client 30000ms #客户端超时 (根据客户的习惯,一般设置在20-30s之间)
    timeout server 30000ms #服务器超时 (后端服务器的超时之和不要大于客户访问的超时时间)
    #timeout check 2000 #心跳检测超时
    #timeout http-keep-alive10s #默认持久连接超时时间
    #timeout http-request 10s #默认http请求超时时间
    #timeoutqueue 1m #默认队列超时时间
    balance roundrobin #设置默认负载均衡方式,轮询方式
    #balance source # 设置默认负载均衡方式,类似于nginx的ip_hash
    #balnace leastconn #设置默认负载均衡方式,最小连接数

    1.5.3 listen 统计页面

    listen admin_stats #设置Frontend和Backend的组合体,监控组的名称,按需要自定义名称
    bind 0.0.0.0:1080 # 监控网卡地址 0.0.0.0或* 代表监控所有
    mode http #http的7层模式
    option httplog #采用http日志格式
    option forwardfor #记录客户端真实IP
    cookie SERVERID insert indirect
    timeout server 15s
    timeout connect 15s
    #log 127.0.0.1 local0 err #错误日志记录
    maxconn 10 #默认的最大连接数
    stats enable # 开启状态
    stats refresh 30s #统计页面自动刷新时间
    stats uri /stats #统计页面url
    stats realm XingCloud Haproxy #统计页面密码框上提示文本
    stats auth admin:admin #设置监控页面的用户和密码:admin,可以设置多个用户名
    stats auth Frank:Frank #设置监控页面的用户和密码:Frank
    stats hide-version #隐藏统计页面上HAProxy的版本信息
    stats admin if TRUE #设置手工启动/禁用,后端服务器(haproxy-1.4.9以后版本)
    balance roundrobin # 负载均衡策略
    server web01 192.168.137.101:80 check port 2000 fall 3
    server web02 192.168.137.102:80 check port 2000 fall 3

    ########设置haproxy 错误页面#####

    errorfile 403 /home/haproxy/haproxy/errorfiles/403.http
    errorfile 500 /home/haproxy/haproxy/errorfiles/500.http
    errorfile 502 /home/haproxy/haproxy/errorfiles/502.http
    errorfile 503 /home/haproxy/haproxy/errorfiles/503.http
    errorfile 504 /home/haproxy/haproxy/errorfiles/504.http

    1.5.4 frontend 前端配置

    bind 10.204.3.250:80 #VIP
    #这里建议使用bind *:80的方式,要不然做集群高可用的时候有问题,vip切换到其他机器就不能访问了。
    acl web hdr(host) -i www.abc.com
    #acl后面是规则名称,-i是要访问的域名,
    acl img hdr(host) -i img.abc.com

    1.5.5 backend 后端配置

    backend www.abc.com # webserver作用域 可以使用域名的方式 www.a.com
    mode http
    balance roundrobin # #负载均衡算法 banlance roundrobin 轮询,
    balance source 保存session值,支持static-rr,leastconn,first,uri等参数

    【注意】 ACL 名称可以重复定义
    1.10.1 基于ACL其于URI的跳转

    acl web_a hdr(host) –i www.baidu.com
    acl web_b hdr(host) –i map.baidu.com
    use_backend www if web_a
    use_backend map if web_b
    default_backend www

    【实例讲解】

    1. 当用户输入的域名是www.baidu.com时,就跳转到后端地址池中的名为www的池定义的服务器
    2. 当用户输入的域名是map.baidu.com时,就跳转到后端地址池中的名为map的池定义的服务器
    3. 当用户输入的域名没有匹配到上面的acl,就默认走www的池

    1.10.2 基于acl实现URI地址目录的跳转
    函数: path.beg 匹配跟径开头

    acl img path.beg /images/
    acl php path.beg /php/
    use_backend nginx_img if img
    use_backend nginx_php if php
    default_backend nginx_php

    backend nginx_img

        mode http
        balance roundrobin  
        server  server2 10.204.3.23:80 check port 80 inter 5000 fall 5

    backend nginx_php

        mode http
        balance roundrobin  
        server  server2 10.204.3.24:80 check port 80 inter 5000 fall 5

    【实例讲解】
    当用户输入的路径是/images/时,就跳转到后端nginx_img池中定义的服务器
    当用户输入的路径是/php/时,就跳转到后端nginx_php池中定义的服务器
    当用户输入的不包含上面路径时,默认走nginx_php

    配置haproxy代理访问
    ##在haproxy.cfg中添加如下段配置;cas有多个节点时,backend下配置多行server:
            default_backend root
     
    backend root
            mode http
            option forwardfor
            option httpchk GET /
            balance source
            server wget 10.10.110.101:8080 check inter 10s
            server wget 10.10.110.102:8080 check inter 10s

    server这个关键字用来定义多个后端真实服务器

    使用格式为:

    server <name> <address>[:port] [param*]

    其中,每个参数含义如下:

    <name>为后端真实服务器指定一个内部名称,随便定义一个即可。

    <address>后端真实服务器的IP 地址或主机名。

    <port>指定连接请求发往真实服务器时的目标端口。在未设定时,将使用客户端请求时的同一端口。

    [param*]为后端服务器设定的一系参数,可用参数非常多,这里仅介绍常用的一些参数:

    check表示启用对此后端服务器执行健康状态检查。

    inter设置健康状态检查的时间间隔,单位为毫秒。

    rise设置从故障状态转换至正常状态需要成功检查的次数,例如。“rise 2”表示2 次检查正确就认为此服务器可用。

    fall设置后端服务器从正常状态转换为不可用状态需要检查的次数,例如,“fall 3”表示3 次检查失败就认为此服务器不可用。

    cookie为指定的后端服务器设定cookie 值,此处指定的值将在请求入站时被检查,第一次为此值挑选的后端服务器将在后续的请求中一直被选中,其目的在于实现持久连接的功能。上面的“cookie server1”表示web1 的serverid 为server1。同理,“cookie server2”表示web2 的serverid 为server2。

    weight设置后端真实服务器的权重,默认为1,最大值为256。设置为0 表示不参与负载均衡。

    backup设置后端真实服务器的备份服务器,仅仅在后端所有真实服务器均不可用的情况下才启用。

    cookie表示允许向cookie 插入SESSION_COOKIE,每台服务器的SERVERID 可在下面的server 关键字中使用cookie 关键字定义。

    option httpchk此选项表示启用HTTP 的服务状态检测功能。HAProxy 作为一款专业的负载均衡器,它支持对backend 部分指定的后端服务节点的健康检查,以保证在后端backend 中某个节点不能服务时,把从frotend 端进来的客户端请求分配至backend 中其他健康节点上,从而保证整体服务的可用性。

      “optionhttpchk”的用法如下:

      option httpchk <method> <uri> <version>

        其中,各个参数的含义如下:

        method表示HTTP 请求的方式,常用的有OPTIONS、GET、HEAD 几种方式。一般的健康检查可以采用HEAD 方式进行,而不是才采用GET 方式,这是因为HEAD 方式没有数据返回,仅检查Response 的HEAD 是不是200 状态。因此相对与GET 来说,HEAD 方式更快,更简单。

        uri表示要检测的URL 地址,通过执行此URL,可以获取后端服务器的运行状态。在正常情况下将返回状态码200,返回其他状态码均为异常状态。

        version指定心跳检测时的HTTP 的版本号。

  • 相关阅读:
    vs报错“以下文件中的行尾不一致,是否将行尾标准化”
    redis配置
    C#中保留两位小数但不四舍五入的最优做法
    jMeter 监控cpu、内存
    project 2010 使用技巧
    JMeter2.13 连接 sql server
    JMeter2.13进行压力测试
    freefilesync 7 使用
    cmd中无法运行svn命令
    MongoDB 3 + Windows 7 X64安装及配置
  • 原文地址:https://www.cnblogs.com/xiaofeng666/p/11161641.html
Copyright © 2011-2022 走看看