下载并编译安装haproxy-1.8.3:
[root@localhost ~]# cd /usr/local/src/
#安装基础依赖包,必须安装system-devel,如果不安装会报错
[root@localhost 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@localhost src]# tar xvf haproxy-1.8.3.tar.gz
[root@localhost src]# cd haproxy-1.8.3/
#USE_CPU_AFFINITY=1 为开启haproxy进程与CPU核心绑定,USE_SYSTEMD=1为支持使用 -Ws参数(systemd-aware master-worker 模式)启动Haproxy,从而实现单主进程多子进程运行模式。
[root@localhost 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@localhost haproxy-1.8.3]# make install PREFIX=/usr/local/haproxy
[root@localhost haproxy-1.8.3]# cp haproxy /usr/sbin/
准备启动脚本文件:
[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
验证haproxy版本:
[root@localhost haproxy-1.8.3]# haproxy -v
HA-Proxy version 1.8.3-205f675 2017/12/30
Copyright 2000-2017 Willy Tarreau <willy@haproxy.org>
定义简单haproxy配置文件:
[root@localhost ~]# mkdir /etc/haproxy
[root@localhost ~]# mkdir /etc/haprox/conf
[root@localhost ~]# 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
启动验证haproxy状态:
以下是1.8.3版本的单主进程多子进程模式:
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart haproxy
[root@localhost ~]# 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.7版本的传统多进程的haproxy模式:
[root@localhost ~]# 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