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
haproxy教程的更多相关文章
- HAProxy教程收集
市面上HA的教程不是很多,基本都是基于LVS+HA实践的打包资料. 要最权威的文档应该去官方. 官方文档入口: http://www.haproxy.org/#docs 中文文档收集: http:// ...
- [记录]HAproxy负载均衡配置教程
HAproxy负载均衡配置教程 一.简介 haproxy是一个开源的高性能负载均衡软件:支持双机热备.虚拟主机和图形化的管理界面,自带强大的对RS健康检查功能:支持TCP(四层).HTTP(七层)应用 ...
- mesos,marathon,haproxy on centos7 最完美安装教程
前言 本教程参考 http://blog.51cto.com/11863547/1903532 http://blog.51cto.com/11863547/1903532 官方文档等... 系统:c ...
- Haproxy状态监控配置教程
https://www.cnblogs.com/tianciliangen/p/7985881.html 方法一:在defaults段增加如下配置: stats refresh 30s #统计页面自动 ...
- haproxy参数
https://blog.csdn.net/chengfei112233/article/details/78983026 https://www.cnblogs.com/dkblog/archive ...
- Spring Cloud入门教程(二):客户端负载均衡(Ribbon)
对于大型应用系统负载均衡(LB:Load Balancing)是首要被解决一个问题.在微服务之前LB方案主要是集中式负载均衡方案,在服务消费者和服务提供者之间又一个独立的LB,LB通常是专门的硬件,如 ...
- HAproxy的安装配置及动静分离
/////////////////////////////目录//////////////////////////////////////////一.安装HAproxy二.编写HAproxy启动脚本三 ...
- RabbitMQ集群安装配置+HAproxy+Keepalived高可用
RabbitMQ集群安装配置+HAproxy+Keepalived高可用 转自:https://www.linuxidc.com/Linux/2016-10/136492.htm rabbitmq 集 ...
- 多puppetmaster,多ca,keepalived+haproxy(nginx)puppet集群搭建
多puppetmaster,多ca,keepalived+haproxy(nginx)puppet集群搭建 一.服务器详情 192.168.122.111 pm01.jq.com pm01 #(pup ...
随机推荐
- k8s、CI/CD、pipline介绍
参照文档: https://blog.csdn.net/qq_35299863/article/details/84329798 https://github.com/xgh2016/k8s-CICD ...
- eventfd(2) 结合 select(2) 分析
本文代码选自内核 4.17 eventfd(2) - 创建一个文件描述符用于事件通知. 使用 源码分析 参考 #include <sys/eventfd.h> int eventfd(un ...
- CTF—攻防练习之SMB私钥泄露
攻击机:192.168.32.152 靶机 :192.168.32.155 打开靶机 nmap一下 我们看到了开放了 ssh,smb,mysql这些端口,还有一个大端口 对smb服务我们可以1.使用空 ...
- python学习之数据类型(tuple)
3.6 元组 v = (11,22,33,'asd','汉字') 元组就是不可变的列表,又叫制度列表,属性特征与字符串相似,里边可以存放任何类型的元素. 1.元组的元素 这里元组的不可变的意思是⼦元素 ...
- USACO3.3 A Game【区间dp】
这道题也是一道非常有意思的区间$dp$,和在纪中的这道题有点像:取数游戏 (除了取数规则其它好像都一样诶) 当时在纪中的时候就觉得这个$dp$非常不好想,状态定义都不是很容易想到. 但是做过一道这种题 ...
- 小程序图片预览 wx.previewImage
list: [ 'http://img5.imgtn.bdimg.com/it/u=3300305952,1328708913&fm=26&gp=0.jpg', 'http://i ...
- Linux系统中使用Nignx配置反向代理负载均衡
目录 使用nginx实现动静分离的负载均衡集群 使用nginx实现负载均衡和动静分离 使用nginx实现动静分离的负载均衡集群 Nginx官网源码包下载链接:http://nginx.org/en/d ...
- 你确定 SQL 查询都是以 SELECT 开始的?
很多 SQL 查询都是以 SELECT 开始的. 不过,最近我跟别人解释什么是窗口函数,我在网上搜索"是否可以对窗口函数返回的结果进行过滤"这个问题,得出的结论是"窗口函 ...
- BZOJ 1053 反素数 题解
题面 引理1: 1~n中的最大反质数,就是1~n中约数个数最多的数中最小的一个(因为要严格保证g(x)>g(i)): 引理2:1~n中任何数的不同因子不会超过10个,因为他们的乘积大于2,00 ...
- 06、CEL文件与灰度图像
R语言里的image方法可以绘制CEL文件的灰度图像.我们先来讨论image这个的函数: 如:x <- c(0:2) y <- c(0:2) m <- matrix(c(1,5,10 ...