haproxy:工作在ISO 七层 根据http协议(或者工作在ISO四层 根据tcp协议) 提供web服务的负载均衡调度器

配置文件 /etc/haproxy/haproxy.cfg

配置文件两部分组成

global settings: 对haproxy进程自身属性的设定----------全局设定段

proxies: 对代理的设定 -----------------代理设定段

defaults

frontend

backend

listen

其中defaults为proxies提供默认属性,frontend接受客户端的请求,backend连接后端的上游服务器(类似于nginx的upstream),listen是特定的frontend与backend的组合

  定义一个完整的代理的方式:

  frontend

  backend

  listen

  defaults段分析

  option   httpclose:使用短连接

  option   redispath:使用cookie保持会话,如果后端的server宕机,则使用redispath 重定向另一个路径继续保持会话;

  option   http-server-close  :当keep-alive超时时,使用该选项在服务器上关闭会话  

  timeout  connect  :haproxy转发到后边upstream server 时等待的时长

  timeout  client   :客户端非活动状态的超时时长

  timeout  server   :  haproxy和后边的服务器段保持一个会话,当后台服务器down掉后,haproxy等待的超时时间

  timeout-keep-alive:定义保持连接模式的超时时长     

  timeout-check     : 建立状态检测时间的超时时间

  maxconn           :每一个server最大并发连接数

实验环境:

3台虚拟机

     haproxy双网卡:公网:172.16.17.3

               内网:192.168.17.1

上游服务器1:192.168.17.11

上游服务器2:192.168.17.12

分别配置2台上游服务器提供配置页面并测试:

给172.16.17.3安装配置haproxy

启用全局日志功能

编辑rsyslog.conf

#vim  /etc/rsyslog.conf  
  # Provides UDP syslog reception
  $ModLoad imudp
  $UDPServerRun 514
  # Provides TCP syslog reception
  $ModLoad imtcp
  $InputTCPServerRun 514


  在另一行

  local2.*           /var/log/haproxy.log

#service rsyslog restart 


# vim  /etc/haproxy/haproxy.cfg 

log         127.0.0.1 local2

# service  haproxy restart  重启服务

haproxy动静分离的实现

node2服务器安装php

yum -y install php php-mysql

提供php动态页面


                                       
配置haproxy配置文件
#vim  /etc/haproxy/haproxy.cfg  
frontend websrvs
   bind *:80
   acl url_static       path_beg       -i /static /p_w_picpaths /javascript /stylesheets
   acl url_static       path_end       -i .jpg .gif .png .css .js .html
   acl host_static      hdr_beg(host)  -i img. video. download. ftp. imags. videos.
   acl url_php          path_end       -i .php
   use_backend static          if url_static or host_static
   use_backend dynamic         if url_php
   default_backend             dynamic
        backend static
   balance     roundrobin
   server      node1 192.168.17.11:80  check maxconn 30000    
                                                 
        backend dynamic
   balance     roundrobin
   server  node2 192.168.17.12:80 check maxconn  1000
# service haproxy restart
客户端测试 动静分离

 haproxy动静分离_第1张图片静态资源请求发往node1 节点

haproxy动静分离_第2张图片静态资源请求发往node2 节点