mirror of
https://github.com/raymond999999/shell.git
synced 2026-03-12 17:51:35 +08:00
132 lines
4.3 KiB
Bash
132 lines
4.3 KiB
Bash
#!/bin/bash
|
||
#
|
||
#**********************************************************************************************
|
||
#Author: Raymond
|
||
#QQ: 88563128
|
||
#Date: 2021-12-29
|
||
#FileName: install_haproxy.sh
|
||
#URL: raymond.blog.csdn.net
|
||
#Description: The test script
|
||
#Copyright (C): 2021 All rights reserved
|
||
#*********************************************************************************************
|
||
SRC_DIR=/usr/local/src
|
||
COLOR="echo -e \\033[01;31m"
|
||
END='\033[0m'
|
||
CPUS=`lscpu |awk '/^CPU\(s\)/{print $2}'`
|
||
|
||
#lua下载地址:http://www.lua.org/ftp/lua-5.4.3.tar.gz
|
||
LUA_FILE=lua-5.4.3.tar.gz
|
||
|
||
#haproxy下载地址:https://www.haproxy.org/download/2.4/src/haproxy-2.4.10.tar.gz
|
||
HAPROXY_FILE=haproxy-2.4.10.tar.gz
|
||
HAPROXY_INSTALL_DIR=/apps/haproxy
|
||
|
||
STATS_AUTH_USER=admin
|
||
STATS_AUTH_PASSWORD=123456
|
||
|
||
os(){
|
||
OS_ID=`sed -rn '/^NAME=/s@.*="([[:alpha:]]+).*"$@\1@p' /etc/os-release`
|
||
}
|
||
|
||
check_file (){
|
||
cd ${SRC_DIR}
|
||
${COLOR}'检查Haproxy相关源码包'${END}
|
||
if [ ! -e ${LUA_FILE} ];then
|
||
${COLOR}"缺少${LUA_FILE}文件,请把文件放到${SRC_DIR}目录下"${END}
|
||
exit
|
||
elif [ ! -e ${HAPROXY_FILE} ];then
|
||
${COLOR}"缺少${HAPROXY_FILE}文件,请把文件放到${SRC_DIR}目录下"${END}
|
||
exit
|
||
else
|
||
${COLOR}"相关文件已准备好"${END}
|
||
fi
|
||
}
|
||
|
||
install_haproxy(){
|
||
[ -d ${HAPROXY_INSTALL_DIR} ] && { ${COLOR}"Haproxy已存在,安装失败"${END};exit; }
|
||
${COLOR}"开始安装Haproxy"${END}
|
||
${COLOR}"开始安装Haproxy依赖包"${END}
|
||
if [ ${OS_ID} == "CentOS" -o ${OS_ID} == "Rocky" ] &> /dev/null;then
|
||
yum -y install gcc make gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel libtermcap-devel ncurses-devel libevent-devel readline-devel &> /dev/null
|
||
else
|
||
apt update &> /dev/null;apt -y install gcc make openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev libreadline-dev libsystemd-dev &> /dev/null
|
||
fi
|
||
tar xf ${LUA_FILE}
|
||
LUA_DIR=`echo ${LUA_FILE} | sed -nr 's/^(.*[0-9]).([[:lower:]]).*/\1/p'`
|
||
cd ${LUA_DIR}
|
||
make all test
|
||
cd ${SRC_DIR}
|
||
tar xf ${HAPROXY_FILE}
|
||
HAPROXY_DIR=`echo ${HAPROXY_FILE} | sed -nr 's/^(.*[0-9]).([[:lower:]]).*/\1/p'`
|
||
cd ${HAPROXY_DIR}
|
||
make -j ${CPUS} 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=${SRC_DIR}/${LUA_DIR}/src/ LUA_LIB=${SRC_DIR}/${LUA_DIR}/src/ PREFIX=${HAPROXY_INSTALL_DIR}
|
||
make install PREFIX=${HAPROXY_INSTALL_DIR}
|
||
[ $? -eq 0 ] && $COLOR"Haproxy编译安装成功"$END || { $COLOR"Haproxy编译安装失败,退出!"$END;exit; }
|
||
cat > /lib/systemd/system/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
|
||
[ -L /usr/sbin/haproxy ] || ln -s ../..${HAPROXY_INSTALL_DIR}/sbin/haproxy /usr/sbin/ &> /dev/null
|
||
[ -d /etc/haproxy ] || mkdir /etc/haproxy &> /dev/null
|
||
[ -d /var/lib/haproxy/ ] || mkdir -p /var/lib/haproxy/ &> /dev/null
|
||
cat > /etc/haproxy/haproxy.cfg <<-EOF
|
||
global
|
||
maxconn 100000
|
||
chroot ${HAPROXY_INSTALL_DIR}
|
||
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 ${STATS_AUTH_USER}:${STATS_AUTH_PASSWORD}
|
||
EOF
|
||
cat >> /etc/sysctl.conf <<-EOF
|
||
net.ipv4.ip_nonlocal_bind = 1
|
||
EOF
|
||
sysctl -p &> /dev/null
|
||
echo "PATH=${HAPROXY_INSTALL_DIR}/sbin:${PATH}" > /etc/profile.d/haproxy.sh
|
||
systemctl daemon-reload
|
||
systemctl enable --now haproxy &> /dev/null
|
||
systemctl is-active haproxy &> /dev/null && ${COLOR}"Haproxy 服务启动成功!"${END} || { ${COLOR}"Haproxy 启动失败,退出!"${END} ; exit; }
|
||
${COLOR}"Haproxy安装完成"${END}
|
||
}
|
||
|
||
main(){
|
||
os
|
||
check_file
|
||
install_haproxy
|
||
}
|
||
|
||
main
|