centos之Haproxy 负载均衡学习笔记
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 负载均衡学习笔记的更多相关文章
- Web负载均衡学习笔记之实现负载均衡的几种实现方式
0x00 概要 负载均衡(Load Balance)是集群技术(Cluster)的一种应用.负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力.目前最常见的负载均衡应用是Web负载均衡.根 ...
- Web负载均衡学习笔记之四层和七层负载均衡的区别
0x00 简介 简单理解四层和七层负载均衡: ① 所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. ...
- nginx官方文档 之 http负载均衡 学习笔记
一.负载均衡 算法 大致可以分两类: (1)不能保证用户的每一次请求都通过负载均衡到达同一服务器. (2)可保证用户的每一次请求都通过负载均衡到达同一服务器. 第二类的应用场景: 1.如果服务器有缓存 ...
- 【官方文档】Nginx负载均衡学习笔记(三) TCP和UDP负载平衡官方参考文档
本章介绍如何使用NGINX Plus和NGINX开放源代理和负载平衡TCP和UDP流量. 目录 介绍 先决条件 配置反向代理 配置TCP或UDP负载平衡被动健康监控 选择负载平衡方法 配置会话持久性 ...
- 【官方文档】Nginx负载均衡学习笔记(二)负载均衡基本概念介绍
简介 负载均衡(Server Load Balancer)是将访问流量根据转发策略分发到后端多台 ECS 的流量分发控制服务.负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应 ...
- 【精选】Nginx负载均衡学习笔记(一)实现HTTP负载均衡和TCP负载均衡(官方和OpenResty两种负载配置)
说明:很简单一个在HTTP模块中,而另外一个和HTTP 是并列的Stream模块(Nginx 1.9.0 支持) 一.两个模块的最简单配置如下 1.HTTP负载均衡: http { include m ...
- Web负载均衡学习笔记之K8S内Ngnix微服务服务超时问题
0x00 概述 本文是从K8S内微服务的角度讨论Nginx超时的问题 0x01 问题 在K8S内部署微服务后,发现部分微服务链接超时,Connection Time Out. 最近碰到了一个 Ngin ...
- 烂泥:高负载均衡学习haproxy之安装与配置
本文由秀依林枫提供友情赞助,首发于烂泥行天下 有关高负载均衡的软件,目前使用比较多的是haproxy.nginx和lvs.下面我们就开始学习haprxoy这款软件. 一.haproxy介绍 以下开始介 ...
- Nginx/LVS/HAProxy负载均衡软件的优缺点
一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术.具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了:如果机器不少,可以用D ...
随机推荐
- iOS开发UI篇—使用picker View控件完成一个简单的选餐应用
iOS开发UI篇—使用picker View控件完成一个简单的选餐应用 一.实现效果 说明:点击随机按钮,能够自动选取,下方数据自动刷新. 二.实现思路 1.picker view的有默认高度为162 ...
- MySQL与SqlServer中update操作同一个表问题
一 SqlServer中操作如下图 这个是没问题的. 二 MySQL中操作如下图 但是在MySQL中想实现这个功能如下图,但是出错了. 原来是MySQL中不支持子查询的 我们可以这样修改一下就可以实现 ...
- [vijos P1524] 最小监视代价
历时四天(本周三至本周六),本人的第一道网络流题目终于通过了…虽然这么慢才搞懂很大程度是因为脑子笨,但是还是要吐槽一下: (1)选的这道题吧居然是无向图,对于初学者我表示呵呵,昨晚到现在一直在纠结怎么 ...
- valueOf() toString() typeof instanceof
******在chrome console中运行{a:1}.valueOf(); 报错:"SyntaxError: Unexpected token . ",这是由于{}被js引擎 ...
- CodeForces 686A-Free Ice Cream
题目: 儿童排队领冰激凌,给你两个数n,x分别代表接下来有n行与初始的冰激淋数:接下来n行,每行有一个字符('+'or‘-’),还有一个整数d,+d表示新增的冰激 凌数(由搬运工搬运到此),-d表示儿 ...
- 简单并查集 -- HDU 1232 UVALA 3644 HDU 1856
并查集模板: #include<iostream> using namespace std; ],x,y; ]; //初始化 x 集合 void init(int n) { ; i< ...
- M5: 使用StorageFile
本小节介绍UWP中的文件操作,使用到了FileOpenPickerAPI(在Windows.Storage.Pickers中).本例中,单击打开文件按钮,然后在图片库中选择照片,将选择的照片用作贺卡背 ...
- LPTHW 笨办法学python 20章
本章节讲述了,函数和文件的综合操作. 分别 执行了.1.读出文件所有内容,2.把文件重置至文件开头.3.打印一行. 我在本节作了一个小小的改良,设置了一个全局变量,记录当前应该输入哪一行,如果执行过一 ...
- Spring MVC 拦截 js,css,png 等资源
springMVC的<mvc:resources mapping="***" location="***">标签是在spring3.0.4出现的,主 ...
- error :ld returned 1 exit status
额,被调用函数的名称与调用函数的名称写的不一致啊: 所以会出现 ld returned 1 exist status 好了, 问题解决了.