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. 使用实时文件夹显示ContentProvider的数据

    所谓实时文件夹(即LiveFolder),是指用于显示ContentProvider提供的数据的桌面组件. ContentProvider用于向外提供数据访问的接口,一个应用程序可通过ContentP ...

  2. XListView理念

    package com.example.testxml1; import java.io.ByteArrayInputStream;import java.io.InputStream;import ...

  3. pod template

    Pod::Spec.new do |s| s.name = "MLAlipaySDK" s.version = "2.1" s.summary = " ...

  4. OMG点菜系统

    算是一个项目吧,自己一个人也写了很久,有很多东西是自己写的,当然也有在网上借鉴人家大神的,不一而足,代码太多,不贴了,直接上图.(一直出现的天蓝色是使用windows自带主题壁纸上截取的一段) [原本 ...

  5. SVG 2D入门10 - 滤镜

    滤镜称得上是SVG最强大的功能了,它允许你给图形(图形元素和容器元素)添加各种专业软件中才有的滤镜特效.这样你就很容易在客户端生成和修改图像了.而且滤镜并没有破坏原有文档的结构,所以维护性也很好.   ...

  6. OWL,以及XML,RDF

    Ontology来源于哲学词汇:存在论(也有翻译成本体论).RDF是一种不错的本体描述方式,我们可以定义根据对现实世界的理解针对某个领域定义词汇来描述这个领域的知识.但RDF与RDF不能定义同义词.反 ...

  7. priority_queue 优先队列用法

    //采用默认优先关系: //(priority_queue<int>que;) //Queue 0: // 91 83 72 56 47 36 22 14 10 7 3 // //采用结构 ...

  8. SQL 变量

    1.变量可以暂时储存数据 --定义变量:  declare @xxx int --变量赋值:  set @xxx=1  select @xxx=3 --变量的使用:  print @xxx 2.--全 ...

  9. url中的百分号转译

    有一次发现自己输入的url中含有中文的时候,他会转化为%XXXX的格式. 于是想怎么把他给转换回去,于是使用了urllib库 #-*-coding:utf8 -*- import urllib url ...

  10. Android 开发之拦截EditText的输入内容,定制输入内容

    1.EditText作为一个比较成熟的View,在Android的应用开发中得到极为广泛的使用.在某些特殊情况下,我们可能需要定制EditText的输入内容, 只允许指定功能的输入,例如输入一个”dd ...