zoukankan      html  css  js  c++  java
  • haproxy

    haproxy 1.8.3版本编译安装

    阅读(363)

      1.7和1.8版本的haproxy 略有不同,从1.8.3版本开始,haproxy支持单主进程多子进程模式,类似于的Nginx的单master process进程多worker process结构,haproxy 1.8.3之前的版本是多个主进程,haproxy 1.8.3安装的时候需要安装systemd-devel提供底层编译支持,否则编译安装haproxy 的时候会报错,并且使用Ws参数启动haproxy主进程,之前的版本没有此参数,具体过程参考如下:

    1.1:下载并编译安装haproxy-1.8.3:

    [root@bj-zw-comm-lb-h-25-3 ~]# cd /usr/local/src/
    #安装基础依赖包,必须安装system-devel,如果不安装会报错
    [root@bj-zw-comm-lb-h-25-3 src]# 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
    [root@bj-zw-comm-lb-h-25-3 src]# tar xvf haproxy-1.8.3.tar.gz
    [root@bj-zw-comm-lb-h-25-3 src]# cd haproxy-1.8.3/
    #USE_CPU_AFFINITY=1 为开启haproxy进程与CPU核心绑定,USE_SYSTEMD=1为支持使用 -Ws参数(systemd-aware master-worker 模式)启动Haproxy,从而实现单主进程多子进程运行模式。
    [root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# make  ARCH=x86_64 TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1  USE_CPU_AFFINITY=1  PREFIX=/usr/local/haproxy
    [root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# make install PREFIX=/usr/local/haproxy
    [root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# cp haproxy  /usr/sbin/

    1.2:准备启动脚本文件:

    [Unit]
    Description=HAProxy Load Balancer
    After=syslog.target network.target
    
    [Service]
    #支持多配置文件读取,类似于从侧面是实现配置文件的include功能。
    ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf -c -q
    ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf -p /run/haproxy.pid
    ExecReload=/bin/kill -USR2 $MAINPID
    
    [Install]
    WantedBy=multi-user.target

    1.3:验证haproxy版本:

    [root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# haproxy -v
    HA-Proxy version 1.8.3-205f675 2017/12/30
    Copyright 2000-2017 Willy Tarreau <willy@haproxy.org>

    1.4:定义简单haproxy配置文件:

    [root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# mkdir  /etc/haproxy
    [root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# mkdir  /etc/haprox/conf
    [root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# cat  /etc/haproxy/haproxy.cfg 
    global
    maxconn 100000
    chroot /usr/local/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 /usr/local/haproxy/run/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 0.0.0.0:80
     mode http
     log global
     server web1  127.0.0.1:8080  check inter 3000 fall 2 rise 5

    1.5:启动验证haproxy状态:

    1.5.1:以下是1.8.3版本的单主进程多子进程模式:

    [root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# systemctl daemon-reload
    [root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# systemctl  restart haproxy
    [root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# cat /run/haproxy.pid 
    41998
    [root@bj-zw-comm-lb-h-25-3 haproxy-1.8.3]# ps -ef | grep haproxy
    root      41998      1  0 16:27 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
    nobody    41999  41998  0 16:27 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
    nobody    42000  41998  0 16:27 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
    nobody    42001  41998  0 16:27 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
    nobody    42002  41998  0 16:27 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
    root      42186  10580  0 16:28 pts/14   00:00:00 grep --color=auto haproxy

    1.5.2:以下是1.7版本的传统多进程的haproxy模式:

    [root@docker-server4 ~]# ps -ef | grep haproxy
    root     118786      1  0 17:10 ?        00:00:00 /usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
    root     118787 118786  0 17:10 ?        00:00:00 [haproxy] <defunct>
    nobody   118788      1  6 17:10 ?        00:00:00 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
    nobody   118789      1  6 17:10 ?        00:00:00 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
    nobody   118790      1  3 17:10 ?        00:00:00 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
    nobody   118791      1  5 17:10 ?        00:00:00 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
    root     118814  99636  0 17:10 pts/0    00:00:00 grep --color=auto haproxy

    1.5.3:以下是Nginx的单主进程多子进程模式,此模式和1.8.3版本的haproxy工作模式是类似的:

    [root@docker-server5 ~]# ps -ef | grep nginx
    root     13399     1  0 Jan06 ?        00:00:01 nginx: master process /apps/tengine/sbin/nginx -s start
    devops   22165 22122  0 16:20 pts/0    00:00:00 grep --color=auto nginx
    zceo     22915 13399  0 Jan13 ?        00:41:41 nginx: worker process
    zceo     22916 13399  0 Jan13 ?        00:41:59 nginx: worker process
    zceo     22917 13399  0 Jan13 ?        00:41:38 nginx: worker process
    zceo     22918 13399  0 Jan13 ?        00:41:32 nginx: worker process
    zceo     22919 13399  0 Jan13 ?        00:41:22 nginx: worker process
    zceo     22920 13399  0 Jan13 ?        00:41:40 nginx: worker process
    zceo     22921 13399  0 Jan13 ?        00:42:07 nginx: worker process
    zceo     22922 13399  0 Jan13 ?        00:41:40 nginx: worker process

    1.5.4:以下是apache的单主进程多子进程模式,也和1.8.3版本的haproxy工作模式类似:

    [root@ztouch-cluster12-web1 ~]# ps -ef | grep apache
    root      6758     1  0 11:01 ?        00:00:00 /usr/local/apache2.2.17/bin/httpd -k start
    webshop   6760  6758  0 11:01 ?        00:00:00 /usr/local/apache2.2.17/bin/httpd -k start
    webshop   6761  6758  0 11:01 ?        00:00:02 /usr/local/apache2.2.17/bin/httpd -k start
    webshop   6762  6758  0 11:01 ?        00:00:03 /usr/local/apache2.2.17/bin/httpd -k start
    webshop   6764  6758  0 11:01 ?        00:00:03 /usr/local/apache2.2.17/bin/httpd -k start
    webshop   6770  6758  0 11:01 ?        00:00:03 /usr/local/apache2.2.17/bin/httpd -k start
    webshop   6771  6758  0 11:01 ?        00:00:03 /usr/local/apache2.2.17/bin/httpd -k start
    webshop   6780  6758  0 11:01 ?        00:00:02 /usr/local/apache2.2.17/bin/httpd -k start
    root      8076  8038  0 11:50 pts/2    00:00:00 grep apache
  • 相关阅读:
    JSP自定义标签
    Java集合之Arrays 剖析
    关于Java8中的Comparator那些事
    关于Comparable和Comparator那些事
    浅析Thread的join() 方法
    多线程的具体实现
    如何实现 List 集合的线程安全
    集合使用 Iterator 删除元素
    Tomcat目录详解
    一文读懂微服务架构
  • 原文地址:https://www.cnblogs.com/you0329/p/8590394.html
Copyright © 2011-2022 走看看