• haproxy常用配置


    haproxy 理论

    它可以反向代理http/tcp协议,七层和四层的负载均衡解决方案

    七层的负载解决方案是因为他们支持高级特性,工作在用户空间,请求从用户空间转换到内核空间是非常浪费硬件资源的。

    haproxy有一个monitor接口 可以查看连接状况。 

    haproxy是一个单一进进程响应众多请求的负载均衡,他可以开启多进程,但是官方不建议开启多进程。haproxy1.4 还可以根据url进行调度,这样可以提高缓存命中率。这也是使用haproxy的重要原因之一。

    还可以根据acl进行持久连接

     

    环境

     

    角色                     主机                     IP        

    haproxy             centos6.5            192.168.1.105(桥接)   

                                             192.168.3.50(vmnet8)           web1          centos6.5            192.168.3.100(vmnet8)

    web2                cnntos6.5            192.168.3.101(vmnet8)    

     

    web1和web2的网关指向192.168.3.50

     

    .配置haproxy

    [root@localhost ~]# yum -y install haproxy

     

    配置文件

    haproxy配置文件有两部分

    (1)全局配置:

        global  设置进程属性的设定

        proxies  代理的配置

           defaults

           frontend(前端)

           backend(后端)

           listen(整合前端和后端的)

     

    2)首先我们通过frontend+backend的方法实现haproxy的负载均衡

    [root@localhost ~]# vim  /etc/haproxy/haproxy.cfg

     

    #在文件最后定义后端资源组

    backend web

        balance     roundrobin

        server web1 192.168.3.100:80 check

        server web2 192.168.3.101:80 check

    解释:web为定义的资源组的名称

          roundrobin轮询调度算法

          web1web2都为节点的名称,可以自定义,这里的名字用于记录日志使用。

          check为健康状态检查

     

    #定义前端(相当于nginx中的server)

    frontend  webserver *:80

       default_backend web

     

    解释:

    webserver为前端的名称,可以定定义

    default_backend将监听在80端口的请求转发给名称为web的资源组

     

    启动haproxy

    [root@localhost ~]# service haproxy start

    正在启动 haproxy:                                         [确定]

     

    在两个节点中添加index.html,访问http://192.168.3.50,看到轮询效果。

     

    健康状态检查。

    停止掉其中的任意一个web服务,会发现,故障的节点将不会被调度。

     

    3)启动日志记录

    [root@localhost ~]# vim /etc/rsyslog.conf

    13 $ModLoad imudp

    14 $UDPServerRun 514

    17 $ModLoad imtcp

    18 $InputTCPServerRun 514

    启用13,14,17,18行

     

    在62添加一行日志位置

    62    local2.*                    /var/log/haproxy.log

    这是全局日志,

     

    我们可以在每个frontend中定义单独的日志文件

    格式:

    log 127.0.0.1 local3

    然后在rsyslog中定义local3及其位置

    然后在访问,就会出现日志

     

     

    4.通过source(ip_hash)算法,将同一客户端的请求到同一台server上去。

    基于上边的配置,修改一下算法

    backend web

        balance     source

        server web1 192.168.3.100:80 check

        server web1 192.168.3.101:80 check

     

    再次访问页面时候,会发现只停留在一个server上面

     

    5.还有一种就是基于url路径转发。

    backend web

        balance     uri

        server web1 192.168.3.100:80 check

        server web1 192.168.3.101:80 check

    只要访问的是同一个路径,会被转发到同一个server

     

    二、指定haproxy的工作模式

    模式有两种

        http模式

           定义应用层数据深入分析,因此支持7层的过滤。处理,转换等机制

        tcp模式

           haproxy在客户端和应用服务器之间建立一个全双工的连接,不会对应用层协议      做任何检查。ssl mysql 等都应该使用此模式。

     

    指定模式使用mode参数

     

    三、启用状态监控

    [root@localhost haproxy]# vim /etc/haproxy/haproxy.cfg

    backend web

        balance     uri

        stats       enable

        server web1 192.168.3.100:80 check

        server web1 192.168.3.101:80 check

     

    访问以下地址

    http://192.168.3.50/haproxy?stats

     

    (2)启用认证才能访问状态监控界面

    backend web

        balance     uri

        stats       enable

        stats       auth admin:admin

        server web1 192.168.3.100:80 check

        server web1 192.168.3.101:80 check

     

    (3)启用管理功能

    backend web

        balance     uri

        stats       enable

        stats       auth admin:admin

        stats       admin if TRUE

        server web1 192.168.3.100:80 check

        server web1 192.168.3.101:80 check

        server backup 127.0.0.1:8010 check backup

    就是说你通过认证才能使用管理功能

     

     

     

    四、设置备用服务器(错误页面服务器)

    当所有server宕机,请求会转发至错误错误页面

    准备一台单独的web服务器,或者是haproxy本身,但是端口不能使用80

    [root@localhost haproxy]# vim /etc/httpd/conf/httpd.conf

    Listen 8010

     

    [root@localhost html]# vim /var/www/html/index.html

    <h1>error</h1>

     

    vim haproxy.cfg

    backend web

        balance     uri

        stats       enable

        stats       auth admin:admin

        server web1 192.168.3.100:80 check

        server web1 192.168.3.101:80 check

        server backup 127.0.0.1:8010 check backup

     

    然后我们宕掉两台web,在访问3.50 会发现页面会跳转至error页面

  • 相关阅读:
    实践javascript美术馆的小案例,学习到的东西还是蛮多的,包括javascript编程中的预留退路、分离javascript、以及实现向后兼容等
    HTML5的渐变色 渐变的两种类型 createLinearGradient 和createRadialGradient
    (转)tar 解压缩命令
    VM下的linux系统上不了网?? 使用putty远程登录不上linux的解决方法?
    Js全等和等于
    JavaScript踩坑
    div height 自适应高度 占满剩余高度的方法
    iframe边距问题解决
    Vue.Js初学踩坑
    Linq.js表达式常见写法
  • 原文地址:https://www.cnblogs.com/pangbing/p/7688520.html
Copyright © 2020-2023  润新知