HAproxy轮询方式+配置文件详解

HAproxy配置文件详解

C语言编写的开源软件,高可用性,负载均衡,基于TCP和HTTCP的应用程序代理,满足中小型网站访问量需求。

优点:

1、自带节点健康检查功能,通过链接页面的头文件信息进行检查(精细高级的检查方式,检查后端服务器是否可用)
2、支持基于源地址的链接调度 (包括:端口 URL 访问控制列表)
3、支持虚拟主机
4、可以对Mysql读 进行负载均衡,对后端Mysql节点进行检测和负载均衡

调度方式balance:此关键字用来定义负载均衡算法

轮询方式轮询注解
roundrobin基于权重进行轮叫调度的算法,在服务器的性能分布比较均匀时,这是一种最公平合理,常用的算法。此算法使用较为频繁。
static-rr基于权重进行轮叫调度的算法,不过此算法为静态方法,在运行时调整期服务器权重不会生效,需要重启haproxy服务生效
source基于请求源IP的算法。此算法先对请求的源IP进行hash运算,可以使同一个客户端IP的请求始终被转发到某台特定的后端服务器
leastconn数据库负载均衡mysql+haproxy的常用轮询方式,不适用于http。此算法会将新的连接请求转发具有最少连接数目的后端服务器。
uri / uri_param / hdr根据url路径进行转发匹配后端服务器。hdr根据http头部进行转发

健康检查方式:

http健康检查方式注解
GETclient请求服务器资源,服务器返回对应资源
HEAD只请求响应报文中的HTTP头部
POST将客户端的数据提交到服务器
PUT从客户端向服务器传送的数据代替指定的文档内容
DELETE删除,请求服务器删除 request-URI 标识资源
MOVE请求服务器将指定页面转移到另外网络

配置文件详解

路径:/etc/haproxy/haproxy.cfg
HAproxy配置文件主要由5部分组成,但有些部分并不是必须的

配置文件组成部分实现功能
global 全局配置段进程,安全配置,性能调整,Debug参数
defaults 默认配置段为frontend, listen, backend提供默认配置
frontend ACL配置段此部分用于设置接收用户请求的前端虚拟节点,并根据ACL规则直接指定要使用的后端backend
backend 真实集群配置段此部分用于设置群集后端服务集群的配置,处理前端用户的请求,添加真实的服务器
listen 代理配置段用来设置haproxy代理服务页面,监听整个后端集群状态

全局配置

global
	log 127.0.0.1 local0		日志输出配置,所有日志都记录在本机,通过local0输出
	#log 127.0.0.1 local0 notice	local0代表日志设备,info,notice代表日志级别。
	#log 127.0.0.1 local0 info
	
	maxconn 4096         		#每个HAproxy进程的最大连接并发数
	chroot /usr/local/haproxy    #改变当前工作目录,软件安装目录
	
	uid 99                       #所属运行的用户uid,也可以设置运行HAproxy进程的用户
	gid 99			     #所属运行的用户组gid,也可以设置运行HAproxy进程的用户和组
	daemon                     #以后台形式运行ha-proxy
	nbproc 3                   #启动3个ha-proxy进程,可以设置多个进程提高性能
				    要小于服务器的CPU内核数,过多的进程可能会导致进程崩溃
	pidfile /usr/local/haproxy/run/haproxy.pid     #pid文件位置
	debug           	   #调试模式,输出启动信息到标准输出

默认的全局配置

defaults 
	log  global		#集成全局配置中的日志格式
	mode http   		#所处理的类别(#7层 http;4层tcp) tcp模式一般用于,SSL,SSH,SMTP,MySQL等应用
	option  httplog   	#日志类别http日志格式
	option  http-server-close  #每次请求完毕后主动关闭http通道
	option  dontlognull  	   # 不记录健康检查的日志信息
	option  forwardfor   except 127.0.0.1	如果后端服务器需要获得客户端真实ip需要配置的参数
				       		可以从http  header中获得客户端ip
	option  redispatch 	#serverID对应的服务器挂掉后,强制定向到其他健康的服务器
	option  abortonclose  	#当服务器负载很高的时候,自动结束掉当前队列处理比较久的连接
	 
	maxconn 20480   	#最大连接数
	stats  refresh  30   统计页面刷新间隔
	retries  3    3次连接失败就认为该服务不可用
	balance  roundrobin 		  # rr 轮询负载均衡
	#balance  source		 #  source 轮询负载均衡
	#balance  leastconn 	 # 最小连接的负载均衡方式,推荐在Mysql、LDAP等情况下使用

	timeout connect  5000   连接超时
        timeout client  50000   客户端超时
        timeout server 50000   后端服务器超时

	timeout  check  2000  设置对后端服务器的检测超时时间,默认单位是毫秒
	timeout http-request     10s  请求报文的超时时长

frontend 虚拟前端部分

frontend  www
	bind *:80  | 0.0.0.0:80	只能在frontend和listen部分进行定义,用于定义一个或几个监听的套接字
				bind  主机名|IP地址|*:port   interface <ens33>(可选)
	option httplog   	#启用日志记录http请求
	option forwardfor   	#通过X-Forwarded-For信息,来记录客户端来源IP
	option httpclose   	#表示在客户端和服务器端完成一次连接请求后,HAproxy将主动关闭此TCP连接
	log      global
	default_backend web	#指定默认的后端服务器池,指定后端真实服务器。

如果想要查看到 frontend的ACL控制列表写入方法:请点击如下链接
ACL写入规则

backend真实服务器集群部分

backend web    使用backend关键字定义名为web的后端真实服务器组
	mode http
	option loghttp
	option redispatch	如果后端服务器发生故障,会通过此参数,
				将客户的请求强制定向到另外一台健康的后端服务器上,以保证服务正常
	option abortonclose	此参数可以在服务器负载很高的情况下,自动结束当前队列中处理时间比较长的连接
	balance roundrobin	定义负载均衡算法
	cookie  SERVERID 	表示允许向cookie插入serverid。
				每台服务器的serverid可在下面的server关键字中使用cookie关键字定义

	option  httpchk GET  /index.html 启用http的服务状态检测功能
	option  httpchk HEAD /index.html  HTTP/1.1\r\nHost:\ www.xxx.com   头部检测格式
	server  web1  192.168.10.2:80  cookie  server1  weight  6 check inter 2000 rise 2 fall 3
	server  web2  192.168.10.22:9000  cookie  server2  weight 6 check inter 2000 rise 2 fall 3

	注释如下:
	#服务器定义web1,cookie表示serverid为web1
	#check  inter  2000 检测心跳频率
	#rise 3 是三次正确认为服务器可用  fall 3  是三次失败认为服务器不可用
	#weight代表权重,backup为备份节点

listen 代理页面监听部分

listen web_stats    		#通过listen定义了一个名为“web_stats”的监控页面
	bind 0.0.0.0:80  	#此处可以设置监听页面的端口号,可以是任意端口号
	log    global    
 	mode   http    
 	stats  refresh 30s  		#设置HAproxy监控统计页面自动刷新时间
 	stats  uri  /haproxy-stats	#设置HAproxy监控统计页面的URL路径,
	stats  realm  welcome  logn\ Haproxy	#设置登录HAproxy监控统计页面时,密码框上的文本提示信息
	stats auth admin:123.com	#设置登录HAproxy统计页面的用户名和密码,可以为监控页面设置多个用户名和密码,每行一个
	#stats auth shm:123.com	
	stats hide-version 	#用来隐藏统计页面上HAproxy的版本信息
	stats admin if TURE 	#可以在监控页面上手工启用或禁用后端真实服务器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值