HAProxy的特点是:
1、支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机;
2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作
3、支持url检测后端的服务器出问题的检测会有很好的帮助。
4、更多的负载均衡策略比如:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)已经实现
5、单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度。
6、HAProxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。
9、支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、source(原地址保持)、RI(请求URL)、rdp-cookie(根据cookie)
10、不能做Web服务器即Cache。

源码方式安装Haproxy

#tar xzvf haproxy-1.4..tar.gz
#cd haproxy-1.4.
#make TARGET=linux26
#make install

测试配置文件如下

 global
log 127.0.0.1 local0
# log 127.0.0.1 local1
maxconn
ulimit-n
uid
gid
# chroot /tmp
# nbproc
# daemon
# debug
# quiet listen proxy1 192.168.207.128:
mode http
# source 127.0.0.2:
# log 127.0.0.1 local0
# log 127.0.0.1 local1
log global
#mode tcp
cookie SERVERID insert indirect
balance roundrobin
#dispatch 127.0.0.1:
#dispatch 127.0.0.1:
#dispatch 127.0.0.1:
#dispatch 127.0.0.1:
option httpchk
# server test 127.0.0.1: cookie cookie1 check inter
# server web02 192.168.0.104: cookie cookie2 check inter
server web01 127.0.0.1: cookie cookie1 check inter fall weight #定义的多个后端
server web02 192.168.0.104: cookie cookie2 check inter fall weight #定义的多个后端 # server nc 127.0.0.1: cookie cookie1 check inter
# server tuxlocal0 10.101.23.9: cookie cookie1 check
# server tuxlocal1 127.0.0.1: cookie cookie1 check
# server tuxlocal2 127.0.0.1: cookie cookie2 check
# server tuxlocal3 127.0.0.1: cookie cookie3 check
# server tuxlocal4 127.0.0.1: cookie cookie4 check
# server vax 10.101.14.1: cookie cookie1 check
#server tuxceleron 10.101.0.1: cookie cookie2 check
#server telnet 127.0.0.1:
#server ssh 127.0.0.1:
#server local 127.0.0.1: cookie cookie3 check
#server ko 127.0.0.1: cookie cookie3 check
#server local 127.0.0.1: cookie cookie3 check
#server local 127.0.0.1:
#server celeron 10.101.0.1: cookie srv1
#server celeron 10.101.0.1:
#server local 10.101.23.9:
contimeout
clitimeout
srvtimeout
maxconn
option redispatch
retries
grace
#rsprep ^Server.* Server:\ IIS
#rspdel ^Server.*
#rspadd Set-Cookie:\ mycookie=;\ path=/
#rsprep ^(Date:\ )([^,]*)(,\ )(.*) LaDate\ est:\ \\ (\)
# force connection:close
#reqidel ^Connection:
#rspidel ^Connection:
#reqadd Connection:\ close
#rspadd Connection:\ close
# processing options
#option keepalive
option forwardfor
option httplog
option dontlognull
# reqirep ^(Test:\ ) \0_toto_\1_toto
# reqidel ^X-Forwarded-for:
# reqirep ^(GET|POST)\ .* \
# reqirep ^(Host:|Connection:|User-agent:|Cookie:)\ .* \
# reqideny ^ listen proxy2 0.0.0.0:
mode http
#mode tcp
dispatch 127.0.0.1:
#dispatch 127.0.0.1:
#dispatch 127.0.0.1:
#dispatch 127.0.0.1:
#server tuxlocal 127.0.0.1: cookie cookie1 check
#server tuxceleron 10.101.0.1: cookie cookie2 check
#server telnet 127.0.0.1:
#server ssh 127.0.0.1:
#server local 127.0.0.1: cookie cookie3 check
#server local 127.0.0.1:
#server celeron 10.101.0.1: cookie srv1
#server celeron 10.101.0.1:
#server local 10.101.23.9:
contimeout
clitimeout
srvtimeout
maxconn
option redispatch
retries
grace
#rsprep ^Server.* Server:\ IIS
#rspdel ^Server.*
rspadd Set-Cookie:\ SERVERID=;\ path=/
#rsprep ^(Date:\ )([^,]*)(,\ )(.*) LaDate\ est:\ \\ (\) listen proxy3 0.0.0.0:
disabled
mode http
cookie SERVERID insert indirect
#dispatch 127.0.0.1:
server srv1 127.0.0.1:
#server srv2 192.168.12.3:
contimeout
clitimeout
srvtimeout
maxconn
option redispatch
retries
grace
rspdel ^Via:.*
monitor-net 192.168.12.252/ listen proxy4 0.0.0.0:
disabled
mode http
transparent
# dispatch 127.0.0.1:
contimeout
clitimeout
srvtimeout
maxconn
retries
grace # log 10.101.11.1 local1
# log 10.101.11.1 local2 # cliexp ^(.*ASPSESSIONID.*=)(.*) \1FENICGGCBECLFFEEOAEAIFGF
# cliexp ^(GET.*)(.free.fr)(.*) \.online.fr\
# cliexp ^(POST.*)(.free.fr)(.*) \.online.fr\
# cliexp ^Proxy-Connection:.* Proxy-Connection:\ close
# srvexp ^(Location:\ )([^:]*://[^/]*)(.*) \1\3 listen health 0.0.0.0:
mode health
clitimeout
srvtimeout
maxconn
grace listen health2 0.0.0.0:
mode health
option httpchk
clitimeout
srvtimeout
maxconn
grace

