Haproxy-导学

Haproxy是一个开源的代理中间件,主要用于服务端反向代理和负载均衡,支持TCP和HTTP应用。其优点包括开源免费、高并发能力。负载均衡策略包括轮询、最小连接数和源哈希。文章介绍了Haproxy的工作原理、安装步骤及配置文件的各个部分,如global、defaults、frontend、backend和listen。
摘要由CSDN通过智能技术生成

一个开源的代理中间件,主要用来负载均衡

本文参考3W学习方法来叙述内容。

一、What

1、Haproxy是什么?

一个C语言编写的代理中间件,主要用来实现服务端反向代理、负载均衡。

负载均衡中常用的三种调度算法:

  • Round Robin:即轮询调度。根据轮询分配访问请求来实现负载均衡的效果。此算法还有一种加权轮询,即根据每个节点分配的权重轮询分配访问请求。
  • Least Connections:即最小连接数法。根据后端节点的连接数大小动态分配前端请求。每次将新的请求指派给连接数最小的后端节点。
  • Source Hashing :基于来源访问调度算法。该算法用于服务端需要保存Session会话记录的场景。可以基于来源IP、Cookie等做集群调度。该算法的好处是实现会话保持,但某些IP访问量非常大时,可能会导致负载不均衡,不分节点访问量变大,影响业务使用。

二、Why

1、Haproxy的优点

  • 开源免费,社区活跃,使用者众多。
  • 支持基于TCP(第四层)和HTTP(第七层)应用的代理,支持虚拟主机。
  • 支持很高的并发,官方文档描述haproxy可以跑满10Gbps。
  • 支持连接拒绝
  • 支持全透明代理(已具备硬件防火墙的典型特点)

三、How

1、Haproxy的工作原理

HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。

2、安装及简单使用

2.1、下载源码并解压

下载地址:

  • https://www.haproxy.org/download/2.3/src/haproxy-2.3.14.tar.gz
  • https://git.haproxy.org (所有版本都有)

tar -xvzf haproxy-2.3.14.tar.gz

2.2、make编译源码并安装

如果不自带make工具,可自行搜索安装。
windows环境下,可通过安装Cygwin来模拟类UNIX环境。
1.编译:

make TARGET=[内核] PREFIX=[安装路径]

可通过 uname -r查看内核,常见内核:

系统版本内核
Linux 2.2linux22
Linux 2.2linux22
Linux 2.6.28, 3.x, and abovelinux2628
FreeBSD 5 to 10freebsd
NetBSDnetbsd
Mac OS/Xosx
OpenBSD 5.7 and aboveopenbsd
Cygwincygwin
any other OS or versiongeneric

2.安装:

make install PREFIX=[安装路径]

2.3、创建配置文件并编写

任意路径下创建配置文件haproxy.cfg, 编写简单配置:

global #全局配置
    daemon  #以daemon方式在后台运行
    maxconn 1024  #最大支持1024个连接

defaults #默认配置
    mode http  #http模式
    timeout connect 60s   #客户端请求从haproxy到后端server最长连接等待时间(TCP连接之前),默认单位ms
    timeout server 30s    #客户端请求从haproxy到后端服务端的请求处理超时时长(TCP连接之后),默认单位ms
    timeout client 30s    #设置haproxy与客户端的最长非活动时间,默认单位ms
 
frontend http1 #前端服务http1
    bind *:8080  #监听8080端口
    default_backend servers1  #请求转发至名为"servers1"的服务集群
 
 
backend servers1 #服务集群servers1,两台机器1:1负载
    server server1 127.0.0.1:8001 weight 1  #本机8001端口的服务
    server server2 127.0.0.1:8002 weight 1  #本机8002端口的服务

2.4、启动

检查配置文件语法:

haproxy -c -f /etc/haproxy/haproxy.cfg

以配置文件启动:

haproxy -f /etc/haproxy/haproxy.cfg 

3、了解配置文件

配置文件相关的官方文档

Haproxy的配置文件可以分为5部分:

  • 全局配置:global
  • 默认(公共)配置:defaults
  • 前端服务配置:frontend
  • 后端服务配置:backend
  • frontend+backend的组合配置:listen

注意点:

  • 配置文件对缩进没有要求,但为了良好的可读性,建议缩进对齐。
  • 配置参数以键值对的方式,至少一个空格来隔开键和值。

3.1、global

该部分主要配置,进程及安全配置相关的参数、性能调整相关参数、Debug参数。

3.2、defaults

该部分的配置参数,默认会被引用到下面的frontend、backend、listen部分中。如果某些参数属于公用的配置,只需要在defaults部分添加一次即可。而如果frontend、backend、listen部分也配置了与defaults部分一样的参数,defaults部分参数对应的值自动被覆盖。

3.3、frontend

frontend是在haproxy 1.3版本以后才引入的一个组件,同时引入的还有backend组件。通过引入这些组件,在很大程度上简化了haproxy配置文件的复杂性。forntend可以根据ACL规则直接指定要使用的后端backend。

3.4、backend

用来定义后端服务集群的配置,真实服务器,一个Backend对应一个或者多个实体服务器。

3.5、listen

常用于状态页面监控,以及后端server检查,是Fronted和backend的组合体。haproxy 1.3版本之前,仅能通过listen配置前后端参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值