前文我们聊了下haproxy的基础安装,以及怎样去代理后端主机的配置;当然没有很详细的去说配置文件中各指令的意思;有关haproxy的安装和代理后端server可以参考本人博客https://www.cnblogs.com/qiuhom-1874/p/12741018.html;今天我们主要来说一下haproxy global配置段常用配置指令的用法和说明;

  前边我们大概说了一下haproxy的配置文件大概可以分两段;第一段配置是global配置段即全局配置段,主要是针对haproxy的进程和安全相关的配置;第二段是proxies代理配置段,主要是配置haproxy前端监听那个地址那个端口以及后端server的名称、地址、端口,以及server相关属性等配置;而proxies配置段里又分defaults配置段,这个部分主要是定义后续的backend,listen这两个段的默认配置;什么意思呢?也就是在后面的配置中如果我们没有写对应参数,它默认会继承defaults里的配置;如果说后面的配置中和前边的defaults中的配置重复了,那么就以后面的配置生效,也就是说后面的配置段优先级高于defaults里的配置;了解了haproxy的配置文件结构,接下来我们来看看haproxy的global配置段常用指令;

  提示:以上是haproxy1.5.18yum安装里默认提供的global配置段;其中log是用来指定日志的,这里要说一下haproxy的日志,它和nginx的日志不太一样;nginx的日志是我们用access_log 指令来指定日志文件和调用日志格式的名称,意思就是把日志以增量的方式往指定的日志文件中写;而haproxy的日志不是自己记录日志,而是通过把日志发送给rsyslog服务器上的一个facility上,然后通过rsyslog的配置把指定facility上的日志记录到某个文件中或者数据中;以上配置段意思就是把haproxy的日志发送给本机的rsyslog上的local2 记录所有级别类型的日志;其实我们不用配置rsyslog,默认会把日志记录到/var/log/messages这个文件中,这是因为rsyslog中明确定义了所有facility上的info级别以及info级别以上的日志都记录到/var/log/messages中;有关rsyslog的配置说明可以参考本人博客https://www.cnblogs.com/qiuhom-1874/p/12091118.html;接下来我们来配置下,让haproxy的日志记录到/var/log/haproxy.log这个文件中去;

  提示:在rsyslog的配置文件中明确要使用local2这个facility上的任何级别的日志都交给/var/log/haproxy.log记录;这样只是把接收日志的方式定义好了;通常如果rsyslog作为日志服务器接收非本机的其他主机日志,我们还要让rsyslog监听在udp或者tcp的514端口上(当然这个端口也可以自己指定,通常不用更改),为其他主机提供服务;所以我们除了要定义把某个facility上的所有级别的日志(当然也可以指定某些级别的日志,这个要看你想要收集那一类的日志)记录到某个文件中外,我们还要把udp或tcp的514端口打开;

  提示:以上配置就是导入imudp模块,然后让rsyslog监听在udp的514端口;这样配置后我们就可以保存rsyslog的配置文件,然后重启rsyslog,我们就可以把haproxy的日志记录到/var/log/haproxy.log中去了;

  提示:可以看到我们访问haproxy,其中的访问日志就记录到我们定义的/var/log/haproxy.log中去了;

  chroot:该指令主要作用同vsftpd里面的chroot类似,禁锢运行目录的;一般这个参数主要是防止haproxy被恶意程序攻击后对操作系统上的其他路径资源的破环;也就是说即便haproxy被恶意程序攻破,最多只能破环我们指定的chroot目录,而非整个系统目录结构;通常情况下haproxy不会出现这种情况,为了安全我们还是配置上这个参数;如果haproxy是我们手动编译安装的,通常我们会把这个参数的值设置成很haproxy的程序编译安装时指定的目录;yum安装的基本上都是/var/lib/haproxy;一般都不会去更改它;

  pidfile:该指令是指定pid文件的,通常情况下需要和unit file里指定的pid文件是同一个文件;不是同一个文件的话可能会遇到无法reload的情况;

  maxconn:该指令指定haproxy的单个进程最大并发连接数;

  user/group:前者用来指定运行haproxy进程的用户(属主),后者是用来指定运行进程的用户属组

  uid/gid:前者用来指定运行haproxy工作进程的用户id,后者是指定组id;以上两种方式都是来指定运行haproxy进程的用户身份;默认情况是用的id为99的用户(nobody用户)

  deamon:此指令表示haproxy以守护进程运行;

  stats socket:指定unix socket文件路径;主要用于本机交互的方式管理haproxy;

  以上是haproxy1.5.18配置文件中global段配置选项的说明;在haproxy1.8.0以后的版本中,haproxy支持多进程多线程的方式,而1.5不支持多线程,支持多进程,但是在1.5上启用多进程的方式是串行的,意思就是它不是一个主进程下生成多个子进程,而是一个进程下生成一个进程,然后子进程下在生成子进程的方式;所以如果要使用多进程的方式,建议还是使用1.8以后的版本;

  haproxy配置多进程

  nbproc:该指令是用于指定haproxy的进程数 ,通常情况下建议同cup核心数一样即可;

  cpu-map:该指令用于绑定haproxy对应cup核心;有点类似nginx里的worker_cpu_affinity参数的意义;

  提示:以上配置表示指定haproxy的进程数为4个,第一个进程绑定到0号核心上,第二个进程绑定到1号核心上,依次类推;如下

  提示:以上是haproxy1.8.20上配置使用多进程,启动进程情况,我们可以看到haproxy进程的父进程都是5945;

  在1.5.18上使用多进程

  提示:以同样的配置在haproxy1.5.18上,启动的多进程就不一样,在1.5.18上多了一个haproxy-systemd这个进程,并且haproxy进程都是它的子进程,而我们用nbproc指定的进程数是指定haproxy-systemd下的haproxy的子进程数;而1.8.20nbproc指定的是haproxy的子进程数量,没有haproxy-systemd,又或者我们可以理解为1.8.20把1.5.18上的haproxy-systemd和haproxy进程合并成一个进程haproxy;通常情况下haproxy单进程也是足够用了,如果是在要开多进程,建议还是使用1.8以上的版本吧;

  haproxy使用多线程

  haproxy的多线程是在1.7以后的版本才支持的,所以1.5上面不支持多线程的方式,所以我们这里的演示就用haproxy1.8.20来演示

  nbthread:指定每个haproxy进程开启的线程数;

  提示:以上配置表示启动4个进程,每个进程里启动4个线程,默认每个进程一个线程

  maxsslconn:该指令指定每个haproxy进程ssl最大连接数,通常情况下证书都不放在haproxy上,nginx上放证书更加合适;

  maxconnrate:该指令指定每个进程每秒最大连接数;

  spread-checks:该指令指定后端server状态check随机提前或延迟百分比时间;通常情况下在后端主机较多的情况下使用;官方建议2-5(20%-50%)之间;如果在后端主机较多的情况下,不使用该指令来延迟对后端主机健康状态检查,那么很有可能降低haproxy的性能,因此该指令在后端主机较多的情况下(比如1000台甚至更多)能够避免同时并发对后端主机check时对haproxy的性能影响;

