首页 > 代码库 > haproxy动静分离
haproxy动静分离
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 /images /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
客户端测试 动静分离
静态资源请求发往node1 节点
静态资源请求发往node2 节点
haproxy动静分离