haproxy笔记
haproxy安装、启动、日志配置
- 方法1:
#安装- yum install haproxy -y
#日志配置- sed -i 's/^#$ModLoad imudp/$ModLoad imudp/g' /etc/rsyslog.conf
- sed -i 's/^#$UDPServerRun 514/$UDPServerRun 514/g' /etc/rsyslog.conf
- echo 'local0.* /var/log/haproxy.log'>>/etc/rsyslog.conf #添加haproxy日志路径,local0是在/etc/haproxy/haproxy.cnf 里log定义的
#启动
/etc/init.d/haproxy start- 方法2:编译安装
https://www.cnblogs.com/elvi/p/7717582.html
haproxy配置例子
- ======例子1=======
- global
- log 127.0.0.1 local2
- chroot /var/lib/haproxy
- pidfile /var/run/haproxy.pid
- maxconn
- user haproxy
- group haproxy
- daemon
- stats socket /var/lib/haproxy/stats
- defaults
- mode http
- log global
- option httplog
- option dontlognull
- option http-server-close
- option forwardfor except 127.0.0.0/
- option redispatch
- retries
- timeout http-request 10s
- timeout queue 1m
- timeout connect 10s
- timeout client 1m
- timeout server 1m
- timeout http-keep-alive 10s
- timeout check 10s
- maxconn
- listen stats
- mode http
- bind 0.0.0.0:
- stats enable
- stats hide-version
- #haproxy监控uri
- stats uri /haproxyadmin?stats
- stats realm Haproxy\ Statistics
- stats auth admin:admin
- stats admin if TRUE
- listen nginx_cluster 0.0.0.0:
- mode http
- balance roundrobin
- server node1_nginx 172.16.0.13: check inter rise fall
- server node1_nginx 172.16.0.14: check inter rise fall
- server node1_nginx 172.16.0.15: check inter rise fall
- ======例子2=======
- global
- log 127.0.0.1 local2
- chroot /var/lib/haproxy
- pidfile /var/run/haproxy.pid
- maxconn
- user haproxy
- group haproxy
- daemon
- defaults
- mode tcp
- log global
- option tcplog
- option dontlognull
- retries
- timeout http-request 10s
- timeout queue 1m
- timeout connect 10s
- timeout client 1m
- timeout server 1m
- timeout http-keep-alive 10s
- timeout check 10s
- maxconn
- listen stats
- mode tcp
- log global
- bind 0.0.0.0:
- stats enable
- stats hide-version
- stats uri /haproxyadmin?stats
- stats realm Haproxy\ Statistics
- stats auth admin:admin
- stats admin if TRUE
- frontend mysql
- bind *:
- mode tcp
- log global
- default_backend mysqlservers
- backend mysqlservers
- balance leastconn
- server mysql1 172.22.16.10: check port inter rise fall maxconn
- server mysql2 172.22.16.11: check port inter rise fall maxconn
- server mysql3 172.22.16.12: check port inter rise fall maxconn
haproxy配置详解
- HAProxy配置中分五大部分:
global:全局配置参数,进程级的,用来控制Haproxy启动前的一些进程及系统设置
defaults:配置一些默认的参数,可以被frontend,backend,listen段继承使用
frontend:用来匹配接收客户所请求的域名,uri等,并针对不同的匹配,做不同的请求处理
backend:定义后端服务器集群,以及对后端服务器的一些权重、队列、连接数等选项的设置,我将其理解为Nginx中的upstream块
listen:我将其理解为frontend和backend的组合体- global # 全局参数的设置
- log 127.0.0.1 local0
- # log语法:log <address_1>[max_level_1] # 全局的日志配置,使用log关键字,指定使用127.0.0.1上的syslog服务中的local0日志设备,记录日志等级为info的日志
- user haproxy
- group haproxy
- # 设置运行haproxy的用户和组,也可使用uid,gid关键字替代之
- daemon
- # 以守护进程的方式运行
- nbproc
- # 设置haproxy启动时的进程数,根据官方文档的解释,我将其理解为:该值的设置应该和服务器的CPU核心数一致,即常见的2颗8核心CPU的服务器,即共有16核心,则可以将其值设置为:<= ,创建多个进程数,可以减少每个进程的任务队列,但是过多的进程数也可能会导致进程的崩溃。这里我设置为16
- maxconn
- # 定义每个haproxy进程的最大连接数 ,由于每个连接包括一个客户端和一个服务器端,所以单个进程的TCP会话最大数目将是该值的两倍。
- #ulimit -n
- # 设置最大打开的文件描述符数,在1.4的官方文档中提示,该值会自动计算,所以不建议进行设置
- pidfile /var/run/haproxy.pid
- # 定义haproxy的pid
- defaults # 默认部分的定义
- mode http
- # mode语法:mode {http|tcp|health} 。http是七层模式,tcp是四层模式,health是健康检测,返回OK
- log global
- retries
- # 定义连接后端服务器的失败重连次数,连接失败次数超过此值后将会将对应后端服务器标记为不可用
- option httplog
- # 启用日志记录HTTP请求,默认haproxy日志记录是不记录HTTP请求的,只记录“时间[Jan ::] 日志服务器[127.0.0.1] 实例名已经pid[haproxy[]] 信息[Proxy http_80_in stopped.]”,日志格式很简单。
- 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连接,如果客户端也不关闭,
连接就会一直处于打开,直到超时。- contimeout
- # 设置成功连接到一台服务器的最长等待时间,默认单位是毫秒,新版本的haproxy使用timeout connect替代,该参数向后兼容
- clitimeout
- # 设置连接客户端发送数据时的成功连接最长等待时间,默认单位是毫秒,新版本haproxy使用timeout client替代。该参数向后兼容
- srvtimeout
- # 设置服务器端回应客户度数据发送的最长等待时间,默认单位是毫秒,新版本haproxy使用timeout server替代。该参数向后兼容
- listen status # 定义一个名为status的部分
- bind 0.0.0.0:
- # 定义监听的套接字
- 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版本信息
- frontend http_80_in # 定义一个名为http_80_in的前端部分
- bind 0.0.0.0:
- # http_80_in定义前端部分监听的套接字
- mode http
- # 定义为HTTP模式
- log global
- # 继承global中log的定义
- option forwardfor
- # 启用X-Forwarded-For,在requests头部插入客户端IP发送给后端的server,使后端server获取到客户端的真实IP
- acl static_down nbsrv(static_server) lt
- # 定义一个名叫static_down的acl,当backend static_sever中存活机器数小于1时会被匹配到
- acl php_web url_reg /*.php$
- #acl php_web path_end .php
- # 定义一个名叫php_web的acl,当请求的url末尾是以.php结尾的,将会被匹配到,上面两种写法任选其一
- acl static_web url_reg /*.(css|jpg|png|jpeg|js|gif)$
- #acl static_web path_end .gif .png .jpg .css .js .jpeg
- # 定义一个名叫static_web的acl,当请求的url末尾是以.css、.jpg、.png、.jpeg、.js、.gif结尾的,将会被匹配到,上面两种写法任选其一
- use_backend php_server if static_down
- # 如果满足策略static_down时,就将请求交予backend php_server
- use_backend php_server if php_web
- # 如果满足策略php_web时,就将请求交予backend php_server
- use_backend static_server if static_web
- # 如果满足策略static_web时,就将请求交予backend static_server
- backend php_server #定义一个名为php_server的后端部分
- mode http
- # 设置为http模式
- balance source
- # 设置haproxy的调度算法为源地址hash
- cookie SERVERID
- # 允许向cookie插入SERVERID,每台服务器的SERVERID可在下面使用cookie关键字定义
- option httpchk GET /test/index.php
- # 开启对后端服务器的健康检测,通过GET /test/index.php来判断后端服务器的健康情况
- server php_server_1 10.12.25.68:80 cookie 1 check inter 2000 rise 3 fall 3 weight 2
- server php_server_2 10.12.25.72:80 cookie 2 check inter 2000 rise 3 fall 3 weight 1
- server php_server_bak 10.12.25.79:80 cookie 3 check inter 1500 rise 3 fall 3 backup
- # server语法:server [:port] [param*] # 使用server关键字来设置后端服务器;
- 1.为后端服务器所设置的内部名称[php_server_1],该名称将会呈现在日志或警报中、后端服务器的IP地址,
- 2.支持端口映射[10.12.25.68:80]、
- 3.指定该服务器的SERVERID为1[cookie 1]、
- 4.接受健康监测[check]、
- 监测的间隔时长,单位毫秒[inter 2000]、
- 监测正常多少次后被认为后端服务器是可用的[rise 3]、监测失败多少次后被认为后端服务器是不可用的[fall 3]、
- 分发的权重[weight 2]、最为备份用的后端服务器,当正常的服务器全部都宕机后,才会启用备份服务器[backup]
- backend static_server
- mode http
- option httpchk GET /test/index.html
- server static_server_1 10.12.25.83:80 cookie 3 check inter 2000 rise 3 fall 3
haproxy笔记的更多相关文章
- haproxy笔记之五:一个配置示例
#--------------------------------------------------------------------- # Global settings #---------- ...
- haproxy笔记之六:负载均衡MySQL服务的配置示例
#--------------------------------------------------------------------- # Global settings #---------- ...
- haproxy笔记之四:配置文件中的关键字参考
3.1 balance balance <algorithm> [ <arguments> ]balance url_param <param> [check_po ...
- haproxy笔记之三:配置HAProxy详细介绍
2.1 配置文件格式 HAProxy的配置处理3类来主要参数来源:——最优先处理的命令行参数,——“global”配置段,用于设定全局配置参数:——proxy相关配置段,如“defaults”.“li ...
- haproxy笔记之一:Haproxy基本安装配置(反向代理,类似Nginx,可以代理tcp的连接,不只是http)(注意iptables和selinux的问题)
1.安装haproxy yum -y install haproxy 2.配置文件 # this config needs haproxy- or haproxy- global log 127.0. ...
- haproxy笔记之二:HAProxy简介
HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持 ...
- [笔记]HAproxy reload config file with uninterrupt session
HAProxy is a high performance load balancer. It is very light-weight, and free, making it a great op ...
- HAProxy学习笔记
HAProxy:著名的负载均衡器,工作于用户空间的服务程序,其有两种工作模式: TCP mode:四层调度(模拟实现,依赖于socket进行通信) HTTP mode:七层调度 目前维护的稳定版本分支 ...
- centos之Haproxy 负载均衡学习笔记
HAProxy的特点是:1.支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机:2.能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作3.支持url检测后端的 ...
随机推荐
- Navicat for Mysql 连接报错1251[已解决]
因为mysql是8.0.11的版本,比较新的mysql采用新的保密方式所以旧的修改密码的方式似乎不能用, 新版本改密码方式: use mysql; ALTER USER 'root'@'localho ...
- django搭建一个小型的服务器运维网站-重启服务器的进程
目录 项目介绍和源码: 拿来即用的bootstrap模板: 服务器SSH服务配置与python中paramiko的使用: 用户登陆与session; 最简单的实践之修改服务器时间: 查看和修改服务器配 ...
- Python 进阶_闭包 & 装饰器
目录 目录 闭包 函数的实质和属性 闭包有什么好处 小结 装饰器 更加深入的看看装饰器的执行过程 带参数的装饰器 装饰器的叠加 小结 装饰器能解决什么问题 小结 闭包 Closure: 如果内层函数引 ...
- TestStack.White安装详解
一.安装 NuGet TestStack.White是通过NuGet进行安装的.NuGet最低支持VS2010.我使用的VS2015. 安装方式一 :从Visual Studio的工具->扩展和 ...
- Html5 学习笔记 【PC固定布局】 实战4 footer 区域
最终效果图: Html代码: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta chars ...
- 嵌入式C语言3.4 关键字---类型描述符auto/register/static/const/extern/volatile/
对内存资源存放位置的限定 1. auto 默认值---分配的内存都是可读可写的区域 auto int a; 区域如果出现 {} 我们认为在栈空间 2. register register int a; ...
- 深入理解__proto__ 、constructor和prototype的关系
深入理解__proto__ .constructor和prototype的关系 2013-11-12 09:56 1390人阅读 评论(3) 收藏 举报 分类: 前端之Javascript(59) ...
- vue 中 element-ui 引入方式
目录 前言 全部引用 单个引用 前言 有时候只会使用到 Element-ui 的部分功能,为了减少文件体积建议使用分开引用,即只引用使用的功能. 注意:在main.js中使用部分引用的时候是 impo ...
- javaIO流(四)--输入与输出支持
一.打印流 如果现在要想通过程序实现内容的输出,核心的本质一定要依靠OutputStream类来支持但是OutputStream类有一个最大的缺点,这个类的数据输出操作功能有限,所有的数据一定要转为字 ...
- 网关中加入熔断机制(Hystrix)
网关中加入熔断机制 在网关中加入熔断机制 添加依赖项 spring-cloud-gateway项目POM文件加入spring-cloud-starter-netflix-hystrix <dep ...