以上是haproxy global配置段比较常用的配置指令说明,更多配置指令请参考https://cbonte.github.io/haproxy-dconv;

负载均衡服务之HAProxy基础配置(一)的更多相关文章

  1. 负载均衡服务之HAProxy基础配置(二)

    前文我们聊了下haproxy的global配置段中的常用参数的说明以及使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12763245.html:今天我们来 ...

  2. 负载均衡服务之HAProxy基础配置(三)

    前文我们聊到了haproxy的代理配置段中比较常用的配置指令的用法以及说明,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12770930.html:今天我们来 ...

  3. 负载均衡服务之HAProxy基础配置(四)

    前文我们聊了haproxy的状态页配置,状态页中显示各参数的含义,以及基于cookie做会话保持的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12776 ...

  4. 负载均衡服务之HAProxy基础配置(五)

    前文我们聊了下haproxy的修改报文首部的配置.压缩功能以及haproxy基于http协议自定义健康状态检测机制:回顾请参考https://www.cnblogs.com/qiuhom-1874/p ...

  5. 负载均衡服务之HAProxy基础入门

    首先我们来了解下haproxy是干嘛的?haproxy是一个法国人名叫Willy Tarreau开发的一个开源软件:这款软件主要用于解决客户端10000以上的同时连接的高性能的TCP和HTTP负载均衡 ...

  6. 负载均衡服务之HAProxy https配置、四层负载均衡以及访问控制

    前文我们聊了下haproxy的访问控制ACL的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12817773.html:今天我们来聊一聊haproxy的h ...

  7. HAProxy(三):Keeplived+HAProxy搭建高可用负载均衡动静分离架构基础配置示例

    一.安装环境 1.软件版本 HAProxy:1.5.18 Keepalived:1.3.5 Nginx:1.12.2 PHP:7.2 系统版本:CentOS 7.4 2.IP分配与架构图 3.安装软件 ...

  8. 负载均衡服务之HAProxy访问控制ACL

    前文我们聊到了haproxy的错误页的配置,自定义日志的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12797913.html:今天我们主要来看看hap ...

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

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

