zoukankan      html  css  js  c++  java
  • 安装haproxy和haproxy命令

    HaProxy系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html


    1.安装haproxy

    CentOS自带了haproxy,但可能版本比较老。可以在IUS源上找到最新稳定版的haproxy。

    cat <<eof>/etc/yum.repos.d/ius.repo
    [ius]
    name=iusrepo
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/ius/stable/CentOS/$releasever/$basearch
    gpgcheck=0
    enable=1
    eof
    
    yum -y install haproxy17u
    

    以下是编译安装haproxy-1.7.10的过程。

    编译安装haproxy时,可以借助于pcre环境,该环境下编译时借助正则表达式分析编译速度会快很多,但是没有该环境也可以安装。

    yum -y install pcre pcre-devel
    tar xf haproxy-1.7.10.tar.gz 
    cd haproxy-1.7.10
    make TARGET=linux2628 ARCH=x86_64 PREFIX=/usr/local/haproxy USE_PCRE=1
    make install PREFIX=/usr/local/haproxy
    

    make时需要使用TARGET指定内核及版本,版本如下:

    - 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 5.7 and above
    - aix51       for AIX 5.1
    - aix52       for AIX 5.2
    - cygwin      for Cygwin
    - haiku       for Haiku
    - generic     for any other OS or version.
    - custom      to manually adjust every setting
    

    使用ARCH指定架构,不过ARCH选项可省。使用USE_PCRE=1表示使用PCRE环境编译,加快编译速度。

    编译安装完成后,只有3个目录:doc、share和sbin,sbin里面只有一个haproxy的主程序haproxy。为了方便管理haproxy服务,可以从yum安装的haproxy中复制/etc/init.d/haproxy

    2.haproxy命令

    详细内容参见:http://cbonte.github.io/haproxy-dconv/1.8/management.html

    常用的几个:

    # 检查配置文件语法
    haproxy -c -f /etc/haproxy/haproxy.cfg
    
    # 以daemon模式启动,以systemd管理的daemon模式启动
    haproxy -D -f /etc/haproxy/haproxy.cfg [-p /var/run/haproxy.pid]
    haproxy -Ds -f /etc/haproxy/haproxy.cfg [-p /var/run/haproxy.pid]
    
    # 启动调试功能,将显示所有连接和处理信息在屏幕
    haproxy -d -f /etc/haproxy/haproxy.cfg
    
    # restart。需要使用st选项指定pid列表
    haproxy -f /etc/haproxy.cfg [-p /var/run/haproxy.pid] -st `cat /var/run/haproxy.pid`
    
    # graceful restart,即reload。需要使用sf选项指定pid列表
    haproxy -f /etc/haproxy.cfg [-p /var/run/haproxy.pid] -sf `cat /var/run/haproxy.pid`
    
    # 显示haproxy编译和启动信息
    haproxy -vv

    需要注意的是,restart会直接关掉旧进程并建立新进程,所以会丢弃大量已建立的连接,而reload会启动新进程,但旧进程会先处理完当前已建立连接然后再关闭。但是,reload仍然会丢弃极少量的连接,虽然大多数情况下这足够完美了,但是在极度严格的环境下,这是不允许的。在haproxy 1.8中,提供了完全不丢弃连接的无损重启,要求haproxy启动命令中加入-x选项,同时要求haproxy配置文件的"stats socket"配置中加入expose-fd listeners,比如:

    stats socket /var/run/haproxy.sock mode 600 expose-fd listeners level user

    使用-x选项以及expose-fd listeners之后,reload haproxy的时候,会将已建立TCP连接(TCP套接字)转移到Unix Domain状态套接字中进行处理。

    有人做了测试,并行200个测试,每个测试发送10000个请求,在这种环境下各种重启方式会导致的失败率和响应时间。

    Test #req/users #fail resp avg 95% resp
    baseline 10k/200 0 513ms 560ms
    restart 0.2 10k/200 4332 147ms 253ms
    reload 0.2 (legacy) 10k/200 10 455ms 815ms
    reload 0.2 (socket) 10k/200 0 567ms 852ms
  • 相关阅读:
    何时使用Entity或DTO
    Lombok简介
    Spring Boot实现STOMP协议的WebSocket
    Java泛型构造函数
    Java 8 Comparator: 列表排序
    Spring Boot + Elastic stack 记录日志
    Sping、SpringMVC、SpringBoot的对比
    FileChannel指南
    让Spring Boot启动更快
    架构级开闭原则
  • 原文地址:https://www.cnblogs.com/f-ck-need-u/p/8546010.html
Copyright © 2011-2022 走看看