zoukankan      html  css  js  c++  java
  • HAproxy的安装与配置讲解

    1,安装

     1 官网下载
     2 http://www.haproxy.org/#down
     3 cd /usr/local/src/
     4 wget http://www.haproxy.org/download/1.4/src/haproxy-1.4.27.tar.gz
     5 tar -zxvf haproxy-1.4.27.tar.gz
     6 cd haproxy-1.4.27
     7 make TARGET=linux26 PREFIX=/usr/local/haproxy
     8 make install  PREFIX=/usr/local/haproxy
     9 mkdir /usr/local/haproxy/conf
    10 cp examples/haproxy.cfg /usr/local/haproxy/conf
    11 
    12 完成

    HAproxy默认不创建配置文件目录,我们自己创建  mkdir /usr/local/haproxy/conf

    拷贝事例配置文件到我们创建的配置文件目录

    2配置文件讲解

    默认配置文件如下:

     1 # this config needs haproxy-1.1.28 or haproxy-1.2.1
     2 
     3 global
     4         log 127.0.0.1   local0
     5         log 127.0.0.1   local1 notice
     6         #log loghost    local0 info
     7         maxconn 4096
     8         chroot /usr/share/haproxy
     9         uid 99
    10         gid 99
    11         daemon
    12         #debug
    13         #quiet
    14 
    15 defaults
    16         log     global
    17         mode    http
    18         option  httplog
    19         option  dontlognull
    20         retries 3
    21         redispatch
    22         maxconn 2000
    23         contimeout      5000
    24         clitimeout      50000
    25         srvtimeout      50000
    26 
    27 listen  appli1-rewrite 0.0.0.0:10001
    28         cookie  SERVERID rewrite
    29         balance roundrobin
    30         server  app1_1 192.168.34.23:8080 cookie app1inst1 check inter 2000 rise 2 fall 5
    31         server  app1_2 192.168.34.32:8080 cookie app1inst2 check inter 2000 rise 2 fall 5
    32         server  app1_3 192.168.34.27:8080 cookie app1inst3 check inter 2000 rise 2 fall 5
    33         server  app1_4 192.168.34.42:8080 cookie app1inst4 check inter 2000 rise 2 fall 5
    34 
    35 listen  appli2-insert 0.0.0.0:10002
    36         option  httpchk
    37         balance roundrobin
    38         cookie  SERVERID insert indirect nocache
    39         server  inst1 192.168.114.56:80 cookie server01 check inter 2000 fall 3
    40         server  inst2 192.168.114.56:81 cookie server02 check inter 2000 fall 3
    41         capture cookie vgnvisitor= len 32
    42 
    43         option  httpclose               # disable keep-alive
    44         rspidel ^Set-cookie: IP=       # do not let this cookie tell our internal IP address
    45 
    46 listen  appli3-relais 0.0.0.0:10003
    47         dispatch 192.168.135.17:80
    48 
    49 listen  appli4-backup 0.0.0.0:10004
    50         option  httpchk /index.html
    51         option  persist
    52         balance roundrobin
    53         server  inst1 192.168.114.56:80 check inter 2000 fall 3
    54         server  inst2 192.168.114.56:81 check inter 2000 fall 3 backup
    55 
    56 listen  ssl-relay 0.0.0.0:8443
    57         option  ssl-hello-chk
    58         balance source
    59         server  inst1 192.168.110.56:443 check inter 2000 fall 3
    60         server  inst2 192.168.110.57:443 check inter 2000 fall 3
    61         server  back1 192.168.120.58:443 backup
    62 
    63 listen  appli5-backup 0.0.0.0:10005
    64         option  httpchk *
    65         balance roundrobin
    66         cookie  SERVERID insert indirect nocache
    67         server  inst1 192.168.114.56:80 cookie server01 check inter 2000 fall 3
    68         server  inst2 192.168.114.56:81 cookie server02 check inter 2000 fall 3
    69         server  inst3 192.168.114.57:80 backup check inter 2000 fall 3
    70         capture cookie ASPSESSION len 32
    71         srvtimeout      20000
    72 
    73         option  httpclose               # disable keep-alive
    74         option  checkcache              # block response if set-cookie & cacheable
    75 
    76         rspidel ^Set-cookie: IP=       # do not let this cookie tell our internal IP address
    77 
    78         errorloc        502     http://192.168.114.58/error502.html
    79         errorfile       503     /etc/haproxy/errors/503.http
    View Code

    HAproxy基础配置文件讲解

    HAproxy配置文件主要由五个部分组成
    1,golbal部分
    用来设定全局配置参数,属于进程级的配置,通常和操作系统有关系。
    2,default部分
    默认的参数部分
    在此部分设置的参数值,默认会自动引用到下面的frontend,backend,和listen部分中,所以某些参数属于公用配置,只需要在default部分添加一次即可。
    而如果在frontend,backend和listen部分中也配置了与default部分一样的参数,那么default部分参数对应的值会自动被覆盖
    3,frontend部分
    用于设置接收用户请求的前端虚拟节点。fronted可以根据ACL规则直接指定要使用的后端backend.
    4,backend部分
    此部分用来设置集群后端服务集群的配置,也就是来添加一组真是服务器,来处理前端用户的请求。添加的真实服务器类似与LVS中的real server节点
    5,listen部分
    此部分是frontend部分和backend部分的结合体.在HAproxy1.3版本之前,HAproxy的所有配置选项都在这个部分中来设置.为了保持兼容,HAproxy新的版本仍然保留了listen组件的配置方式
    ,目前在HAproxy中,两种配置选择其中一种即可。
    详解

    1,global部分

    global
    log 127.0.0.1 local0 info
    maxconn 4096
    chroot /usr/share/haproxy
    user nobody #可以写 uid 99 gid 99
    group nobody
    daemon
    nbproc 1
    pidfile /usr/local/haproxy/logs/haproxy.pid
    log,全局的日志配置,local0表示日志设备,info表示日志级别(err,warning,info,debug))
    上边表示使用127.0.0.1上的rysslog服务中的local0日志设备,记录日志级别为info
    maxconn:设定HAproxy进程最大的并发连接数,像这个命令(ulimit -n)
    user/group:运行HAProxy进程的用户和组
    daemon:设置HAProxy进程后台运行,推荐方式
    nbproc:设置HAProxy继承可创建的进程数此参数要求HAProxy运行模式为daemon默认只是启动一个进程,改值最好小于cpu核数
    pidfile:指定HAProxy进程的pid文件,启动进程的用户必须有访问此文件的权限

    2,default部分

    defaults
    log global
    mode http
    retries 3
    redispatch
    maxconn 2000
    timeout connect 10s
    timeout client 20s
    timeout server 30s
    timeout check 5s
    mode:设置HAProxy实例的运行模式,有tcp,http,health三个可选值
    TCP模式,此模式下客户端与服务端之间建立一个全双工连接,不会对七层报文做任何类型的检查经常用于ssl,ssh,smtp等应用
    HTTP模式,此模式下,客户端请求在转发至后端服务器之前将会被深度分析,所有不与RFC模式兼容的请求都会被拒绝
    health,基本废弃
    retries:设置连接后端服务器失败重复次数,如果超过这个值的话,HAProxy会认为后端服务器标记为不可用
    timeout connect:设置成功连接一台后端服务器最长等待时间
    timeout client:设置连接客户端发送数据时的最长等待时间
    timeout server:设置服务端回应客户端数据发送的最长等待时间
    timeout check:设置对后端服务器检测超时时间

    frontend部分

    frontend wwww

    bind *:80
    mode http
    option httplog
    option forwardfor
    option httpclose
    log global
    default_backend htmpool

    这部分通过frontend关键字定义了一个名字为'www'的前端虚拟节点.
    bind:此选项只能在frontend和listen部分进行定义,用于定义一个或者监听的套接字.格式如下
    bind [<address>:<port_range>] interface <interface>
    address可选项,其可以是主机名或ip地址,如果将其设置为'*'或'0.0.0.0'将将监听当前所有IPV4地址
    port_range可以是一个特定的tcp端口,也可以是一个端口范围.
    option httplog 启用日志记录HTTP请求
    option forwardfor 获取客户端真实ip地址
    option httpclose 客户端与服务端完成一次链接请求后,HAProxy将主动断开TCP链接
    log global 使用全局日志配置
    default_backend:默认的后端服务器池,也就是指定一组后端服务器真实地址,这些真实服务器将在backend段进行定义,htmpool就是一个后端服务器组

    backend部分配置事例如下
    backend htmpool
    mode http
    option redispatch
    option abortonclose
    balance roundrobin
    cookie SERVERID
    option httpchk GET /index.php
    server web1 10.200.34.181:80 cookie server1 weight 6 check inter 2000 rise 2 fall 3
    server web2 10.200.34.182:8080 cookie server2 weight 6 check inter 2000 rise 2 fall 3
    定义了一个名为htmpool的后端真实服务器地址
    option redispatch:此参数用于cookie保持的环境中,默认情况下,HAProxy会将其请求的后端服务器的serverid插入cookie中,以保证会话的session持久性当后端服务器出现故障的时候,就会将客户的请求强制定向到另外一台健康的后端服务器上,来保证服务正常。
    option abortonclose:此参数可以在服务器负载很高的情况下,自动结束当前队列中,处理时间比较长的连接
    balance第一负载均衡算法
    roundrobin:基于权重进行轮叫调度的算法。在服务器性能分布比较均匀时,这是一种最公平,最合理的算法
    static-rr:也是基于权重进行轮叫调度的算法,但是此算法为静态方法
    source:基于请求源ip的算法,这种方式可以使同一个客户端ip的请求始终被转发到某特定的后端服务器
    leastconn:此算法会将新的连接请求转发到具有最少连接数数目的后端服务器.在会话较长的场景中推荐使用,例如数据库负载均衡,对于http这种会话较短的不推荐使用
    uri
    uri_param
    hdr
    cookie:准许像cookie插入serverid,没太服务器的serverid可在下面的server关键字中使用cookie关键字定义
    option httpchk:启用http服务状态检测功能,语法如下
    option httpchk <method> <uri> <version>
    method表示http请求方式,常用的有OPTIONS,GET,HEAD.一般采用HEAD的方式,仅仅检查response的HEAD是不是状态码200
    uri表示检测的URL地址,返回状态码为200正常,其他异常
    server定义多台后端真时服务器地址,不能用于defaults,frontend部分
    格式: server <name> <address> [:port] [param*]
    <name>为后端服务器指定一个内部名称
    <address>后端真实服务器的IP地址或主机名
    <port>指定连接请求发往真实服务器时的目标端口
    [param*]:为后端服务器设定参数,常用的如下
    check-- 启用对后端服务器执行健康状态检查
    inter 设置健康状态检查的时间间隔,单位ms
    rise:设置从故障状态转化至正常状态需要成功检查的次数
    fall:设置后端服务器从正常状态转换为不可用状态需要检查的次数,fall 3三次检查失败就认为此服务不可用
    cookie:为指定后端服务器设定cookie值,此处指定的值将在请求入站时被检查,第一次为此值挑选的后端服务器将在后续的请求中一直被选中,其目的在于实现持久连接功能
    cookie server1表示web1的serverid为server1
    weight:设置后端服务器的权重默认为1,最大256
    backup:设置后端服务器的备份服务器仅仅在后端所有服务器都不能使用才启用

    listen部分

    listen admin_stats
    bind 0.0.0.0:9188
    mode http
    log 127.0.0.1 local0 err
    stats refresh 30s
    stats uri /haproxy-status
    status realm welcome login Haproxy
    stats auth admin:admin~!@
    stats hide-version
    stats admin if TRUE

    定义了一个名为admin_stats的实例,也就是定义了HAproxy的监控页面
    stats refresh定义了HAproxy统计页面的自动刷新的时间
    stats uri设定HAProxy监控页面的URL路径,stats uri /haproxy-status,可以通过http://IP:9188/haproxy-status查看
    stats realm设置登录HAProxy统计页面时密码框上的文本信息
    stats auth设置登录HAProxy统计页面的用户名和密码
    stats hide-version隐藏HAProxy统计页面上的版本信息
    stats admin if TRUE,可以在监控页面上手动启用或者禁止后端真实服务器,仅在1.4.9以后版本有效

  • 相关阅读:
    LeetCode Path Sum II
    LeetCode Longest Palindromic Substring
    LeetCode Populating Next Right Pointers in Each Node II
    LeetCode Best Time to Buy and Sell Stock III
    LeetCode Binary Tree Maximum Path Sum
    LeetCode Find Peak Element
    LeetCode Maximum Product Subarray
    LeetCode Intersection of Two Linked Lists
    一天一个设计模式(1)——工厂模式
    PHP迭代器 Iterator
  • 原文地址:https://www.cnblogs.com/Dicky-Zhang/p/6204628.html
Copyright © 2011-2022 走看看