zoukankan      html  css  js  c++  java
  • 负载均衡器之 Haproxy

    1. 编译安装haproxy

    官网: http://www.haproxy.org

    1.1 下载haproxy

    # wget http://www.haproxy.org/download/1.6/src/haproxy-1.6.14.tar.gz

    1.2 解压haproxy

    # tar xf haproxy-1.6.14.tar.gz

    1.3 查看编译方法

    # less README
    
    下面选自README
    To build haproxy, you have to choose your target OS amongst the following ones
    and assign it to the TARGET variable :
    
      - linux22     for Linux 2.2
      - linux24     for Linux 2.4 and above (default)
      - linux24e    for Linux 2.4 with support for a working epoll (> 0.21)
      - linux26     for Linux 2.6 and above
      - linux2628   for Linux 2.6.28, 3.x, and above (enables splice and tproxy)
      - solaris     for Solaris 8 or 10 (others untested)
      - freebsd     for FreeBSD 5 to 10 (others untested)
      - netbsd      for NetBSD
      - osx         for Mac OS/X
      - openbsd     for OpenBSD 3.1 and above
      - aix51       for AIX 5.1
      - aix52       for AIX 5.2
      - cygwin      for Cygwin
      - generic     for any other OS or version.
      - custom      to manually adjust every setting
    
    
    By default, the DEBUG variable is set to '-g' to enable debug symbols. It is
    not wise to disable it on uncommon systems, because it's often the only way to
    get a complete core when you need one. Otherwise, you can set DEBUG to '-s' to
    strip the binary.
    
    For example, I use this to build for Solaris 8 :
    
        $ make TARGET=solaris CPU=ultrasparc USE_STATIC_PCRE=1
    
    And I build it this way on OpenBSD or FreeBSD :
    
        $ gmake TARGET=freebsd USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1
    
    And on a classic Linux with SSL and ZLIB support (eg: Red Hat 5.x) :
    
        $ make TARGET=linux26 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1
    
    And on a recent Linux >= 2.6.28 with SSL and ZLIB support :
    
        $ make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1
    
    In order to build a 32-bit binary on an x86_64 Linux system with SSL support
    without support for compression but when OpenSSL requires ZLIB anyway :
    
        $ make TARGET=linux26 ARCH=i386 USE_OPENSSL=1 ADDLIB=-lz

    1.4 安装:

    # make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1
    安装方法是根据自己内核版本来了,具体查看内核的方法:
    # uname -a
    
    # make install PREFIX=/usr/local/haproxy

    2. haproxy最简单的配置

    2.1 拷贝配置文件 

    # mkdir -p /usr/local/haproxy/conf/
    # cp -a examples/content-sw-sample.cfg /usr/local/haproxy/conf/
    # mv /usr/local/haproxy/conf/content-sw-sample.cfg /usr/local/haproxy/conf/http_haproxy.conf

    配置配置文件如下

    # cat http_haproxy.conf | grep -v "#"
    
    global
            maxconn         100
            log             127.0.0.1 local0
            uid             501
            gid             501
            chroot          /usr/local/haproxy/var
            daemon
    
    frontend public
            bind            192.168.31.243:81 name clear
            mode            http
            default_backend dynamic
            timeout client  30s
    
    backend dynamic
            mode            http
            timeout connect 5s
            timeout server  30s
            timeout queue   30s
            balance         roundrobin
            server          server_01 192.168.31.243:80 minconn 50 maxconn 500 check inter 1000
            server          server_02 192.168.31.150:80 minconn 50 maxconn 500 check inter 1000
    # 

    2.2 检查语法

    # ./haproxy -f /usr/local/haproxy/conf/http_haproxy.conf -c 
    Configuration file is valid
    #

    2.3 测试访问

    # netstat -tulnp | grep haproxy
    tcp        0      0 192.168.31.243:81           0.0.0.0:*                   LISTEN      2243/./haproxy      
    #
    
    # curl -I http://192.168.31.243:81/
    HTTP/1.1 200 OK
    Server: nginx/1.14.2
    Date: Mon, 07 Jan 2019 08:10:13 GMT
    Content-Type: text/html
    Content-Length: 636
    Last-Modified: Tue, 18 Dec 2018 06:51:02 GMT
    ETag: "5c1898d6-27c"
    Accept-Ranges: bytes
    
    # curl -I http://192.168.31.243:80
    HTTP/1.1 200 OK
    Server: nginx/1.14.2
    Date: Mon, 07 Jan 2019 08:10:16 GMT
    Content-Type: text/html
    Content-Length: 636
    Last-Modified: Tue, 18 Dec 2018 06:51:02 GMT
    Connection: keep-alive
    ETag: "5c1898d6-27c"
    Accept-Ranges: bytes
    
    # 

    3. 出现的问题和解决的办法

    3.1 haproxy 默认log不输出的问题

    在haproxy配置文件中,指定了 log 输出为 local0 之后,同时也在 /etc/rsyslog.conf 配置了

    local0.*                                                /var/log/haproxy.log

    发现还是不行,最后发现UDPServer未开启导致的,

    # cat /etc/rsyslog.conf | grep "UDPServerRun"
    $UDPServerRun 514
    #

    UDPServerRun 514 需要打开
    验证是否打开
    # netstat -tulnp | grep 514
    udp        0      0 0.0.0.0:514                 0.0.0.0:*                               2772/rsyslogd       
    udp        0      0 :::514                      :::*                                    2772/rsyslogd       
    # 

     

    欢迎转发! 请保留源地址: https://www.cnblogs.com/NoneID
  • 相关阅读:
    cesium图形上加载图片
    cesium可视化空间数据2
    linux命令之用户和用户组
    YARN应用程序开发和设计流程
    Yarn中几个专用名称
    break、continue、return之间的区别与联系
    kafka的相关操作脚本
    scala函数进阶篇
    scala的基础部分
    视图
  • 原文地址:https://www.cnblogs.com/NoneID/p/10259821.html
Copyright © 2011-2022 走看看