haproxy 负载均衡

前面说了 Nginx、LVS 负载均衡的配置,今天说说另一个软件级负载均衡器 - HAProxy。

安装haproxy

yum -y install haproxy

配置haproxy

vim /etc/haproxy/haproxy.cfg

--- haproxy.cfg ---
frontend  main *:80 # 监听端口
    default_backend     http

backend http
    balance     roundrobin # 加权轮询
    server  server1 192.168.255.103:80 check
    server  server2 192.168.255.104:80 check
--- haproxy.cfg ---

备份服务器

backend http
    ...
    server  backup  192.168.255.104:8080 backup
    ## backup服务器一般都是在主备服务器全部无法提供服务的时候,进行信息通告的,只有当全部服务器down了才会启动!
    ...

session保持

backend http
    ...
    cookie SERVERID insert nocache
    ...

haproxy状态页

listen stats
    mode http
    bind *:9999
    stats enable
    stats hide-version
    stats uri /haproxyadmin?stats
    stats realm  "hello\ proxy"
    stats auth  hapadmin:hapadmin # 认证用户:密码
    stats admin if TRUE

useradd hapadmin -s /sbin/nologin

访问http://Your_IP:9999/haproxyadmin?stats 输入用户名密码即可

动静资源分离

html js css images 等静态文件交给后端的static服务器处理
php cgi asp jsp 等动态页面交给后端的dynamic服务器处理

frontend  main *:80
    acl url_static       path_beg       -i /static /images /javascript /stylesheets /img /mp3 /mp4 /js /css
    acl url_static       path_end       -i .jpg .gif .png .css .js .html .xml
    acl url_dynamic      path_end       -i .php
    use_backend static          if url_static
    use_backend dynamic         if url_dynamic
    default_backend             static

backend static
    balance     roundrobin
    server      static  192.168.255.103:80 check

backend dynamic
    balance     roundrobin
    server      dynamic 192.168.255.104:80 check

健康状态检查

backend http
    ...
    option httpchk GET /index.html # uri检测,GET页面
    ...