Haproxy配置

运行一下命令启动Haproxy

[wilson@localhost sbin]$ ./haproxy -f /usr/local/haproxy/examples.cfg

启动效果如下

server web01 127.0.0.180 check inter 2000 fall 3 weight 30 #定义的多个后端
server web02 192.168.0.104:80 check inter 2000 fall 3 weight 30 #定义的多个后端

配置的第一个80端口为centos本机的Apache 服务器,第二个为其他windowsPC上的 iis7,用IE和火狐打开可以看到请求被转发到不同的web服务器,效果如下

Haproxy session保持

、session知识
Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一 SessionID提交到服务器端,来存取Session数据。
服务器也通过URL重写的方式来传递SessionID的值,因此不是完全依赖Cookie。如果客户端Cookie禁用,则服务器可以自动通过重写URL的方式来保存Session的值,并且这个过程对程序员透明。
在后端应用服务器上php.ini 里几个session相关值的,可以进行简单设置
session.use_cookies = #表示 服务端和客户端交互session是通过cookie的方式 默认值
session.name = LXSYM #默认值是PHPSESSID 可以自行定义。比如LXSYM
session.cache_limiter = nocache #此设置确保对每个请求,在可能提供缓存的版本前,先请求发送到最初的服务器。
针对session数据推荐使用共享存储,实现方法很多。比如存于多个memcached中,具体会写博文说明,敬请关注~
、实现haproxy与客户端session一致的方法有:
2.1 用户IP 识别
haroxy 将用户IP经过hash计算后 指定到固定的真实服务器上。
配置指令 balance source (如: balance uri len )
2.2 cookie 识别
haproxy 将WEB服务端发送给客户端的cookie中插入(或添加前缀)haproxy定义的后端的服务器COOKIE ID。
配置指令例举 cookie SESSION_COOKIE insert indirect nocache
可以使用firebug可以观察到用户的请求头的cookie信息
2.3 session 识别
haproxy 将后端服务器产生的session和后端服务器标识存在haproxy中的一张表里。客户端请求时先查询这张表。
配置指令例举 appsession LXSYM len timeout 5h request-learn
注意LXSYM这个值替换成 你的php.ini 里session.name的值。

参考:

http://blog.csdn.net/tantexian/article/details/50056199

http://www.cnblogs.com/kgdxpr/p/3272861.html

