HAproxy的安装与配置讲解
1,安装
官网下载
http://www.haproxy.org/#down
cd /usr/local/src/
wget http://www.haproxy.org/download/1.4/src/haproxy-1.4.27.tar.gz
tar -zxvf haproxy-1.4..tar.gz
cd haproxy-1.4.
make TARGET=linux26 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
mkdir /usr/local/haproxy/conf
cp examples/haproxy.cfg /usr/local/haproxy/conf 完成
HAproxy默认不创建配置文件目录,我们自己创建 mkdir /usr/local/haproxy/conf
拷贝事例配置文件到我们创建的配置文件目录
2配置文件讲解
默认配置文件如下:
# this config needs haproxy-1.1. or haproxy-1.2. global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn
chroot /usr/share/haproxy
uid
gid
daemon
#debug
#quiet defaults
log global
mode http
option httplog
option dontlognull
retries
redispatch
maxconn
contimeout
clitimeout
srvtimeout listen appli1-rewrite 0.0.0.0:
cookie SERVERID rewrite
balance roundrobin
server app1_1 192.168.34.23: cookie app1inst1 check inter rise fall
server app1_2 192.168.34.32: cookie app1inst2 check inter rise fall
server app1_3 192.168.34.27: cookie app1inst3 check inter rise fall
server app1_4 192.168.34.42: cookie app1inst4 check inter rise fall listen appli2-insert 0.0.0.0:
option httpchk
balance roundrobin
cookie SERVERID insert indirect nocache
server inst1 192.168.114.56: cookie server01 check inter fall
server inst2 192.168.114.56: cookie server02 check inter fall
capture cookie vgnvisitor= len option httpclose # disable keep-alive
rspidel ^Set-cookie:\ IP= # do not let this cookie tell our internal IP address listen appli3-relais 0.0.0.0:
dispatch 192.168.135.17: listen appli4-backup 0.0.0.0:
option httpchk /index.html
option persist
balance roundrobin
server inst1 192.168.114.56: check inter fall
server inst2 192.168.114.56: check inter fall backup listen ssl-relay 0.0.0.0:
option ssl-hello-chk
balance source
server inst1 192.168.110.56: check inter fall
server inst2 192.168.110.57: check inter fall
server back1 192.168.120.58: backup listen appli5-backup 0.0.0.0:
option httpchk *
balance roundrobin
cookie SERVERID insert indirect nocache
server inst1 192.168.114.56: cookie server01 check inter fall
server inst2 192.168.114.56: cookie server02 check inter fall
server inst3 192.168.114.57: backup check inter fall
capture cookie ASPSESSION len
srvtimeout option httpclose # disable keep-alive
option checkcache # block response if set-cookie & cacheable rspidel ^Set-cookie:\ IP= # do not let this cookie tell our internal IP address errorloc http://192.168.114.58/error502.html
errorfile /etc/haproxy/errors/.http
HAproxy基础配置文件讲解
HAproxy配置文件主要由五个部分组成
1,golbal部分
用来设定全局配置参数,属于进程级的配置,通常和操作系统有关系。
2,default部分
默认的参数部分
在此部分设置的参数值,默认会自动引用到下面的frontend,backend,和listen部分中,所以某些参数属于公用配置,只需要在default部分添加一次即可。
而如果在frontend,backend和listen部分中也配置了与default部分一样的参数,那么default部分参数对应的值会自动被覆盖
3,frontend部分
用于设置接收用户请求的前端虚拟节点。fronted可以根据ACL规则直接指定要使用的后端backend.
4,backend部分
此部分用来设置集群后端服务集群的配置,也就是来添加一组真是服务器,来处理前端用户的请求。添加的真实服务器类似与LVS中的real server节点
5,listen部分
此部分是frontend部分和backend部分的结合体.在HAproxy1.3版本之前,HAproxy的所有配置选项都在这个部分中来设置.为了保持兼容,HAproxy新的版本仍然保留了listen组件的配置方式
,目前在HAproxy中,两种配置选择其中一种即可。
详解
1,global部分
global
log 127.0.0.1 local0 info
maxconn 4096
chroot /usr/share/haproxy
user nobody #可以写 uid 99 gid 99
group nobody
daemon
nbproc 1
pidfile /usr/local/haproxy/logs/haproxy.pid
log,全局的日志配置,local0表示日志设备,info表示日志级别(err,warning,info,debug))
上边表示使用127.0.0.1上的rysslog服务中的local0日志设备,记录日志级别为info
maxconn:设定HAproxy进程最大的并发连接数,像这个命令(ulimit -n)
user/group:运行HAProxy进程的用户和组
daemon:设置HAProxy进程后台运行,推荐方式
nbproc:设置HAProxy继承可创建的进程数此参数要求HAProxy运行模式为daemon默认只是启动一个进程,改值最好小于cpu核数
pidfile:指定HAProxy进程的pid文件,启动进程的用户必须有访问此文件的权限
2,default部分
defaults
log global
mode http
retries 3
redispatch
maxconn 2000
timeout connect 10s
timeout client 20s
timeout server 30s
timeout check 5s
mode:设置HAProxy实例的运行模式,有tcp,http,health三个可选值
TCP模式,此模式下客户端与服务端之间建立一个全双工连接,不会对七层报文做任何类型的检查经常用于ssl,ssh,smtp等应用
HTTP模式,此模式下,客户端请求在转发至后端服务器之前将会被深度分析,所有不与RFC模式兼容的请求都会被拒绝
health,基本废弃
retries:设置连接后端服务器失败重复次数,如果超过这个值的话,HAProxy会认为后端服务器标记为不可用
timeout connect:设置成功连接一台后端服务器最长等待时间
timeout client:设置连接客户端发送数据时的最长等待时间
timeout server:设置服务端回应客户端数据发送的最长等待时间
timeout check:设置对后端服务器检测超时时间
frontend部分
frontend wwww
bind *:80
mode http
option httplog
option forwardfor
option httpclose
log global
default_backend htmpool
这部分通过frontend关键字定义了一个名字为'www'的前端虚拟节点.
bind:此选项只能在frontend和listen部分进行定义,用于定义一个或者监听的套接字.格式如下
bind [<address>:<port_range>] interface <interface>
address可选项,其可以是主机名或ip地址,如果将其设置为'*'或'0.0.0.0'将将监听当前所有IPV4地址
port_range可以是一个特定的tcp端口,也可以是一个端口范围.
option httplog 启用日志记录HTTP请求
option forwardfor 获取客户端真实ip地址
option httpclose 客户端与服务端完成一次链接请求后,HAProxy将主动断开TCP链接
log global 使用全局日志配置
default_backend:默认的后端服务器池,也就是指定一组后端服务器真实地址,这些真实服务器将在backend段进行定义,htmpool就是一个后端服务器组
backend部分配置事例如下
backend htmpool
mode http
option redispatch
option abortonclose
balance roundrobin
cookie SERVERID
option httpchk GET /index.php
server web1 10.200.34.181:80 cookie server1 weight 6 check inter 2000 rise 2 fall 3
server web2 10.200.34.182:8080 cookie server2 weight 6 check inter 2000 rise 2 fall 3
定义了一个名为htmpool的后端真实服务器地址
option redispatch:此参数用于cookie保持的环境中,默认情况下,HAProxy会将其请求的后端服务器的serverid插入cookie中,以保证会话的session持久性当后端服务器出现故障的时候,就会将客户的请求强制定向到另外一台健康的后端服务器上,来保证服务正常。
option abortonclose:此参数可以在服务器负载很高的情况下,自动结束当前队列中,处理时间比较长的连接
balance第一负载均衡算法
roundrobin:基于权重进行轮叫调度的算法。在服务器性能分布比较均匀时,这是一种最公平,最合理的算法
static-rr:也是基于权重进行轮叫调度的算法,但是此算法为静态方法
source:基于请求源ip的算法,这种方式可以使同一个客户端ip的请求始终被转发到某特定的后端服务器
leastconn:此算法会将新的连接请求转发到具有最少连接数数目的后端服务器.在会话较长的场景中推荐使用,例如数据库负载均衡,对于http这种会话较短的不推荐使用
uri
uri_param
hdr
cookie:准许像cookie插入serverid,没太服务器的serverid可在下面的server关键字中使用cookie关键字定义
option httpchk:启用http服务状态检测功能,语法如下
option httpchk <method> <uri> <version>
method表示http请求方式,常用的有OPTIONS,GET,HEAD.一般采用HEAD的方式,仅仅检查response的HEAD是不是状态码200
uri表示检测的URL地址,返回状态码为200正常,其他异常
server定义多台后端真时服务器地址,不能用于defaults,frontend部分
格式: server <name> <address> [:port] [param*]
<name>为后端服务器指定一个内部名称
<address>后端真实服务器的IP地址或主机名
<port>指定连接请求发往真实服务器时的目标端口
[param*]:为后端服务器设定参数,常用的如下
check-- 启用对后端服务器执行健康状态检查
inter 设置健康状态检查的时间间隔,单位ms
rise:设置从故障状态转化至正常状态需要成功检查的次数
fall:设置后端服务器从正常状态转换为不可用状态需要检查的次数,fall 3三次检查失败就认为此服务不可用
cookie:为指定后端服务器设定cookie值,此处指定的值将在请求入站时被检查,第一次为此值挑选的后端服务器将在后续的请求中一直被选中,其目的在于实现持久连接功能
cookie server1表示web1的serverid为server1
weight:设置后端服务器的权重默认为1,最大256
backup:设置后端服务器的备份服务器仅仅在后端所有服务器都不能使用才启用
listen部分
listen admin_stats
bind 0.0.0.0:9188
mode http
log 127.0.0.1 local0 err
stats refresh 30s
stats uri /haproxy-status
status realm welcome login\ Haproxy
stats auth admin:admin~!@
stats hide-version
stats admin if TRUE
定义了一个名为admin_stats的实例,也就是定义了HAproxy的监控页面
stats refresh定义了HAproxy统计页面的自动刷新的时间
stats uri设定HAProxy监控页面的URL路径,stats uri /haproxy-status,可以通过http://IP:9188/haproxy-status查看
stats realm设置登录HAProxy统计页面时密码框上的文本信息
stats auth设置登录HAProxy统计页面的用户名和密码
stats hide-version隐藏HAProxy统计页面上的版本信息
stats admin if TRUE,可以在监控页面上手动启用或者禁止后端真实服务器,仅在1.4.9以后版本有效
HAproxy的安装与配置讲解的更多相关文章
- 理解 OpenStack Swift (1):OpenStack + 三节点Swift 集群+ HAProxy + UCARP 安装和配置
本系列文章着重学习和研究OpenStack Swift,包括环境搭建.原理.架构.监控和性能等. (1)OpenStack + 三节点Swift 集群+ HAProxy + UCARP 安装和配置 ( ...
- 烂泥:高负载均衡学习haproxy之安装与配置
本文由秀依林枫提供友情赞助,首发于烂泥行天下 有关高负载均衡的软件,目前使用比较多的是haproxy.nginx和lvs.下面我们就开始学习haprxoy这款软件. 一.haproxy介绍 以下开始介 ...
- Haproxy的安装和配置示例
1.ha proxy简介ha proxy是一个开源的,高性能的,基于tcp第四层和http第七层应用的负载均衡软件优点:可靠性和稳定性非常好 最高可以同时维护40000-50000个 ...
- Haproxy的安装与配置
一.Haproxy概念 Haproxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.Haproxy特别适用于那些负载特大的web站点,这 ...
- Keepalived + HAProxy 搭建【第一篇】HAProxy 的安装和配置
第一步:准备 1. 操作系统 CentOS-7-x86_64-Everything-1511 2. 安装包 haproxy-1.7.2.tar.gz 第二步:安装 # tar zxvf haproxy ...
- Keepalived + HAProxy 搭建【第一篇】HAProxy 的安装与配置
第一步:准备 1. 操作系统 CentOS-7-x86_64-Everything-1511 2. 安装包 haproxy-1.7.2.tar.gz 第二步:安装 # tar zxvf haproxy ...
- 【学习总结】快速上手Linux玩转典型应用-第7章-WebServer安装和配置讲解
课程目录链接 快速上手Linux玩转典型应用-目录 目录 1. Apache的安装 2. Apache的虚拟主机配置及伪静态操作 3. Nginx的基本操作 4. Nginx伪静态的实现 5. 实例演 ...
- 高负载均衡学习haproxy之安装与配置
https://www.cnblogs.com/ilanni/p/4750081.html
- Keepalived + HAProxy 搭建【第二篇】Keepalived 安装与配置
第一步:准备 1. 简介 本文搭建的是利用 Keepalived 实现 HAProxy 的热备方案,即两台主机上的 HAProxy 实例同时运行,其中全总较高的实例为 MASTER,MASTER出现异 ...
随机推荐
- Interview website
https://www.interviewcake.com http://www.leetcode.com
- struts2类型转换
1. Struts2中的类型转换 我们知道通过HTTP提交到后台的数据,都是字符串的形式,而我们需要的数据类型当然不只字符串类型一种.所以,我们需要类型转换! 在Struts2中,类型转换的概念除了用 ...
- CentOS 7 下安装redis步骤
1. 从redis官网下载redis源码,本例安装在/usr/opt下 [root@localhost opt]# pwd /usr/opt [root@localhost opt]# wget ht ...
- nginx php-fpm 输出php错误日志
nginx是一个web服务器,因此nginx的access日志只有对访问页面的记录,不会有php 的 error log信息. nginx把对php的请求发给php-fpm fastcgi进程来处理, ...
- Mybatis框架的多对一关联关系(六)
一.一对多的关联映射 一对多关联查询多表数据 1接口 public interface IDeptDAO { //根据部门编号查询该部门单个查询 public Emp getEmpById(Integ ...
- linux(十二)___Apache服务器用户认证、虚拟主机的配置
创建xiangkejin zhangsan两个用户 可看见文件中创建的两个用户: 建立虚拟目录并配置用户认证 ①建立虚拟目录 /xiangkejin ②在Apache的主配置文件httpd.conf ...
- JVM调优总结
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理内存限制.32位系统下,一般限制在1.5G~2G:64为操作 ...
- 强大的observejs
写在前面 各大MVVM框架的双向绑定太难以观察,很难直观地从业务代码里知道发生了什么,我不是双向绑定的反对者,只是认为双向绑定不应该糅合进底层框架,而应该出现在业务代码中,或者是业务和框架之间的代码上 ...
- swift学习笔记3——类、结构体、枚举
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- 记录我的点点滴滴从此刻做起——iOS开发工程师
作为一个iOS工程师,想写博客也是有原因的:首先有这个想法(写博客的想法)也是因为想到自己都从事iOS开发快两年了,怎么也只会堆代码,写view,技术真的很一般,感觉都要被淘汰了:基于以上原因,自己也 ...