#!/bin/bash
LUA_PKG="lua-5.3.5.tar.gz"
LUA_DIR="lua-5.3.5"
HAPROXY_PKG="haproxy-2.0.15.tar.gz"
HAPROXY_DIR="haproxy-2.0.15"
HAPROXY_VER="2.0.15"
function install_system_package(){
grep "Ubuntu" /etc/issue &> /dev/null
if [ $? -eq 0 ];then
apt update
apt install iproute2 ntpdate make tcpdump telnet traceroute nfs-kernel-server nfs-common lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev ntpdate tcpdump telnet traceroute gcc openssh-server lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev ntpdate tcpdump telnet traceroute iotop unzip zip libreadline-dev libsystemd-dev -y
fi
grep "Kernel" /etc/issue &> /dev/null
if [ $? -eq 0 ];then
yum install vim iotop bc gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel zip unzip zlib-devel net-tools lrzsz tree ntpdate telnet lsof tcpdump wget libevent libevent-devel bc systemd-devel bash-completion traceroute psmisc -y
fi
}
function install_lua(){
cd /usr/local/src && tar xvf ${LUA_PKG} && cd ${LUA_DIR} && make linux test
}
function haproxy.service_file(){
cd /usr/local/src
cat > haproxy.service <<EOF
[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 /var/lib/haproxy/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
EOF
function haproxy.cfg_file(){
cd /usr/local/src
cat > haproxy.cfg <<EOF
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:123456
listen web_port
bind 0.0.0.0:8899
mode http
log global
server web1 127.0.0.1:8080 check inter 3000 fall 2 rise 5
EOF
function install_haptroxy(){
if -d /etc/haproxy;then
echo "HAProxy 已经安装,即将退出安装过程!"
else
mkdir -p /var/lib/haproxy /etc/haproxy
cd /usr/local/src && tar xvf ${HAPROXY_PKG} && cd ${HAPROXY_DIR} && 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 && make install PREFIX=/apps/haproxy && cp haproxy /usr/sbin/
\cp /usr/local/src/haproxy.cfg /etc/haproxy/haproxy.cfg
\cp /usr/local/src/haproxy.service /lib/systemd/system/haproxy.service
systemctl daemon-reload && systemctl restart haproxy && systemctl enable haproxy
killall -0 haproxy
if [ $? -eq 0 ];then
echo "HAProxy ${HAPROXY_VER} 安装成功!" && echo "即将退出安装过程!" && sleep 1
else
echo "HAProxy ${HAPROXY_VER} 安装失败!" && echo "即将退出安装过程!" && sleep 1
fi
fi
}
main(){
install_system_package
install_lua
haproxy.service_file
haproxy.cfg_file
install_haptroxy
}
main