HAProxy的基础配置详解
HAProxy是高性能的企业级负载均衡调度器,同时支持四层TCP和七层HTTP协议的负载均衡调度,以及支持基于cookie的持久性,支持正则表达式及web状态统计、自动故障切换等优点,因此广泛被应用于企业内业务系统集群的入口作为负载均衡调度器。
HAPrpxy的配置文件haproxy.cfg由两大部分组成,分别是global和proxies部分。
global:全局配置段
1、进程及安全配置相关的参数
2、性能调整相关参数
3、Debug参数
global配置参数官方文档:https://cbonte.github.io/haproxy-dconv/2.0/intro.html
global # 全局段配置
chroot #(安全配置选项)锁定haproxy用户运行目录。
deamon #以后台守护进程运行
stats socket /var/lib/haproxy/haproxy.sock mode 600 level
admin #socket文件路径、文件权限及管理级别
user haproxy # 设置运行haproxy的用户(非登录用户),也可使用uid关键字替代。
group haproxy # 设置运行haproxy的用户组,也可使用gid关键字替代。
nbproc <number> #开启的haproxy进程数,通常与CPU核心数保持一致,开启多进程提高并发处理能力。
cpu-map 1 0 #将第1个子进程绑定到0号CPU核心,以此类推(优化配置项,haproxy开启了多进程时,绑定haproxy子进程至指定CPU核心上,避免多个子进程在不同CPU核心上切换,提升性能)
nbthread <number> #指定每个haproxy进程开启的线程数,默认为每个进程一个线程,与nbproc互斥,即开启多进程时无法开启多线程,通常适合单核心CPU开启此项提升处理能力。
maxconn <number> #单haproxy进程的最大并发连接数,需要调整优化系统最大文件描述符数(ulimit -n)。
maxconnrate <number> #单个haproxy进程的连接每秒的创建速率上限
maxsslconn <number> #单个haproxy进程的ssl连接最大并发连接数,用于haproxy配置了证书的场景下。需要调整优化系统最大文件描述符数(ulimit -n)。
maxsslrate <number> #单haproxy进程的ssl连接每秒的创建速率上限,用于haproxy配置了证书的场景下。
spread-checks #后端server状态check随机提前或延迟百分比时间,建议2-5(20%-50%)之间。
pidfile /var/lib/haproxy/haproxy.pid #指定pid文件路径
log 127.0.0.1 local3 info #定义全局的syslog服务器到本机rsyslog服务的local3设备上,最多可以定义两个。
proxies:代理配置段
官方文档:https://cbonte.github.io/haproxy-dconv/2.0/configuration.html#4
defaults [name] #默认配置项,针对以下的frontend、backend和lsiten生效,可以多个name
frontend [name] #前端servername,类似于Nginx的一个虚拟主机server{}
backend [name] #后端服务器组,等于nginx的upstream{}
listen [name] #将frontend和backend合并在一起配置
注意:name字段只能使用"-"、"_"、"."、":",并且严格区分大小写,例如:Web和web是完全不同的两组服务器。
Proxies配置-defaults
defaults # 默认部分的定义
option redispatch # 当使用了cookie会话保持时,haproxy将会将其请求的后端服务器的serverID插入到cookie中,以保证会话的SESSION持久性;而此时,如果后端的服务器宕掉了,但是客户端的cookie是不会刷新的,如果设置此参数,将会将客户的请求强制定向到另外一个后端server上,以保证服务的正常。
option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接。
option dontlognull # 启用该项,日志中将不会记录空连接。所谓空连接就是在上游的负载均衡器或者监控系统为了探测该服务是否存活可用时,需要定期的连接或者获取某一固定的组件或页面,或者探测扫描端口是否在监听或开放等动作被称为空连接;官方文档中标注,如果该服务上游没有其他的负载均衡器的话,建议不要使用该参数,因为互联网上的恶意扫描或其他动作就不会被记录下来
option httpclose #使用该参数,每处理完一个request时,haproxy都会去检查http头中的Connection的值,如果该值不是close,haproxy将会将其删除,如果该值为空将会添加为:Connection: close。使每个客户端和服务器端在完成一次传输后都会主动关闭TCP连接。与该参数类似的另外一个参数是“option forceclose”,该参数的作用是强制关闭对外的服务通道,因为有的服务器端收到Connection: close时,也不会自动关闭TCP连接,如果客户端也不关闭,连接就会一直处于打开,直到超时。
option http-keep-alive #开启与客户端的会话保持
option forwardfor #透传客户端真实IP至后端web服务器方便访问日志统计
mode http #默认工作类型(mode {http|tcp|health} 。http是七层模式,tcp是四层模式,health是健康检测,返回OK)
timeout connect 120s #客户端请求到后端server的最长连接等待时间(TCP三次握手之前)
timeout server 600s #客户端请求到后端服务端的超时超时时长(TCP三次握手之后)默认单位是毫秒
timeout client 600s #与客户端的最长非活动时间,默认单位是毫秒
timeout http-keep-alive 120s #session会话保持超时时间,范围内会转发到相同的后端服务器,默认单位是毫秒。
timeout check 5s #对后端服务器的检测超时时间
haproxy状态监控web页配置
listen status # 定义一个名为status的部分作为web状态监控页面
bind 0.0.0.0:9999 # 定义监听的网络套接字地址
mode http # 定义为HTTP模式
log global # 继承global中log的定义
stats refresh 30s # stats是haproxy的一个统计页面的套接字,该参数设置统计页面的刷新间隔为30s
stats uri /admin?stats # 设置统计页面的uri为/admin?stats
stats realm Private lands # 设置统计页面认证时的提示内容
stats auth admin:password # 设置统计页面认证的用户和密码,如果要设置多个,另起一行写入即可
stats hide-version # 隐藏统计页面上的haproxy版本信息
Proxies配置-frontend
bind:指定HAProxy的监听地址,可以是IPV4或IPV6,可以同时监听多个IP或端口,可同时用于listen字段中
listen http_proxy #监听http的多个IP的多个端口和sock文件
bind :80,:443,:8801-8810
bind 10.0.0.1:10080,10.0.0.1:10443
bind /var/run/ssl-frontend.sock user root mode 600 accept-proxy
listen http_https_proxy #https监听
bind :80
bind :443 ssl crt /etc/haproxy/site.pem #https证书路径
listen http_https_proxy_explicit #监听ipv6、ipv4和unix sock文件
bind ipv6@:80
bind ipv4@public_ssl:443 ssl crt /etc/haproxy/site.pem
bind unix@ssl-frontend.sock user root mode 600 accept-proxy
listen external_bind_app1 #监听file descriptor(文件描述符)
bind "fd@${FD_APP1}"
frontend配置生产示例:
frontend WEB_PORT #定义一个名为WEB_PORT的前端部分
bind :80,:8080
bind 192.168.7.102:10080,:8801-8810,192.168.7.101:9001-9010 #可同时监听多个IP和端口范围
mode http/tcp #指定负载协议类型
use_backend backend_name #调用的后端服务器组名称
Proxies配置-backend:
mode http/tcp #指定负载协议类型
option #配置选项
server #定义后端real server
check #对指定real进行健康状态检查,默认不开启
addr IP #可指定的健康状态监测IP
port num #指定的健康状态监测端口
inter num #健康状态检查间隔时间,默认2000 ms
fall num #后端服务器失效检查次数,默认为3
rise num #后端服务器从下线恢复检查次数,默认为2
weight #默认为1,最大值为256,0表示不参与负载均衡
backup #将后端服务器标记为备份状态
disabled #将后端服务器标记为不可用状态
redirect prefix http://www.magedu.net/ #将请求临时重定向至其它URL,只适用于http模式。
maxconn num #当前后端server的最大并发连接数
backlog num #当server的连接数达到上限后的后援队列长度
注意:option后面加httpchk,smtpchk,mysql-check,pgsql-check,ssl-hello-chk方法,可用于实现更多应用层检测功能。
frontend+backend配置实例
#官网业务访问入口======================================
frontend WEB_PORT_80
bind 192.168.7.248:80
mode http
use_backend web_prot_http_nodes
backend web_prot_http_nodes
mode http
option forwardfor
server 192.168.7.101 192.168.7.101:8080 check inter 3000 fall 3 rise 5
server 192.168.7.102 192.168.7.102:8080 check inter 3000 fall 3 rise 5
Proxies配置-listen
listen方式写法代码更加简洁,推荐使用listen替换frontend和backend,listen配置方式举例如下:
#官网业务访问入口=====================================
listen WEB_PORT_80
bind 192.168.7.248:80
mode http
option forwardfor
server web1 192.168.7.101:80 check inter 3000 fall 3 rise 5
server web2 192.168.7.102:80 check inter 3000 fall 3 rise 5
注意:通常为了解决单点失败问题,HAProxy会结合Keepalived实施双机热备高可用,因此listen段bind监听的IP地址通常应该配置为虚拟VIP地址,因此需要打开系统内核参数net.ipv4.ip_nonlocal_bind=1,允许harpoxy及keepalived程序监听当前状态下本机不存在的IP地址(当VIP漂移到另外节点时)。
HAProxy的基础配置详解的更多相关文章
- Java进阶知识15 Spring的基础配置详解
1.SSH各个的职责 Struts2:是web框架(管理jsp.action.actionform等).Hibernate:是ORM框架,处于持久层.Spring:是一个容器框架,用于配置bean,并 ...
- Java进阶知识04 Struts2的基础配置详解
1.Struts2的原理/流程步骤 简单的理解: 1.客户端发送一个request请求,Tomcat服务器接收到的请求经过web.xml配置文件去处理,进入struts2的核心过滤器,从而进入s ...
- Java进阶知识03 Hibernate的基础配置详解
1.Hibernate的原理/流程步骤 1.通过Configuration().configure(); 读取并解析hibernate.cfg.xml配置文件,并创建一个configuration对象 ...
- nginx 基础配置详解
#本文只对nginx的最基本配置项做一些解释,对于配置文件拆分管理,更详细的集群健康检查的几种方式,检查策略等在此不做详细解释了. #运行用户user nobody;#启动进程,通常设置成和cpu的数 ...
- Hibernate游记——装备篇《一》(基础配置详解)
Hibernate配置文件可以有两种格式,一种是 hibernate.properties ,另一种是 hibernate.cfg.xml 后者稍微方便一些,当增加hbm映射文件的时候,可以直接在 h ...
- haproxy 安装与配置文件详解
本文主要阐述haproxy的安装配置详解,对于它的概念,作用,功能,和其它LB软件的区别,优点,缺点等不再进行说明. 一. haproxy 的安装配置 # cat /etc/redhat-releas ...
- keepalived原理(主从配置+haproxy)及配置文件详解
下图描述了使用keepalived+Haproxy主从配置来达到能够针对前段流量进行负载均衡到多台后端web1.web2.web3.img1.img2.但是由于haproxy会存在单点故障问题,因此使 ...
- 负载均衡之Haproxy配置详解(及httpd配置)
下图描述了使用keepalived+Haproxy主从配置来达到能够针对前段流量进行负载均衡到多台后端web1.web2.web3.img1.img2.但是由于haproxy会存在单点故障问题,因此使 ...
- 2-4、nginx特性及基础概念-nginx web服务配置详解
Nginx Nginx:engine X 调用了libevent:高性能的网络库 epoll():基于事件驱动event的网络库文件 Nginx的特性: 模块化设计.较好扩展性(不支持模块动态装卸载, ...
随机推荐
- Polling 、Long Polling 和 WebSocket
最近在学习研究WebSocket,了解到Polling 和Long Polling,翻阅了一些博文,根据自己的理解,做个学习笔记 Polling (轮询): 这种方式就是客户端定时向服务器发送http ...
- pytest 打印调试信息
pytest_lean2.py #coding=utf- import pytest import os import sys import time import json sys.path.app ...
- 【2019年05月21日】A股ROE最高排名
个股滚动ROE = 最近4个季度的归母净利润 / ((期初归母净资产 + 期末归母净资产) / 2). 查看更多个股ROE最高排名. 兰州民百(SH600738) - 滚动ROE:86.45% - 滚 ...
- C的位运算符
1.前言 C的位运算符有&(按位与).|(按位或).^(按位异或).~(按位取反),位运算符把运算对象看作是由二进制位组成的位串信息,按位完成指定的运算,得到相应的结果. 2.位运算符 在上面 ...
- centos8 安装 docker
centos 安装docker 官方参考地址:https://docs.docker.com/install/linux/docker-ce/centos/ 里面包含包下载地址: https://d ...
- SAINT学习笔记
SAINT的介绍 SAINT(Significance Analysis of INTeractome)是一种概率方法,用于在亲和纯化-质谱(AP-MS)实验中对阴性对照的诱饵-猎物相互作用进行打分, ...
- [转帖]Kubesphere all-in-one 安装方式.
All-in-One 模式 对于首次接触 KubeSphere 高级版的用户,想寻找一个最快安装和体验 KubeSphere 高级版核心功能的方式,all-in-one 模式支持一键安装 KubeSp ...
- scratch教程:学做控制类积木
少儿编程中scratch很容易被小孩所接受,不管是从外观还是教程中,都符合少儿的兴趣,为此现在只要是开少儿编程课都会有scratch课程,今天娜娜姐小码王scratch培训机构就为大家分享,scrat ...
- ndk-build官方使用说明
ndk-build 脚本可用于编译采用 NDK 基于 Make 的编译系统的项目.此外,我们还针对 ndk-build 使用的 Android.mk和 Application.mk 配置提供了更具体的 ...
- Introducing KSQL: Streaming SQL for Apache Kafka
Update: KSQL is now available as a component of the Confluent Platform. I’m really excited to announ ...