阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

HAproxy 配置详解

467次阅读
没有评论

共计 5935 个字符,预计需要花费 15 分钟才能阅读完成。

一  haproxy  简介
  HAProxy 提供高可用性、负载均衡以及基于 TCP 和 HTTP 应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy 特别适用于那些负载特大的 web 站点,这些站点通常又需要会话保持或七层处理。HAProxy 运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的 web 服务器不被暴露到网络上.

二 haproxy 的配置
  haproxy 配置中分成五部分内容,分别如下:
1 global:参数是进程级的,通常是和操作系统相关。这些参数一般只设置一次,如果配置无误,就不需要再次进行修改
2 defaults:配置默认参数,这些参数可以被用到 frontend,backend,Listen 组件
3 frontend:接收请求的前端虚拟节点,Frontend 可以更加规则直接指定具体使用后端的 backend
4 backend:后端服务集群的配置,是真实服务器,一个 Backend 对应一个或者多个实体服务器
5 Listen Fronted 和 backend 的组合体

三 haproxy 安装配置
1 安装
# wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz
# tar  xf  haproxy-1.4.24.tar.gz
#uname  -r
2.6.18-274.el5PAE
#make  TARGET=linux26PREFIX=/usr/local/haproxy
#make install PREFIX=/usr/local/haproxy
#mkdir /usr/local/haproxy/{etc,logs,run}
#cd  examples/
#cp haproxy.cfg /usr/local/haproxy/etc
#cp  haproxy.init/etc/init.d/haproxy
#chmod 700 /etc/init.d/haproxy
#chkconfig  –add haproxy
#chkconfig  haproxy on

#cat  haproxy.cfg
## 全局配置信息 ###
global
        log 127.0.0.1 local3 #[error warringinfo debug]# 定义 haproxy 日志级别
#      log 127.0.0.1  local1 notice
        #log loghost    local0 info
        maxconn 20480  #默认最大连接数
        chroot /usr/local/haproxy #chroot 运行路径
        uid 99                    #运行 haproxy 用户 UID
        gid 99                    #运行 haproxy 用户组 gid
        daemon                    #以后台形式运行 harpoxy
        nbproc 1                  #设置进程数量
        pidfile /usr/local/haproxy/run/haproxy.pid #haproxy 进程 PID 文件
        ulimit-n 819200  #ulimit 的数量限制
        #debug        #haproxy 调试级别,建议只在开启单进程的时候调试
        #quiet

#### 默认配置选项 #######

defaults
        log    global
        mode    http        #所处理的类别 (7 层代理 http,4 层代理 tcp)
        maxconn 50000      #最大连接数
        option  httplog    #日志类别为 http 日志格式
        option  httpclose  #每次请求完毕后主动关闭 http 通道
        option  dontlognull  #不记录健康检查日志信息
        option  forwardfor  #如果后端服务器需要获得客户端的真实 ip,需要配置的参数,可以从 http header 中获取客户端的 IP
        retries 3            #3 次连接失败就认为服务器不可用,也可以通过后面设置
        option redispatch  #serverID 对应的服务器挂掉后,强制定向到其他健康的服务器
        stats refresh 30    # 设置统计页面刷新时间间隔
        option abortonclose  #当服务器负载很高的时候,自动结束掉当前队列处理比较久的连接
        balance roundrobin    #设置默认负载均衡方式,轮询方式
      #balance source        # 设置默认负载均衡方式,类似于 nginx 的 ip_hash
      #balnace leastconn    #设置默认负载均衡方式,最小连接数
        contimeout 5000      #设置连接超时时间
        clitimeout 50000      #设置客户端超时时间
        srvtimeout 50000      #设置服务器超时时间
        timeout check  2000  #设置心跳检查超时时间
        #timeout http-request  10s  #默认 http 请求超时时间
        #timeoutqueue          1m    #默认队列超时时间
        #timeoutconnect        10s  #默认连接超时时间
        #timeoutclient        1m    #默认客户端超时时间
        #timeoutserver        1m    #默认服务器超时时间
        #timeout http-keep-alive10s  #默认持久连接超时时间

######### 设置监控页面 ######
 listen  admin_status
        bind 0.0.0.0:81          #设置 Frontend 和 Backend 的组合体,监控组的名称,按需要自定义名称
        mode http                #设置 http 的 7 层模式层
        log 127.0.0.1 local3 err  #错误日志记录
        stats refresh 30s          #设置监控页面刷新时间:5s
        stats uri  /haproxy-stats  # 设置监控页面的 url
        stats realm  Frank \Frank #设置页面提示信息
        stats auth admin:admin    #设置监控页面的用户和密码:admin, 可以设置多个用户名
        stats auth  Frank:Frank  #设置监控页面的用户和密码:Frank
        stats hide-version        #隐藏统计页面的 HAproxy 版本信息
        stats  admin if TRUE      #设置手工启动 / 禁用,后端服务器 (haproxy-1.4.9 以后版本)

######## 设置 haproxy 错误页面 #####

errorfile 403 /usr/local/haproxy/errorfiles/403.http
errorfile 500 /usr/local/haproxy/errorfiles/500.http
errorfile 502 /usr/local/haproxy/errorfiles/502.http
errorfile 503 /usr/local/haproxy/errorfiles/503.http
errorfile 504 /usr/local/haproxy/errorfiles/504.http

