准备编译环境
]# 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
解压源码包
]# cd /usr/local/src
]# tar zxvf haproxy-1.8.20.tar.gz
]# cd haproxy-1.8.20/
执行编译安装
]# 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
]# make install PREFIX=/usr/local/haproxy
拷贝程序文件
]# cp haproxy /usr/sbin/
准备启动脚本
]# vim /usr/lib/systemd/system/haproxy.service
[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target
[Service]
ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c -q
ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
创建 haproxy 用户
]# useradd haproxy -s /sbin/nologin
创建 socket 文件存放目录
]# mkdir /var/lib/haproxy
]# chown haproxy.haproxy /var/lib/haproxy/ -R
准备初始配置文件
]# mkdir /etc/haproxy
]# vim /etc/haproxy/haproxy.cfg
global
maxconn 100000
user haproxy
group haproxy
daemon
nbproc 1
pidfile /run/haproxy.pid
log 127.0.0.1 local3 info
chroot /usr/local/haproxy
stats socket /var/lib/haproxy/haproxy.socket mode 600 level admin
defaults
option redispatch
option abortonclose
option http-keep-alive
option forwardfor
maxconn 100000
mode http
timeout connect 10s
timeout client 20s
timeout server 30s
timeout check 5s
listen stats
bind :9999
stats enable
#stats hide-version
stats uri /haproxy-status
stats realm HAPorxy\ Stats\ Page
stats auth haadmin:123456
stats auth admin:123456
stats refresh 30s
stats admin if TRUE
配置 rsyslog 接收 haproxy 的日志
]# vim /etc/rsyslog.conf
local3.* /var/log/haproxy.log
$ModLoad imudp
$UDPServerRun 514
]# systemctl restart rsyslog
启动 haproxy 并设为开机启动
]# systemctl start haproxy
]# systemctl enable haproxy