设为首页 收藏本站
查看: 1466|回复: 0

[经验分享] 实战应用HAProxy

[复制链接]

尚未签到

发表于 2015-9-4 13:51:17 | 显示全部楼层 |阅读模式
HAProxy简介

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


  • 系统环境:CentOS6.6 X86_64
  • 服务器配置:
  • haproxy代理服务器       IP:172.16.34.11
  • 后端web1               IP:172.16.34.12
  • 后端web2               IP:172.16.34.13



  • redhat6.4之后就收录进了haproxy,所以这里直接yum安装
  • yum -y install haproxy                           # 安装
  • cp /etc/haproxy/haproxy.cfg{,.bak}               # 备份配置文件
先让代理服务器跑起来



  • 在web1上
  • vim /var/www/html/index.html
  • <h1> web1 </h1>              添加信息并保存退出
  • vim /etc/httpd/conf/httpd.conf
  • ServerName localhost:80      找到ServerName改为这个,保存退出,不改也可以,只是不让启动httpd服务的时候提示的信息,保存退出
  • service httpd start          启动httpd服务
  • 在web2上执行如上动作,将
  • vim /var/www/html/index.html
  • <h1> web2 </h1>   
  • 启动服务

  • 在代理服务器上:
  • vim /etc/haproxy/haproxy.cfg
  • 在frontend段和backend段编辑如下
  • frontend  main *:80                  # 定义监听在什么端口上   
  •     #acl url_static       path_beg       -i /static /images /javascript /stylesheets
  •     #acl url_static       path_end       -i .jpg .gif .png .css .js
  •     #use_backend static          if url_static
  •     default_backend             webserver      # 默认的backend是什么,backend的名称可以自定义但必须与下面的相同
  • #backend static
  • #    balance     roundrobin
  • #    server      static 127.0.0.1:4331 check
  • backend webserver                              # 定义backend段的后端服务器地址及负载均衡调度算法
  •     balance     roundrobin
  •     server  web1 172.16.34.12:80 check
  •     server  web2 172.16.34.13:80 check
  • 保存退出
  • service haproxy start                  启动
  • ss -tnlp                               可以看到haproxy监听在80端口上了
  • 后并在浏览器上输入172.16.34.11测试

配置文件说明


  • 全局设置   定义程序的工作属性
  • global                               # global配置中的参数为进程级别的参数,且通常与其运行的OS相关。
  •     log         127.0.0.1 local2     # 全局的日志配置,local2是日志设备
  •     chroot      /var/lib/haproxy     # 修改haproxy的工作目录至指定的目录并在放弃权限之前执行chroot
  •     pidfile     /var/run/haproxy.pid # haproxy.pid文件存放路径
  •     maxconn     4000                 # 最大连接数
  •     user        haproxy              # 运行用户
  •     group       haproxy              # 运行组
  •     daemon                           # 守护进程,使HAProxy进程进入后台运行。这是推荐的运行模式
  •     stats socket /var/lib/haproxy/stats   启用基于程序编译时默认设置的统计报告
  • 通用默认段
  • defaults                             # “defaults”段用于为所有其它配置段提供默认参数,这配置默认配置参数可由下一个“defaults”所重新设定。
  •     mode                    http     # 模式 {tcp|http|health}
  •     log                     global   # 应用全局的日志配置
  •     option                  httplog  # 采用http日志格式
  •     option                  dontlognull  # 启用或禁用空连接的日志记录。这里是不记录空连接
  •     option http-server-close             # 为每一个请求都附加首
  •     option forwardfor       except 127.0.0.0/8 #允许在发往服务器的请求首部中插入“X-Forwarded-For”首部。
  •     option                  redispatch   # 在连接失败或断开的情况下,允许当前会话被重新分发
  •     retries                 3        # 三次连接失败就认为是服务器不可用,也可以通过后面设置
  •     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                 3000     # 最大連接數
  • 定义后端web的配置,可以使用组或单个主机使用acl定义
  • frontend  main *:5000                # “frontend”段用于定义一系列监听的套接字,这些套接字可接受客户端请求并与之建立连接。
  •     acl url_static       path_beg       -i /static /images /javascript /stylesheets  # acl控制列表  
  •     acl url_static       path_end       -i .jpg .gif .png .css .js    # acl控制列表  
  •     use_backend static          if url_static
  •     default_backend             app
  • 定义后端web的组
  • backend static    #  “backend”段用于定义一系列“后端”服务器,代理将会将对应客户端的请求转发至这些服务器。
  •     balance     roundrobin     # 定义负载均衡算法,roundrobin:基于权重进行轮叫
  •     server      static 127.0.0.1:4331 check   # 服务器地址及端口,check:启动对此server执行健康状态检查
  • backend app
  •     balance     roundrobin    # # 定义负载均衡算法,roundrobin:基于权重进行轮叫
  •     server  app1 127.0.0.1:5001 check  # 服务器地址及端口,check:启动对此server执行健康状态检查


看了配置文件后基本能明白HAporxy配置文件了HAProxy功能之status状态页使用

也可以在backend中使用


  • vim /etc/haproxy/haproxy.cfg
  • stats uri /haproxy-stats       在defaults段内插入这一段,后面的名字可以随便输入,访问的时候是http://172.16.34.11/haproxy-stats   在域名后面跟上输入的名字就可以进入stats状态页了
  • service haproxy restart



启动了后就该需要为其加下帐号密码访问了,不然给人随意访问,网站安全性就很低了


  • vim /etc/haproxy/haproxy.cfg
  • stats auth    admin:password                在stats行下插入这一行  :的是帐号和密码   支持多帐号密码登录,一行一个帐号密码
  • service haproxy restart





  • vim /etc/haproxy/haproxy.cfg
  • stats realm   Haproxy\ 8888888888       在stats行下插入这一行 是提示的信息
  • service haproxy restart



stats还具有管理的功能,需要在配置文件中开启
由于stats管理页只能在backend段或者listen段中使用,


  • vim /etc/haproxy/haproxy.cfg                      在backend段中插入
  •     stats uri /haproxy-stats
  •     stats auth    admin:password
  •     stats realm   Haproxy\ 8888888888
  •     stats admin if TRUE



可以选中节点,用apply进行管理了
















来自为知笔记(Wiz)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-109435-1-1.html 上篇帖子: 制作haproxy rpm包 下篇帖子: HAProxy的独门武器:ebtree
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表