您的位置:首页 > 运维架构 > 反向代理

haproxy实现的web反向代理,动静分离,以及基于keepalived实现的haproxy的高可用

2014-05-02 01:26 756 查看
haproxy于Nginx一样都是做反向代理,但是与其相比,haproxy更专注于web代理。HAProxy是单进程多请求,也支持多进程,HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。 haproxy功能的实现全部基于配置文件,所以我们需要了解很多的配置指令,玩转指令,再结合实际情况,我们就玩转了haproxy,其实haproxy的配置也很简单,下面我们一起简单认识和了解一些haproxy的基本功能和相关知识。
CentOS6.5自带的rpm包的版本完全够我们使用,所以我们直接yum安装
# yum -y install haproxy
查看haproxy的配置信息在/etc/haproxy/haproxy.cfg。大致整体可分为两个部分
1:全局配置段 2:代理功能的相关配置: 在代理功能这块细分又分为四部分: 1:defaults 默认,为代理提供默认属性 2:frontend 前端,相当于Nginx的Server 3:backend 后端,相当于Nginx的upstream server 可以定义多组 4:listen 相当于一个frontend绑定一个backend 固定组合 配置解说:
(1)frontend  main *:5000
# frontend的名称监听端口
acl url_static       path_beg              -i /static /images /javascript /stylesheets
#   acl acl的名称   acl的控制标准:路径从那开始。
acl url_static       path_end              -i .jpg .gif .png .css .js
use_backend static          if url_static
# 使用那个backend           在什么情况下使用这个后端
default_backend             app
# 默认情况下使用那个backend    默认使用backend的名称
(2)backend static
# backend的名称 见名知意,这是静态服务器后端
balance     roundrobin
#  关键字    负载均衡的调度方法
server      static 127.0.0.1:4331 check
# 定义后端服务器 名称   ip地址   端口  执行健康检查
haproxy简单代理的实现: 实验环境:3台CentOS6.5的虚拟机 其中1台两个网卡172.16.20.1是内外ip.192.168.2.109是外网ip.并安装haproxy,开启路由转发功能,另外两台分别安装php ,ip分别是172.16.20.11,172.16.20.12网关指向172.16.20.1,并开启httpd服务,提供测试页面。

配置haproxy的配置文件:
frontend hapserver *:80
default_backend             webserver
backend webserver
balance    roundrobin
server  web1    172.16.20.11:80 check
server  web2    172.16.20.12:80 check
这样一个简单的轮询代理就配置好了。 下一个话题基于haproxy的动静分离: 动静分离的思想:其实就是定义几个acl的访问控制规则,定义2组backend,当Client访问的URL匹配上我们定义的静态访问规则的时候我们就调用静态的backend,当匹配到动态的规则的时候,就调用动态的backend 或者不写直接设置成默认都可以。那么看下面的配置:
frontend hapserver *:80
acl url_static       path_beg       -i /static /images /javascript /stylesheets
acl url_static       path_end       -i .jpg .gif .png .css .js

use_backend static          if url_static
default_backend             dynamic
backend dynamic
balance    roundrobin
server  web1    172.16.20.11:80 check
backend static
balance     roundrobin
server  web2    172.16.20.12:80 check
当你访问的路径是以static、images...等开始或者是.jpg...结尾的时候就调用后端服务器backend static,否则默认调用的是backend dynamic 基于keepalived实现haproxy的高可用,双主配置我在博客<<基于keepalived实现Director、ipvs、Nginx的高可用以及Nginx的双主模型>>有介绍Nginx的高可用和双主模型,配置一样,大家可以参考此文档。 haproxy的状态输出:要使用指令stats,配置信息如下
listen statspage                # 定义单独输出页面
bind  *:8888                # 绑定端口在8008
stats enable                # 启用页面输出机制
stats auth admin:haproxy    # 启用用户认证及用户名和密码
stats admin if true





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息