haproxy教程
一、haproxy简介
HAProxy is a free, very fast and reliable solution offering high availability, load balancing, and proxying for TCP and HTTP-based applications. It is particularly suited for web sites crawling under very high loads while needing persistence or Layer7 processing. Supporting tens of thousands of connections is clearly realistic with todays hardware. Its mode of operation makes its integration into existing architectures very easy and riskless, while still offering the possibility not to expose fragile web servers to the Net。
摘自:http://haproxy.1wt.eu
二、haproxy集群工作流程
三、haproxy安装
# tar -xzvf haproxy-1.3.20.tar.gz
# make TARGET=linux26 PREFIX=/usr/local/haproxy install
注:TARGET后面根据本机操作系统内核版本来填写
创建配置文件目录,日志目录,并根据需求编写配置文件
# mkdir /usr/local/haproxy/{conf,logs}
# vim /usr/local/haproxy/conf/haproxy.cfg
配置haproxy的日志环境
# vim /etc/syslog.conf
添加:
local0.* /usr/local/logs/haproxy.log
local3.* /usr/local/logs/haproxy_err.log
#vim /etc/sysconfig/syslog
修改:
SYSLOGD_OPTIONS="-r -m 0"
service syslog restart
注: -r enables logging from remote machines
四、haproxy配置详解
HAProxy配置中分五大部分:
global:全局配置参数,进程级的,用来控制Haproxy启动前的一些进程及系统设置
defaults:配置一些默认的参数,可以被frontend,backend,listen段继承使用
frontend:用来匹配接收客户所请求的域名,uri等,并针对不同的匹配,做不同的请求处理
backend:定义后端服务器集群,以及对后端服务器的一些权重、队列、连接数等选项的设置,我将其理解为Nginx中的upstream块
listen:我将其理解为frontend和backend的组合体
配置一例:
global # 全局参数的设置 defaults # 默认部分的定义 listen status # 定义一个名为status的部分 frontend http_80_in # 定义一个名为http_80_in的前端部分 backend php_server #定义一个名为php_server的后端部分 backend static_server |
五、健康监测
1、通过监听端口进行健康检测
这种检测方式,haproxy只会去检查后端server的端口,并不能保证服务的真正可用。
- listen http_proxy 0.0.0.0:80
- mode http
- cookie SERVERID
- balance roundrobin
- option httpchk
- server web1 192.168.1.1:80 cookie server01 check
- server web2 192.168.1.2:80 cookie server02 check inter 500 rise 1 fall 2
2、通过URI获取进行健康检测
这种检测方式,是用过去GET后端server的的web页面,基本上可以代表后端服务的可用性。
- listen http_proxy 0.0.0.0:80
- mode http
- cookie SERVERID
- balance roundrobin
- option httpchk GET /index.html
- server web1 192.168.1.1:80 cookie server01 check
- server web2 192.168.1.2:80 cookie server02 check inter 500 rise 1 fall 2
3、通过request获取的头部信息进行匹配进行健康检测
这种检测方式,则是基于高级,精细的一些监测需求。通过对后端服务访问的头部信息进行匹配检测。
- listen http_proxy 0.0.0.0:80
- mode http
- cookie SERVERID
- balance roundrobin
- option httpchk HEAD /index.jsp HTTP/1.1\r\nHost:\ www.xxx.com
- server web1 192.168.1.1:80 cookie server01 check
- server web2 192.168.1.2:80 cookie server02 check inter 500 rise 1 fall 2
六、haproxy实现持久连接
1 调度算法source
haroxy 将用户IP经过hash计算后 指定到固定的真实服务器上(类似于nginx 的IP hash 指令)
配置指令 balance source
2 cookie 识别
haproxy 将WEB服务端发送给客户端的cookie中插入(或添加加前缀)haproxy定义的后端的服务器COOKIE ID。
配置指令例举 cookie SESSION_COOKIE insert indirect nocache
3 session 识别
haproxy 将后端服务器产生的session和后端服务器标识存在haproxy中的一张表里。客户端请求时先查询这张表。然后根据session分配后端server。
配置指令:appsession <cookie> len <length> timeout <holdtime>
七、统计页面效果图
通过客户端浏览器访问http://10.1.153.78:1080/admin?stats
转载自:https://blog.csdn.net/huithe/article/details/13971847
最新文章
- BestCoder#51
- javascript学习笔记2-typeof、Number类型、Boolean()
- 获取URL的code的参数的值
- Android FM模块学习之三 FM手动调频
- VS 控件命名规范
- [Hibernate] - mysql
- Eclipse中遇到The type XXX cannot be resolved. It is indirectly referenced from required .class files错误
- erl_0013 erlang 带参数模块 parameterized modules are no longer supported
- Java IO之File
- leetcode@ [131/132] Palindrome Partitioning &; Palindrome Partitioning II
- ios CAF音频转换为MP3
- max key length is 1000 bytes
- Mysql权限控制 - 允许用户远程连接(转载)
- CREATE DATABASE建库语句详解
- HDU 3832 Earth Hour(最短路)
- js的各种错误类型
- vb编程代码大全
- macvlan 网络结构分析 - 每天5分钟玩转 Docker 容器技术(56)
- 关于PHP7
- selenium+python,解决selenium弹出新页面,无法定位元素的问题(报错:Unable to locate element:元素)
热门文章
- three.js中物体旋转实践之房门的打开与关闭
- IK分词器的安装与使用IK分词器创建索引
- Google Home Mini配置失败解决办法
- jmeter业务建模中遇到的问题
- 【BW系列】SAP BW on HANA 迁移问题
- kettle学习资料
- 【计算机视觉】ViBe - a powerful technique for background detection and subtraction in video sequences
- Synchronized及其实现原理(一)
- poj3252(数位dp)(模板)
- springboot - 应用实践(3)springboot的核心