代理作用

  web缓存,提供缓存功能,可以加速响应过程。

  反向代理,可以隐藏后端服务器

  内容路由,可把不同内容类型的请求转发至特定服务器,

  转码器,与客户端通信,由于带宽限制,可将报文转码压缩;与后端服务器通信,一般都同个局域网内,可以不使用压缩传输。

haproxy

  只是http协议的反向代理,不提供缓存功能,但支持对TCP层以及基于TCP通信的应用做负载均衡。

  HTTP反向代理

  TCP代理

  SSL/TLS

  负载均衡调度,工作于 TCP 模式时,可对整个连接进行负载均衡调度;工作于 HTTP 模式时,可对 HTTP 请求进行调度。

URL语法

  scheme://user:password@host:port/path;params?query#frag

取模法

  即取余法,可以很好的将负载分发到各后端服务器,但如果一台后端服务器down,被除数就会减一,大部分请求的余数都会改变,那么分配结果将会大量改动。

一致性哈希

  相对于取模法,此方法还会对后端服务器进行hash计算,将hash值映射到一个0~65535值域上,当请求来到hsah计算后,将分配到第一个小于此hash值的机器上。如果其中一台机器down掉,本来应该分配到这台机器上的请求,就会自动分配至左侧机器。这样只会影响到一小部分请求。

调度算法

  动态:权重可以动态调整

  静态:调整权重不会实时生效

  roundrobin:基于权重轮询,在服务器的处理时间保持均匀分布时,这是最平衡、最公平的算法。由于其权重可以在运行时进行调整,每个后端主机最多支持4128个连接。此算法是动态的。

  static-rr:基于权重轮询,在运行时调整其服务器权重不会生效;不过,其在后端服务器连接数上没有限制;不支持慢启动,在高负荷的情况下,服务器重新上线时会立即被分配大量连接。此算法是静态的。

  leastconn:适用于长连接的会话,新的连接请求被派发至具有最少连接数目的后端服务器;在有着较长时间会话的场景中推荐使用此算法,如LDAP、SQL等,其并不太适用于较短会话的应用层协议,如HTTP;此算法是动态的。

  source:将请求的源地址进行hash计算,然后根据不同hash类型实现不同功能。

    hash-type:map-based取模法,静态;consistent一致性哈希,动态。

  uri:对URI左半部或整个URI进行hash计算,然后可将同一资源的请求发往特定的服务器,如果第一个访问某个资源,那么就根据roundrobin方式分配给一台后端服务器。根据不同hash类型实现不同功能。

  url-param:根据URL中的指定参数的值hash后进行调度,根据不同hash类型实现不同功能。

  hdr (<name>):根据请求报文中指定的header信息进行调度,把指定的header中的值hash计算。然后根据不同hash类型实现不同功能。

Linux haproxy基础的更多相关文章

  1. Linux Cluster 基础之LVS调度算法与集群类型

    Linux Cluster 基础之LVS调度算法与集群类型 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.LB Cluster 1>.什么是LB LB 集群是 load ...

  2. HAProxy详解(二):HAProxy基础配置与应用实例

    一.HAProxy基础配置与应用实例: 1.快速安装HAProxy集群软件: HAProxy的官网: https://www.haproxy.org/#down下载HAProxy的源码包. 安装: [ ...

  3. 1、代理服务器及haproxy基础

    1.web站点架构 前端一台主机提供app server,当用户请求到达时,如果要存储结构化数据,就需要找一台主机做database server.当业务达到一定程度时,要把web server.存储 ...

  4. Linux实战教学笔记06:Linux系统基础优化

    第六节 Linux系统基础优化 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 基础环境 第2章 使用网易163镜像做yum源 默认国外的yum源速度很慢,所以换成国内的. 第一步:先备份 ...

  5. Linux实战教学笔记04:Linux命令基础

    第四节:Linux命令基础 标签(空格分隔):Linux实战教学笔记 第1章 认识操作环境 root:当前登陆的用户名 @分隔符 chensiqi:主机名 -:当前路径位置 用户的提示符 1.1 Li ...

  6. Kali Linux渗透基础知识整理(四):维持访问

    Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...

  7. Kali Linux渗透基础知识整理(二)漏洞扫描

    Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网 ...

  8. 5.linux内核模块基础,内核模块学习

    linux内核模块基础 一.定义 Linux 内核的整体结构非常庞大,其包含的组件也非常多,如何使用这些组件呢: 方法 1:把所有的组件都编译进内核文件,即:zImage 或 bzImage,但这样会 ...

  9. Linux信号基础

    Linux信号基础   作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Linux进程基础一文中已经提到,Linux以进程为单位来 ...

随机推荐

  1. Java开发笔记(八十六)通过缓冲区读写文件

    前面介绍了利用文件写入器和文件读取器来读写文件,因为FileWriter与FileReader读写的数据以字符为单位,所以这种读写文件的方式被称作“字符流I/O”,其中字母I代表输入Input,字母O ...

  2. java类与对象(属性,方法)的使用

    ---恢复内容开始--- 类和对象是java编程中很重要的应该面向对象的一课,实际上可以将类看作对象的载体,它定义了对象所具有的功能.Java是面向对象的语言,因此掌握类与对象是学习Java语言的基础 ...

  3. MySQL数据库中的四种隔离级别

    事务的隔离性比想象的要复杂,在 SQL 标准中定义了四种级别的隔离级别.通常而言,较低级别的隔离通常可以执行更高的并发,系统的开销也更低 READ UNCOMMITTED 该级别为未提交读.在该级别中 ...

  4. [目录]C#学习笔记

    C#是微软.NET平台下最重要的编程语言,它与C.C++不同,C#编写的源程序是托管在.NET平台下的.C#源程序经C#编译器编译成中间语言(IL,Intermediate Language),再经C ...

  5. iOS----------适配iOS12

    library not found for -lstdc++.6.0.9 原因是苹果在XCode10和iOS12中移除了libstdc++这个库,由libc++这个库取而代之,苹果的解释是libstd ...

  6. python自定义pi函数的代码

    下边内容是关于python自定义pi函数的内容. def pi(): # Compute digits of Pi. # Algorithm due to LGLT Meertens. k, a, b ...

  7. PDF转图片工具

    点击下载( 提取码:1ll1 ) 软件功能基于mupdf,UI使用wxpython开发 功能: 支持pdf转图片,图片格式png 支持批量转换 使用: 第一步,点击按钮添加文档到列表,或直接将待转换文 ...

  8. Oracle 时间字段显示不正确,类型错误

    一.知识点 给Oracle的date类型字段设置默认值[设置为当前时间] to_date(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh ...

  9. 如何去掉(隐藏)系统的StatusBar(状态栏)

         在定制TV版本中,经常需要去掉StatusBar的需求,那么如何更好更方便的去掉StatusBar呢?         StatusBar是Android系统中重要的组成部分,可以看到一些提 ...

  10. android开发中调用python代码(带参数)

    android开发主要用到的是java代码,但是当开发涉及到一些算法时,往往用python可以提高软件的运行速度,也更加便捷,这里分享自己项目调用python代码的方式,主要有以下几个步骤(个人方法, ...