centos之Haproxy 负载均衡学习笔记的更多相关文章

  1. Web负载均衡学习笔记之实现负载均衡的几种实现方式

    0x00 概要 负载均衡(Load Balance)是集群技术(Cluster)的一种应用.负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力.目前最常见的负载均衡应用是Web负载均衡.根 ...

  2. Web负载均衡学习笔记之四层和七层负载均衡的区别

    0x00 简介 简单理解四层和七层负载均衡: ① 所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. ...

  3. nginx官方文档 之 http负载均衡 学习笔记

    一.负载均衡 算法 大致可以分两类: (1)不能保证用户的每一次请求都通过负载均衡到达同一服务器. (2)可保证用户的每一次请求都通过负载均衡到达同一服务器. 第二类的应用场景: 1.如果服务器有缓存 ...

  4. 【官方文档】Nginx负载均衡学习笔记(三) TCP和UDP负载平衡官方参考文档

    本章介绍如何使用NGINX Plus和NGINX开放源代理和负载平衡TCP和UDP流量. 目录 介绍 先决条件 配置反向代理 配置TCP或UDP负载平衡被动健康监控 选择负载平衡方法 配置会话持久性 ...

  5. 【官方文档】Nginx负载均衡学习笔记(二)负载均衡基本概念介绍

    简介 负载均衡(Server Load Balancer)是将访问流量根据转发策略分发到后端多台 ECS 的流量分发控制服务.负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应 ...

  6. 【精选】Nginx负载均衡学习笔记(一)实现HTTP负载均衡和TCP负载均衡(官方和OpenResty两种负载配置)

    说明:很简单一个在HTTP模块中,而另外一个和HTTP 是并列的Stream模块(Nginx 1.9.0 支持) 一.两个模块的最简单配置如下 1.HTTP负载均衡: http { include m ...

  7. Web负载均衡学习笔记之K8S内Ngnix微服务服务超时问题

    0x00 概述 本文是从K8S内微服务的角度讨论Nginx超时的问题 0x01 问题 在K8S内部署微服务后,发现部分微服务链接超时,Connection Time Out. 最近碰到了一个 Ngin ...

  8. 烂泥:高负载均衡学习haproxy之安装与配置

    本文由秀依林枫提供友情赞助,首发于烂泥行天下 有关高负载均衡的软件,目前使用比较多的是haproxy.nginx和lvs.下面我们就开始学习haprxoy这款软件. 一.haproxy介绍 以下开始介 ...

  9. Nginx/LVS/HAProxy负载均衡软件的优缺点

    一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术.具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了:如果机器不少,可以用D ...

随机推荐

  1. Oracle权限管理详解

    Oracle权限管理详解 转载--CzmMiao的博客生活 Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级. ...

  2. html基本标签结构

    简单的html5的基本架构 HTML全称为HyperText Markup Language,一款写给浏览器的语言. HyperText:超文本(文本,图片,视频,音频,链接) Markup Lanu ...

  3. 编辑一个.bat文件来启动一个.erl的程序?

    新建文本输入:"D:\DY\erl\erl5.10.2\bin\erl.exe" -noshell -s convert get_request   保存为xx.bat.. 解释: ...

  4. POJ 2828 线段树(想法)

    Buy Tickets Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 15422   Accepted: 7684 Desc ...

  5. Gym 100960G (set+树状数组)

    Problem Youngling Tournament 题目大意 给一个序列a[i],每次操作可以更改一个数,每次询问 将序列排序后有多少个数a[i]>=sum[i-1]. n<=10^ ...

  6. Python UDP broadcast PermissionError: [Errno 13] Permission denied

    /********************************************************************** * Python UDP broadcast Permi ...

  7. webdriver如何定位多层iframe中元素

    在 web 应用中经常会出现 iframe 嵌套的应用,假设页面上有 A.B 两个 iframe,其中 B 在 A 内,那么定位 B 中的内容则需要先到 A,然后再到 B. iframe 中实际上是嵌 ...

  8. [20150925]Linux之文件系统与SHELL

    Linux之文件系统与SHELL 文件系统介绍 ext2/ext3/ext4 Ext2是GNU/Linux系统中标准的文件系统.这是Linux中使用最多的一种文件系统,它是专门为Linux设计的,拥有 ...

  9. position置顶或某固定位置 兼容ie6ie7

    用absolute来模拟fixed效果: /*相当于正常的position:fixed;top:0 */.sl_fixed_top{bottom:auto;top:0;_bottom:auto;_to ...

  10. 第二周PSP

    PSP: C(分类) C(内容) S(开始时间) ST(结束时间) I(打断时间) △(净工作时间)(分钟) 读书 构建之法 18:00 19:25 0 85 读书 构建之法 9:30 11:20 1 ...