• HAProxy:第三方包及编译安装


    第三方安装包

    https://pkgs.org/download/haproxy #下载rpm包
    https://centos.pkgs.org/7/ius-x86_64/lua53u-libs-5.3.4-1.ius.centos7.x86_64.rpm.html #下载yum安装haproxy所依赖的lua的rpm包

    使用rpm包安装haproxy18u-1.8.20-1.el7.ius.x86_64.rpm时会提示liblua-5.3.so()(64bit),需要lua的版本为5.3,centos系统上的版本为5.1,所以需要升级系统上的lua;开发haproxy时调用的liblua是5.3及以上版本,但是centos上的lua版本太低。
    
    注:yum安装haproxy前需要先下载haproxy所需要的新版本的lua包,yum安装haproxy需要下载lua的rpm包,而不是下载lua的源码包;lua的源码包用于编译安装haproxy,lua的rpm包用于yum安装haproxy。
    
    [root@app ~]# wget https://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64//haproxy18u-1.8.20-1.el7.ius.x86_64.rpm  #下载haproxy包
    [root@app ~]# wget https://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64//lua53u-libs-5.3.4-1.ius.centos7.x86_64.rpm  #下载yum安装haproxy所需要的lua包
    [root@app ~]# yum install lua53u-libs-5.3.4-1.ius.centos7.x86_64.rpm -y
    [root@app ~]# yum install haproxy18u-1.8.20-1.el7.ius.x86_64.rpm -y
    

    lua简介

    HAProxy 支持基于lua实现功能扩展,lua是一种小巧的脚本语言,于1993年由巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组开发,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。
    
    Lua应用场景:
    游戏开发
    独立应用脚本
    Web 应用脚本
    扩展和数据库插件,如MySQL Proxy
    安全系统,如入侵检测系统
    

    编译安装HAProxy

    http://www.haproxy.org/ #haproxy源码包下载

    haproxy-2.0.12.tar.gz为稳定并且长期支持(LTS)的版本
    
    [root@app ~]$ yum install gcc libtermcap-devel ncurses-devel libevent-devel readline-devel -y   #安装编译lua所需要的底层库
    [root@app ~]$ wget http://www.lua.org/ftp/lua-5.3.5.tar.gz   #下载lua的源码包
    [root@app ~]$ tar xf lua-5.3.5.tar.gz -C /usr/local/src/
    [root@app ~]$ cd /usr/local/src/lua-5.3.5/
    [root@app lua-5.3.5]$ make linux test          #编译安装lua
    [root@app lua-5.3.5]$ src/lua -v       #查看编译安装完lua的版本信息
    [root@app lua-5.3.5]$ cd
    [root@app ~]$ yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel net-tools vim iotop bc zip unzip zlib-devel lrzsz tree screen lsof tcpdump wget ntpdate -y   #安装编译haproxy所需要的环境
    [root@app ~]$ wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.12.tar.gz
    [root@app ~]$ tar xf haproxy-2.0.12.tar.gz -C /usr/local/src/
    [root@app ~]$ cd /usr/local/src/haproxy-2.0.12/
    [root@app haproxy-2.0.12]$ make ARCH=x86_64 TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_CPU_AFFINITY=1 USE_LUA=1 LUA_INC=/usr/local/src/lua-5.3.5/src LUA_LIB=/usr/local/src/lua-5.3.5/src PREFIX=/apps/haproxy  #编译并指定开启的参数
    ARCH=x86_64  #CPU架构
    TARGET=linux-glibc  #通用linux内核
    USE_PCRE=1  #PCRE支持正则表达式,用于用户请求的uri
    USE_OPENSSL=1   #https,证书
    USE_ZLIB=1   #开启压缩
    USE_SYSTEMD=1   #使用systemd启动haproxy主进程
    USE_CPU_AFFINITY=1  #CPU亲和性,让haproxy指定的进程工作在指定的CPU核心上
    USE_LUA=1 LUA_INC=/usr/local/src/lua-5.3.5/src LUA_LIB=/usr/local/src/lua-5.3.5/src   #开启lua,及lua和lua库所在路径
    PREFIX=/apps/haproxy   #指定安装路径
    [root@app haproxy-2.0.12]$ make install PREFIX=/apps/haproxy    #生成的模块、文件和二进制程序拷贝到指定路径
    

    HAProxy启动脚本

    编译安装完的haproxy是没有配置文件和service文件的;编辑一个service文件
    
    [root@app ~]$ vim /usr/lib/systemd/system/haproxy.service
    [Unit]
    Description=HAProxy Load Balancer
    After=syslog.target network.target
    
    [Service]
    ExecStartPre=/apps/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c -q
    ExecStart=/apps/haproxy/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /var/lib/haproxy/haproxy.pid
    ExecReload=/bin/kill -USR2 $MAINPID
    
    [Install]
    WantedBy=multi-user.target
    

    创建并编辑haproxy配置文件

    [root@app ~]$ mkdir /etc/haproxy
    [root@app ~]$ vim /etc/haproxy/haproxy.cfg
    [root@app ~]$ vim /etc/haproxy/haproxy.cfg
    global
    maxconn 100000
    chroot /apps/haproxy
    stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin
    uid 99
    gid 99
    daemon
    #nbproc 4
    #cpu-map 1 0
    #cpu-map 2 1
    #cpu-map 3 2
    #cpu-map 4 3
    pidfile /var/lib/haproxy/haproxy.pid
    log 127.0.0.1 local3 info
    
    defaults
    option http-keep-alive
    option forwardfor
    maxconn 100000
    mode http
    timeout connect 300000ms
    timeout client 300000ms
    timeout server 300000ms
    
    listen stats
    mode http
    bind 0.0.0.0:9999
    stats enable
    log global
    stats uri /haproxy-status
    stats auth haadmin:q1w2e3r4ys
    
    listen web_port
    bind 192.168.38.37:80
    mode http
    log global
    server web1 127.0.0.1:80 check inter 3000 fall 2 rise 5 
    [root@app ~]$ mkdir /var/lib/haproxy/         #创建haproxy配置文件中,所指定存放pid和socket文件的目录
    [root@app ~]$ systemctl start haproxy
  • 相关阅读:
    @ResponseBody和@RequestBoby的作用
    项目Alpha冲刺Day9
    项目Alpha冲刺Day8
    项目Alpha冲刺Day7
    设计模式第三次作业
    项目Alpha冲刺Day6
    树莓派历程笔记
    项目Alpha冲刺Day5
    django获取ip与数据重复性判定
    在django模板中添加jquery
  • 原文地址:https://www.cnblogs.com/dongzhanyi123/p/12089885.html
Copyright © 2020-2023  润新知