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

[经验分享] haproxy配置详解+haproxy实现读写分离

[复制链接]

尚未签到

发表于 2019-1-1 08:28:31 | 显示全部楼层 |阅读模式
     HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在时下的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。HAProxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。

  

  

  


  一、准备三台主机(配置好网关及ip地址)
   第一台主机
   外网地址         172.16.24.100
   内网地址         192.168.24.1
   第二台主机
                    192.168.24.11  
   第三台主机   
                    192.168.24.22
   第二台,第三台的主机的网关指向第一台主机的内网地址。
   route add default gw 192.168.24.1
  二、配置过程
   1)配置第二台主机
     1、安装上php、php-mysql、并给web提供一个页面。
        #yum -y install php php-mysql
        #vim /var/www/html/text.html
        node1.edu.com
    第三台主机的配置和第二台一样
  2)安装配置haproxy
     [root@contron ~]# yum install haproxy
     [root@contron ~]# cd /etc/haproxy
     [root@contron haproxy]# cp haproxy.cfg haproxy.cfg.back
     [root@contron haproxy]# vim haproxy.cfg
  global                        #全局配置段
     log         127.0.0.1 local2
  chroot      /var/lib/haproxy       #修改haproxy的工作目录至指定的目录。可以提升haproxy的安全级别。

      pidfile     /var/run/haproxy.pid   #定义pid言文件所放位置。
      maxconn     4000                   #性能调整参数,设定每个haproxy进程所接受的最大并发连接数
      user        haproxy                #以指定的用户运行haproxy
      group       haproxy                #以指定的组过行haproxy
      daemon                             #让haproxy以守护进程的方式工作于后台。
      stats socket /var/lib/haproxy/stats
  defaults                                    #代理相关的配置段,为所有其它的配置段提供默认参数。
      mode                    http            #设定运行模式或协议(通常有{tcp|http|health})
      log                     global          #启动事件和流量日志(定义为global表示没有额外的参数)
      option                  httplog         #启用记录HTTP请求、会话状态和计时器的功能。
      option                  dontlognull     #不记录健康检查的日志信息。
      option http-server-close                #让服务器端想启用保持连接时的必须选项
      option forwardfor       except 127.0.0.0/8  #
      option                  redispatch      #severID对应的服务器挂掉后,强制定向到其它的健康的服务器
      retries                 3                   #尝试3次连接失败就认为服务器不可用,主要通过后面的check检查。
      timeout http-request    10s             #客户端如果10钟没有发请求就段开连接
      timeout queue           1m              #在对列钟等待的超时时长
      timeout connect         10s             #haproxy将客户端请求发往后端服务器后所等待的超时时长。
      timeout client          1m              #客户端一次的最大一次非活动连接时长
      timeout server          1m              #服务器端非活动状态的超时时长
      timeout http-keep-alive 10s             #保持连接的超时时长
      timeout check           10s             #实现健康检测时的超时时长
      maxconn                 30000           #每个sever默认的最大并发连接数
   listen starts
      mode http              # http的七层模式
      bind 0.0.0.0:1080      #监听端口
      stats enable           #启用基于程序编译时默认设置的统计报告。
      log global
      option httpclose
      option logasap
      option dontlognull
      capture request  header Host len 20    #指定捕获的请求主机报文首部
      capture request  header Referer len 60 # header的Referer属性里面获取上次提交的URL信息
      default_backend servers                #指定认使用的默认后端服务器组。
  

   frontend websrv *:80
  

     default_backend   webserver
  backend   webserver
  

     balance roundrobin
     server   node1  192.168.24.11:80  check
     server   node2  192.168.24.22:80  check
  

    [root@contron haproxy]# service haproxy start
  Starting haproxy:                                          [  OK  ]
  [root@contron haproxy]# ss -tnl  #查看80端口是否启动
  State      Recv-Q Send-Q                     Local Address:Port                       Peer Address:Port
  LISTEN     0      128                                   :::111                                  :::*  LISTEN     0      128                                    *:111                                   *:*  LISTEN     0      128                                    *:80                                    *:*  LISTEN     0      128                                    *:42578                                 *:*  LISTEN     0      128                                   :::22                                   :::*      
  验证

  三、使用haproxy配置上游服务器动静分离
  1)为每台服务器提供一个php测试页面(192.168.24.11、192.168.24.12)
  #vim /var/www/html/index.php

  
  2)修改haproxy的配置文件
  [root@contron ~]# vim /etc/haproxy/haproxy.cfg
  

  frontend http-in
      bind *:80
      mode http
      log global
      option httpclose
      option logasap
      option dontlognull
      capture request  header Host len 20
      capture request  header Referer len 60
      acl url_static       path_beg       -i /static /images /javascript /stylesheets
      acl url_static       path_end       -i .jpg .jpeg .gif .png .css .js .html
      acl url_php          path_end       -i .php
  

      use_backend static_servers          if url_static
      use_backend dynamic_servers         if url_php
      default_backend dynamic_servers
  

  backend static_servers
      balance roundrobin
      server node1 192.168.24.11:80 check maxconn 6000
  

  backend dynamic_servers
      balance roundrobin
      server node2 192.168.24.22:80 check maxconn 1000
  3)重启haproxy服务,并验证结果
  [root@contron ~]# service haproxy reload
  

  实验结果


  四、配置shaproxy统计页面的输出机制;
  1)编辑haproxy配置文件添加如下内容:
  [root@contron ~]# vim /etc/haproxy/haproxy.conf
  
  listen stats
      mode http
      bind 0.0.0.0:1080
      stats enable
      stats hide-version
      stats uri     /haproxyadmin?stats
      stats realm   Haproxy\ Statistics
      stats auth    admin:admin
      stats admin if TRUE
  2)实验结果



  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  





运维网声明 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-658111-1-1.html 上篇帖子: haproxy使用详解 下篇帖子: haproxy中的session保持实现
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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