随机推荐

  1. 给rm命令加保险

    众所周知,脑残可以学习,但是手残没法治.相信每一位喜欢用终端操作电脑的同学都曾手误使用 rm 命令把不该删除的文件删了.然而,使用 rm 删除的文件是不会进去回收站的. 所以,最好的方法就是我们自定义 ...

  2. python之面向对象性封装,多态,以及鸭子类型

    默认类型 class A: class_name = 'python23期' def __init__(self, name, age): self.name = name self.age =age ...

  3. Go语言micro之快速搭建微服务

    背景 go-micro给我们提供了一个非常便捷的方式来快速搭建微服务,而且并不需要提前系统了解micro,下面用一个简单的示例来快速实现一个服务. 创建Proto文件 因为我们要做微服务,那么就一定有 ...

  4. class-dump的安装和使用

    安装步骤 1.下载地址:http://stevenygard.com/projects/class-dump/ 2.打开终端输入 open /usr/local/bin 3.把dmg文件中的class ...

  5. python中的可变和不可变对象 有序和无序对象

    可变对象和不可变对象的定义:对象存放在地址的值是否可以被改变 不可变对象包括:整形int.浮点型float .字符串str .元祖tuple.布尔型boole 可变对象包括 :列表list.集合set ...

  6. 2.用eclipse创建maven Web

    一.其他步骤与上一个博客相同,故不赘述,这里要记得选war→Finish 二.在项目上右键选Properties 三.搜索到Project Facets,把勾取消掉,点Apply 四.重新勾选后出现以 ...

  7. 医学图像分割-在3DSlicer中使用英伟达的AI辅助工具NvidiaAIAssistedAnnotation自动切割医学图像教程

    前期准备 下载3DSlicer并安装: 3DSlicer官网(http://www.slicer.org)或者直接下载(https://download.slicer.org),需要注意目前该插件只支 ...

  8. css 动画 transition和animation

    本文参考:http://www.ruanyifeng.com/blog/2014/02/css_transition_and_animation.html 1. transition基本用法: < ...

  9. mysql 中UNIQUE KEY 到底是约束还是索引?

    答案来自:https://zhidao.baidu.com/question/1863373387452612907.html 两者关系 unique索引包含了unique约束,因为unique约束是 ...

  10. 1017 Queueing at Bank (25 分)

    Suppose a bank has K windows open for service. There is a yellow line in front of the windows which ...