• haproxy


    均衡环境:

    haproxy   192.168.1.10
    nginx     192.168.1.11
    nginx     192.168.1.12

    1.安装haproxy:

    解决依赖环境:
    yum install pcre-devel bzip2-devel gcc-c++ make openssl-devel -y
    
    下载源码包并解压:
    wget http://download.openpkg.org/components/cache/haproxy/haproxy-1.8.10.tar.gz
    tar xf haproxy-1.8.10.tar.gz
    cd haproxy-1.8.10
    # # USE_PCRE=1 开启正则 USE_OPENSSL=1 开启openssl USE_ZLIB=1
    # # USE_CPU_AFFINITY=1 为开启haproxy进程与CPU核心绑定,USE_SYSTEMD=1为支持使用 -Ws参数(systemd-aware master-worker 模式)启动Haproxy,从而实现单主进程多子进程运行模式.
    make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 
    安装路径
    make install PREFIX=/usr/local/haproxy

    创建配置文件目录:

    mkdir /etc/haproxy
    #useradd -s /sbin/nologin -M haproxy

    安装完成后,默认是没有配置文件的需要我们自己创建,可以参考option-http_proxy.cnf这个文件:将此文件复制到/etc/haproxy/目录下,命名为haproxy.cfg:
    HAProxy配置文件详解
    其配置文件主要由五个部分组成,分别为global部分,defaults部分,frontend部分,backend部分,liste部分。
    1)global部分
    用于设置全局配置参数
    2) defaults部分
    默认参数的配置部分。
    3) frontend部分
    用于设置接收用户请求的前端虚拟节点。frontend可以根据ACL规则直接指定要使用的后端backend。
    4) backend部分
    用于设置集群后端服务集群的配置,也就是添加一组真实服务器,以处理前端用户的请求。
    5) listen部分此部分是frontend和backend部分的结合体。配置此部分不需要在配置

     cp haproxy-1.8.10/examples/option-http_proxy.cnf  /etc/haproxy/haproxy.cfg

    编辑haproxy.cfg文件修改为如下内容:

    #--------------全局配置----------------
    global 
        log 127.0.0.1   local0  notice        #配置全局日志记录,local0为日志设备,notice为输出的日志级别,表示使用本地(127.0.0.1)机器上的rsyslog服务中的local0设备记录日志等级为notice的日志。      
        #log loghost    local0 info #定义haproxy 日志级别
         maxconn 20480        #可以接收的最大并发连接数
     #chroot  /usr/local/haproxy-1.5.15     #工作目录
        pidfile  /var/run/haproxy.pid     #haproxy 进程PID文件
        maxconn  4000         #最大连接数
        user   haproxy       #运行的程序用户 
        group   haproxy   #运行的程序用户组
        daemon           #创建1个进程进入deamon模式运行,以后台形式运行harpoxy
    
    #---------------------------------------------------------------------
    #common defaults that all the 'listen' and 'backend' sections will
    #use if not designated in their block
    #---------------------------------------------------------------------
    defaults
        mode   http       #所处理的类别,tcp是四层,http是七层,health只会返回OK,若是混合模式则mode不需要设置
        log    global        #定义日志,采用全局定义
        option  dontlognull    #不记录健康检查的日志信息
        option  httpclose     #每次请求完毕后主动关闭http通道
        option  httplog    #日志类别为http日志格式;如果是混合模式,此处还需要加上tcpclog
        #option  forwardfor    #后端服务器可以从Http Header中获得客户端ip
        option  redispatch     #rverId对应的服务器挂掉后,强制定向到其他健康的服务器
        balance roundrobin    #设置默认负载均衡方式,轮询方式
        timeout connect 10s  #连接超时
        timeout client 10s   #客户端连接超时
        timeout server 10s   #服务器连接超时
        timeout check 10s    #健康检测的超时时间
        maxconn     60000    #最大连接数
        retries     3        #3次连接失败就认为服务不可用
    #--------------统计页面配置------------------
    listen admin_stats       #为haproxy访问状态监控页面配置,取名为admin_stats
        bind 0.0.0.0:8089      #监听端口
        stats enable          #启用监听端口
        mode http         #http的7层模式
        log global         # 继承global中log的定义
        stats uri  /stats     #监控页面的url访问路径,即http://ip/stats访问监控页面
        stats realm Haproxy Statistics     #监控页面的密码框提示信息
        stats auth  admin:admin          #监控页面的用户和密码admin,可以设置多个用户名
        #stats hide-version   #隐藏统计页面上HAProxy的版本信息
        stats admin if TRUE    #当通过认证才可管理
        stats refresh 30s    #页面自动刷新时间30s
    #---------------web设置-----------------------
    listen web_tomcat     #定义webcluster服务器组。
            bind 192.168.1.16:80   #定义haproxy前端部分监听的端口。
            mode http    #http的7层模式
            #option httpchk GET /index.html     #心跳检测
            option forwardfor
            log global    #继承global中log的定义
            maxconn 3000   #server进程可接受的最大并发连接数
            balance roundrobin    #负载均衡的方式:轮询
            server web01 192.168.1.11:8080 check inter 2000 fall 5
            server web02 192.168.1.12:8080 check inter 2000 fall 5
            #server web03 192.168.1.13:8080 check inter 2000 fall 5
    listen web_nginx     #定义webcluster服务器组。
            bind 192.168.1.16:80   #定义haproxy前端部分监听的端口。
            mode http    #http的7层模式
            #option httpchk GET /index.html     #心跳检测
            option forwardfor
            log global    #继承global中log的定义
            maxconn 3000   #server进程可接受的最大并发连接数
            balance roundrobin    #负载均衡的方式:轮询
            server web01 192.168.1.11:80 check inter 2000 fall 5
            server web02 192.168.1.12:80 check inter 2000 fall 5
            #server web03 192.168.1.13:80 check inter 2000 fall 5
    注意:
    后端服务器 web1 和 web2 ,IP 地址分别为 192.168.1.11 和 192.168.1.12
    check:对当前server做健康状态检测cp examples/haproxy.init /etc/init.d/haproxy
    chmod 755 /etc/init.d/haproxy
    chkconfig --add haproxy
    inter <delay>:检测之间的时间间隔,默认为2000ms
    fall <count>:连续多少次检测结果为“失败”才标记为不可用;默认为3
    rise <count>:连续多少次检测结果为“成功”才标记为可用;默认为2

    cp examples/haproxy.init /etc/init.d/haproxy     
    chmod 755 /etc/init.d/haproxy            
    chkconfig --add haproxy   
    ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin/haproxy
    service haproxy start
    service firewalld stop
    访问统计页面
    在浏览器地址栏:192.168.1.10:8089/stats
    1.11/1.12两台服务器各自安装好nginx服务:
    创建测试代码:
    1.11
    echo "<h1>SERVER BB</h1>" >/usr/local/nginx/htmlindex.html

    1.12

    echo "<h1>SERVER BB</h1>" >/usr/local/nginx/htmlindex.html
     
    测试haproxy:
    在浏览器输入192.168.1.10(默认访问80端口)

  • 相关阅读:
    IDEA常用快捷键
    mybatis动态sql总结
    端口被占用的问题解决 Web server failed to start. Port ×× was already in use
    java常见的面试题(二)
    java常见的面试题(一)
    Zookeeper学习总结
    Oracle 创建表空间及用户授权、dmp数据导入、表空间、用户删除
    Navicat远程连接服务器mysql
    HashMap的实现原理?如何保证HashMap线程安全?
    ArrayList和LinkedList内部是怎么实现的?他们之间的区别和优缺点?
  • 原文地址:https://www.cnblogs.com/fengyuanfei/p/13829008.html
Copyright © 2020-2023  润新知