HAProxy学习整理笔记

Posted 黑夜天星

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HAProxy学习整理笔记相关的知识,希望对你有一定的参考价值。

HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性负载均衡,以及基于TCPHTTP的应用程序代理
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以使每个CPU时间片(Cycle)做更多的工作。
相较与 nginx,HAProxy 更专注与反向 代理,因此它可以支持更多的选项,更精细的控制,更多 的健康状态检测机制和负载均衡算法。

1.HAProxy基础

HAProxy基础概念和原理

四层代理: 通过分析IP层及TCP/UDP层的流量实现的基于“IP+端口”的负载均衡。

七层: 可以根据内容,再配合负载均衡算法来选择后端服务器,不但可以根据 “ip+端口”方式进行负载分流,还可以根据网站的URL,访问域名,浏览 器类别,语言等决定负载均衡的策略。

七层负载均衡模式下,负载均衡与客户端及后端的服务器会分别建立一次 TCP连接,而在四层负载均衡模式下(DR),仅建立一次TCP连接;七层负载均衡对负载均衡设备的要求更高,处理能力也低于四层负载均衡。

haproxy与lvs的负载均衡很大一点不同的是,lvs仅仅是基于内核的简单调度,而haproxy则是当请求到达反向代理端时,代理端帮前端去请求相应内容

Haproxy的特性:

  • 1、可靠性与稳定性都非常出色,可与硬件级设备媲美。
  • 2、支持连接拒绝,可以用于防止DDoS攻击
  • 3、支持长连接、短连接和日志功能,可根据需要灵活配置
  • 4、路由HTTP请求到后端服务器,基于cookie作会话绑定;同时支持通过获取指定 的url来检测后端服务器的状态
  • 5、HAProxy还拥有功能强大的ACL支持,可灵活配置路由功能,实现动静分离,在架构设计与实现上带来很大方便
  • 6、可支持四层和七层负载均衡,几乎能为所有服务常见的提供负载均衡功能
  • 7、拥有功能强大的后端服务器的状态监控web页面,可以实时了解设备的运行状态 ,还可实现设备上下线等简单操作。
  • 8、支持多种负载均衡调度算法,并且也支持session保持。

HAProxy的软件架构和配置文件

Haproxy程序路径:

  • 主程序:/usr/sbin/haproxy
  • 主配置文件:/etc/haproxy/haproxy.cfg
  • Unit file:/usr/lib/systemd/system/haproxy.service(centos7)
  • Init.file :/etc/init.d/haproxy (centos6)

Haproxy配置文件结构:

Haproxy的主配置文件路径一般在/etc/haproxy/haproxy.cfg下(yum安装)

haproxy 的配置文件由两部分组成:全局设定(global settings)和对代理的设定(proxies)

global settings:主要用于定义haproxy进程管理安全及性能相关的参数

proxies共分为4段:defaults,frontend,backend,listen

proxies:代理相关的配置可以有如下几个配置端组成

  • – defaults:为其它配置段提供默认参数,默认配置参数可由下一个“defaults”重新设定。
  • – frontend:定义一系列监听的套接字,这些套接字可接受客户端请求并与之建立连接。
  • – backend:定义“后端”服务器,前端代理服务器将会把客户端的请求调度至这些服务器。
  • – listen:定义监听的套接字和后端的服务器。类似于将frontend和backend段放在一起

global #全局配置 (进程管理及安全相关的参数)

- chroot:修改haproxy的工作目录至指定的目录并在放弃权限之前执行 chroot()操作,可以提升haproxy的安全级别,

- daemon:让haproxy以守护进程的方式工作于后台,其等同于“-D”选项的功能, 当然,也可以在命令行中以“-db”选项将其禁用;

- gid:以指定的GID运行haproxy,建议使用专用于运行haproxy的GID, 以免因权限问题带来风险;

- group:同gid,不过指定的组名;

- log: [max level [min level]]:定义全局的syslog服务器,最多可以定义两个;

 
 

 

以上是关于HAProxy学习整理笔记的主要内容,如果未能解决你的问题,请参考以下文章

关于Linux下HAProxy自动化部署的一些笔记整理

Deep Learning(深度学习)学习笔记整理系列之

Deep Learning(深度学习)学习笔记整理系列五

Deep Learning(深度学习)学习笔记整理系列七

Deep Learning(深度学习)学习笔记整理系列三

Deep Learning(深度学习)学习笔记整理系列四