zoukankan      html  css  js  c++  java
  • Haproxy安装与配置

    一、Haproxy概念

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

    二、安装Haproxy

    [root@node3 app]# tar zxvf haproxy-1.4.24.tar.gz
    [root@node3 app]# mv haproxy-1.4.24 haproxy
    [root@node3 app]# cd haproxy
    [root@node3 hadoop]# uname -a
    Linux node3 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009 i686 i686 i386 GNU/Linux
    [root@node3 haproxy]# make TARGET=linux24 prefix=/usr/local/haproxy
    gcc -Iinclude -Iebtree -Wall  -O2 -g -fno-strict-aliasing       -DTPROXY -DCONFIG_HAP_CRYPT -DENABLE_POLL -DNETFILTER -DUSE_GETSOCKNAME  -DCONFIG_HAPROXY_VERSION="1.4.24" -DCONFIG_HAPROXY_DATE="2013/06/17" 
              -DBUILD_TARGET='"linux24"' 
              -DBUILD_ARCH='""' 
              -DBUILD_CPU='"generic"' 
              -DBUILD_CC='"gcc"' 
              -DBUILD_CFLAGS='"-O2 -g -fno-strict-aliasing"' 
              -DBUILD_OPTIONS='""' 
               -c -o src/haproxy.o src/haproxy.c
    [root@node3 haproxy]# make install PREFIX=/usr/local/haproxy
    install -d /usr/local/haproxy/sbin
    install haproxy /usr/local/haproxy/sbin
    install -d /usr/local/haproxy/share/man/man1
    install -m 644 doc/haproxy.1 /usr/local/haproxy/share/man/man1
    install -d /usr/local/haproxy/doc/haproxy
    for x in configuration architecture haproxy-en haproxy-fr; do 
            install -m 644 doc/$x.txt /usr/local/haproxy/doc/haproxy ; 
        done

    三、配置Haproxy

        Haproxy配置中分成五部分内容,当然这些组件不是必选的,可以根据需要选择作为配置。

        •global:参数是进程级的,通常和操作系统(OS)相关。这些参数一般只设置一次,如果配置无误,就不需要再次配置进行修改;

        •default:配置默认参数的,这些参数可以被利用配置到frontend,backend,listen组件;

        •frontend:接收请求的前端虚拟节点,Frontend可以根据规则直接指定具体使用后端的backend(可动态选择);

        •backend:后端服务集群的配置,是真实的服务器,一个Backend对应一个或者多个实体服务器;

        •listen:Frontend和Backend的组合体。

        编写haproxy.cfg文件:

    global  
        maxconn 51200  
        chroot /usr/local/haproxy  
        uid 99  
        gid 99  
        daemon  
        #quiet  
        nbproc 1 #进程数  
        pidfile /usr/local/haproxy/logs/haproxy.pid  
      
    defaults  
            mode http #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK  
            #retries 2 #两次连接失败就认为是服务器不可用,也可以通过后面设置  
            option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器  
            option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接  
            timeout connect 5000ms #连接超时  
            timeout client 30000ms #客户端超时  
            timeout server 30000ms #服务器超时  
            #timeout check 2000 #=心跳检测超时  
            log 127.0.0.1 local0 err #[err warning info debug]  
            balance roundrobin                     #负载均衡算法  
    #        option  httplog                        #日志类别,采用httplog  
    #        option  httpclose   #每次请求完毕后主动关闭http通道,ha-proxy不支持keep-alive,只能模拟这种模式的实现  
    #        option  dontlognull  
    #        option  forwardfor  #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip  
      
    listen admin_stats  
            bind 0.0.0.0:8888 #监听端口  
            option httplog #采用http日志格式  
            stats refresh 30s #统计页面自动刷新时间  
            stats uri /stats #统计页面url  
            stats realm Haproxy Manager #统计页面密码框上提示文本  
            stats auth admin:admin #统计页面用户名和密码设置  
            #stats hide-version #隐藏统计页面上HAProxy的版本信息  
      
    listen test1  
            bind :12345  
            mode tcp  
            server t1 192.168.1.101:8881  
            server t2 192.168.1.102:8881  
      
    listen test2 :80  
           option httpclose  
           option forwardfor  
            server s1 192.168.1.101:8080 check weight 1 minconn 1 maxconn 3 check inter 40000        
            server s2 192.168.1.102:8080 check weight 1 minconn 1 maxconn 3 check inter 40000  

    四、启动Haproxy

    [root@node3 haproxy]# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
    [root@node3 app]# ps -ef |grep haproxy |grep -v grep
    root      6950     1  0 19:35 ?        00:00:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg

     五、通过脚本来启动与关闭haproxy

        1、编写haproxy脚本

    [root@node3 ~]# cat /etc/rc.d/init.d/haproxy
    #!/bin/bash  
    BASE_DIR="/usr/local/haproxy"  
    ARGV="$@"  
      
    start()  
    {  
    echo "START HAPoxy SERVERS"  
    $BASE_DIR/sbin/haproxy -f $BASE_DIR/haproxy.cfg  
    }  
      
    stop()  
    {  
    echo "STOP HAPoxy Listen"  
    kill -TTOU $(cat $BASE_DIR/logs/haproxy.pid)  
    echo "STOP HAPoxy process"  
    kill -USR1 $(cat $BASE_DIR/logs/haproxy.pid)  
    }  
    case $ARGV in  
      
    start)  
    start  
    ERROR=$?  
    ;;  
      
    stop)  
    stop  
    ERROR=$?  
    ;;  
      
    restart)  
    stop  
    start  
    ERROR=$?  
    ;;  
      
    *)  
    echo "hactl.sh [start|restart|stop]"  
    esac  
    exit $ERROR  

        2、让脚本随系统自动启动

    [root@node3 ~]# chmod +x /etc/rc.d/init.d/haproxy 
    [root@node3 ~]# chkconfig --add haproxy
    service haproxy does not support chkconfig
    ----解决上面的问题的办法是在/etc/rc.d/init.d/haproxy中添加下面两句到#!/bin/bash之后
    [root@node3 ~]# cat /etc/rc.d/init.d/haproxy
    #!/bin/bash  
    #chkconfig: 2345 10 90
    #description:haproxy
    BASE_DIR="/usr/local/haproxy"  
    ARGV="$@"  
      
    start()  
    ----其中2345是默认启动级别,级别有0-6共7个级别。
    ----等级0表示:表示关机
    ----等级1表示:单用户模式
    ----等级2表示:无网络连接的多用户命令行模式
    ----等级3表示:有网络连接的多用户命令行模式
    ----等级4表示:不可用
    ----等级5表示:带图形界面的多用户模式
    ----等级6表示:重新启动
    ----10是启动优先级,90是停机优先级,优先级范围是0-100,数字越大,优先级越低。

        3、启动与停止haproxy

    [root@node3 ~]# service haproxy stop
    STOP HAPoxy Listen
    STOP HAPoxy process
    [root@node3 ~]# ps -ef |grep haproxy |grep -v grep
    
    [root@node3 ~]# service haproxy start
    START HAPoxy SERVERS
    [root@node3 ~]# ps -ef |grep haproxy |grep -v grep
    root     11259     1  0 15:33 ?        00:00:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
  • 相关阅读:
    Windows 8实例教程系列 开篇
    qt 开发发布于 windeploy.exe
    qt qoci 测试验证
    vmware vmx 版本不兼容
    qt oracle
    vc qt dll
    QOCIDriver unable to create environment
    qoci 编译完 放置位置 具体根据情况
    calling 'lastError' with incomplete return type 'QSqlError' qsqlquer
    Hbase 操作工具类
  • 原文地址:https://www.cnblogs.com/Richardzhu/p/3344676.html
Copyright © 2011-2022 走看看