负载均衡服务之HAProxy基础配置(一)
前文我们聊了下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基础配置(一)的更多相关文章
- 负载均衡服务之HAProxy基础配置(二)
前文我们聊了下haproxy的global配置段中的常用参数的说明以及使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12763245.html:今天我们来 ...
- 负载均衡服务之HAProxy基础配置(三)
前文我们聊到了haproxy的代理配置段中比较常用的配置指令的用法以及说明,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12770930.html:今天我们来 ...
- 负载均衡服务之HAProxy基础配置(四)
前文我们聊了haproxy的状态页配置,状态页中显示各参数的含义,以及基于cookie做会话保持的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12776 ...
- 负载均衡服务之HAProxy基础配置(五)
前文我们聊了下haproxy的修改报文首部的配置.压缩功能以及haproxy基于http协议自定义健康状态检测机制:回顾请参考https://www.cnblogs.com/qiuhom-1874/p ...
- 负载均衡服务之HAProxy基础入门
首先我们来了解下haproxy是干嘛的?haproxy是一个法国人名叫Willy Tarreau开发的一个开源软件:这款软件主要用于解决客户端10000以上的同时连接的高性能的TCP和HTTP负载均衡 ...
- 负载均衡服务之HAProxy https配置、四层负载均衡以及访问控制
前文我们聊了下haproxy的访问控制ACL的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12817773.html:今天我们来聊一聊haproxy的h ...
- 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.安装软件 ...
- 负载均衡服务之HAProxy访问控制ACL
前文我们聊到了haproxy的错误页的配置,自定义日志的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12797913.html:今天我们主要来看看hap ...
- HAProxy详解(二):HAProxy基础配置与应用实例
一.HAProxy基础配置与应用实例: 1.快速安装HAProxy集群软件: HAProxy的官网: https://www.haproxy.org/#down下载HAProxy的源码包. 安装: [ ...
随机推荐
- python逐行读取文本
一.使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. 二.需要导入import os 三.下面是逐行读取文件内容的三种方法: ...
- Tensorboard 详解(上篇)
花间提壶华小厨 1. Tensorboard简介 对大部分人而言,深度神经网络就像一个黑盒子,其内部的组织.结构.以及其训练过程很难理清楚,这给深度神经网络原理的理解和工程化带来了很大的挑战.为了解决 ...
- nginx使用手册+基本原理+优缺点
一.nginx优点 1.反向代理 1.正向代理: 客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原 ...
- Centos 8 安装 Consul-Template
1. 下载安装包( consul-template_0.23.0_linux_amd64.zip 文件 ) 下载地址: https://releases.hashicorp.com/consul-te ...
- [vijos1234]口袋的天空<最小生成树>
题目链接:https://vijos.org/p/1234 白天刚刚写完prim的算法,晚上就心血来潮的打了一道最小生成树的题 虽然有题解说可以用prim做,但是这道题明显是加最小的边,感觉krusk ...
- JS 剑指Offer(五) 二叉树的重建
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 题目分析:已知二叉树的前序和中序遍历,根据前序遍历和中序遍历的规则,前序遍历的第一 ...
- CSS3+CSS+HTML实现网页
效果图: 代码实现: 样式部分style.css: *{ margin:; padding:; } body{ background-color: #673929; font-size: 16px; ...
- 个人项目:WordCount (Java)
一.Github项目地址 https://github.com/misterchaos/WordCount 二.解题思路 2.1 基本需求分析 经过仔细阅读题目,分析得出项目的基本需求如下: wc.e ...
- Redis系列(四):Redis的复制机制(主从复制)
本篇博客是Redis系列的第4篇,主要讲解下Redis的主从复制机制. 本系列的前3篇可以点击以下链接查看: Redis系列(一):Redis简介及环境安装 Redis系列(二):Redis的5种数据 ...
- js中的位置属性
原生js中位置信息 clientLeft,clientTop:表示内容区域的左上角相对于整个元素左上角的位置(包括边框),实测,clientLeft=左侧边框的宽度,clientTop=顶部边框的宽度 ...