##### 设置 frontend#########

frontend http_80_in
      bind 0.0.0.0:80          #设置监听端口,即 haproxy 提供的 web 服务端口,和 lvs 的 vip 类似
      mode http                # http 的 7 层模式
      log global                #应用全局的日志设置
      option httplog            #启用 http 的 log
      option httpclose          #每次请求完毕后主动关闭 http 通道,HA-proxy 不支持 keep-alive 模式
      option forwardfor          #如果后端服务器需要获得客户端的真实 IP 需要配置此参数,将可以从 HttpHeader 中获得客户端 IP

####acl 策略配置 ######
acl  frank_web hdr_reg(host)  -i ^(www.test.com.sh|news.test.com.sh)$
      #如果请求的域名满足正则表达式中的 2 个域名返回 true -i 是忽略大小写
      # acl frank_fund  hdr_dom(host)  -i fund.test.com.sh
        #如果请求的域名满足 fund.test.com.sh 返回 true - i 是忽略大小写
      acl frank    hdr(host) -i test.com.sh
      #如果请求的域名满足 test.com.sh 返回 true - i 是忽略大小写
      #acl file_req url_sub -i  killall=
      #在请求 url 中包含 killall=,则此控制策略返回 true, 否则为 false
      # acl dir_req url_dir -i allow
      #在请求 url 中存在 allow 作为部分地址路径,则此控制策略返回 true, 否则返回 false
      acl missing_cl hdr_cnt(Content-length)eq 0
      #当请求的 header 中 Content-length 等于 0 时返回 true
      #### Manage interface ####
      acl Frank_Manage path_dir /Frank/manage/
      acl Frank_Network src  192.168.151.189 192.168.152.0/24
      ## deny lb.html###
      acl Frank_lb  path /lb.html

########acl 策略匹配相应 #############

block if Frank_lb
      block if Frank_Manage!Frank_Network
      #block if missing_cl
      #当请求中 header 中 Content-length 等于 0 阻止请求返回 403
      #block if !file_req || dir_req
      #block 表示阻止请求,返回 403 错误,当前表示如果不满足策略 file_req,或者满足策略 dir_req,则阻止请求
      redirect prefix http://192.168.151.249code 301 if frank
      #当访问 test.com.sh 的时候,用 http 的 301 挑转到 http://192.168.151.249
      use_backend  server_web if frank_web
      #当满足 frank_web 的策略时使用 server_web 的 backend
      #use_backend  server_blog if frank_fund
      #当满足 frank_fund 的策略时使用 server_blog 的 backend
      default_backend server_web
      #以上都不满足的时候使用默认 server_bbs 的 backend

##########backend 的设置 ##############
####################backend  server_web#########################
123456789101112 backendserver_web
      mode http            #http 的 7 层模式
      balance roundrobin  #负载均衡的方式,roundrobin 平均方式
      cookie etnetchinaid insert indirectnocache domain .test.com.sh maxidle 20s maxlife 30s #允许插入 serverid 到 cookie 中,serverid 后面可以定义
#      cookie SERVERID insert indirect nocache
#      appsession  JSESSIONID len 64 timeout 300s request-learn
      option httpchk GET /lb.html HTTP/1.0 #心跳检测的文件
      server 192.168.51.78 192.168.151.78:80cookie cookie78 check inter 1500 rise 3 fall 3 weight 1
      #服务器定义,cookie 1 表示 serverid 为 web1,check inter1500 是检测心跳频率 rise 3 是 3 次正确认为服务器可用,
      #fall 3 是 3 次失败认为服务器不可用,weight 代表权重
      server 192.168.151.79 192.168.151.79:80cookie cookie79 check inter 1500 rise 3 fall 3 weight 1
      #服务器定义,cookie 1 表示 serverid 为 web2,check inter1500 是检测心跳频率 rise 3 是 3 次正确认为服务器可用,#fall 3 是 3 次失败认为服务器不可用,weight 代表权重

HAproxy 的详细介绍 :请点这里
HAproxy 的下载地址 :请点这里

推荐阅读:

Haproxy+Keepalived 搭建 Weblogic 高可用负载均衡集群 http://www.linuxidc.com/Linux/2013-09/89732.htm

Keepalived+HAProxy 配置高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/56748.htm

CentOS 6.3 下 Haproxy+Keepalived+Apache 配置笔记 http://www.linuxidc.com/Linux/2013-06/85598.htm

Haproxy + KeepAlived 实现 WEB 群集 on CentOS 6 http://www.linuxidc.com/Linux/2012-03/55672.htm

Haproxy+Keepalived 构建高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/55880.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计5935字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7962993
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
在Windows系统中通过VMware安装苹果macOS15

在Windows系统中通过VMware安装苹果macOS15

在 Windows 系统中通过 VMware 安装苹果 macOS15 许多开发者和爱好者希望在 Window...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛 NAS 玩转 Frpc 并且配置,随时随地直连你的私有云 大家好,我是星哥,最近在玩飞牛 NAS。 在数...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛 NAS-11:咪咕视频订阅部署全攻略 前言 在家庭影音系统里,NAS 不仅是存储中心,更是内容...