首页 > 其他分享 >一键部署haproxy脚本

一键部署haproxy脚本

时间:2022-10-25 19:00:48浏览次数:45  
标签:haproxy 脚本 一键 echo LUA FILE HAPROXY DIR


HAPROXY_VERSION=2.6.6
HAPROXY_FILE=haproxy-${HAPROXY_VERSION}.tar.gz
#HAPROXY_FILE=haproxy-2.2.12.tar.gz
LUA_VERSION=5.4.4
LUA_FILE=lua-${LUA_VERSION}.tar.gz
#LUA_FILE=lua-5.4.3.tar.gz
HAPROXY_INSTALL_DIR=/apps/haproxy

SRC_DIR=/usr/local/src
CWD=`pwd`
CPUS=`lscpu |awk '/^CPU\(s\)/{print $2}'`
LOCAL_IP=$(hostname -I|awk '{print $1}')

STATS_AUTH_USER=admin
STATS_AUTH_PASSWORD=123456

VIP=192.168.100.100
MASTER1=192.168.100.101
MASTER2=192.168.100.102
MASTER3=192.168.100.103

. /etc/os-release

color () {
RES_COL=60
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
SETCOLOR_SUCCESS="echo -en \\033[1;32m"
SETCOLOR_FAILURE="echo -en \\033[1;31m"
SETCOLOR_WARNING="echo -en \\033[1;33m"
SETCOLOR_NORMAL="echo -en \E[0m"
echo -n "$1" && $MOVE_TO_COL
echo -n "["
if [ $2 = "success" -o $2 = "0" ] ;then
${SETCOLOR_SUCCESS}
echo -n $" OK "
elif [ $2 = "failure" -o $2 = "1" ] ;then
${SETCOLOR_FAILURE}
echo -n $"FAILED"
else
${SETCOLOR_WARNING}
echo -n $"WARNING"
fi
${SETCOLOR_NORMAL}
echo -n "]"
echo
}


check_file (){
if [ ! -e ${LUA_FILE} ];then
color "缺少${LUA_FILE}文件!" 1
exit
elif [ ! -e ${HAPROXY_FILE} ];then
color "缺少${HAPROXY_FILE}文件!" 1
exit
else
color "相关文件已准备!" 0
fi
}

install_packs () {
if [ $ID = "centos" -o $ID = "rocky" ];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
elif [ $ID = "ubuntu" ];then
apt update
apt -y install gcc make openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev libreadline-dev libsystemd-dev
else
color "不支持此操作系统!" 1
fi
[ $? -eq 0 ] || { color '安装软件包失败,退出!' 1; exit; }
}

install_lua () {
tar xf ${LUA_FILE} -C ${SRC_DIR}
LUA_DIR=${LUA_FILE%.tar*}
cd ${SRC_DIR}/${LUA_DIR}
make all test
}

install_haproxy(){
cd ${CWD}
tar xf ${HAPROXY_FILE} -C ${SRC_DIR}
HAPROXY_DIR=${HAPROXY_FILE%.tar*}
cd ${SRC_DIR}/${HAPROXY_DIR}
make -j ${CPUS} ARCH=x86_64 TARGET=linux-glibc USE_PROMEX=1 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编译安装成功" 0 || { color "HAPROXY编译安装失败,退出!" 1;exit; }
[ -L /usr/sbin/haproxy ] || ln -s ${HAPROXY_INSTALL_DIR}/sbin/haproxy /usr/sbin/
[ -d /etc/haproxy ] || mkdir /etc/haproxy
[ -d /var/lib/haproxy/ ] || mkdir -p /var/lib/haproxy/
cat > /etc/haproxy/haproxy.cfg <<-EOF
global
maxconn 100000
stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin
uid 99
gid 99
daemon

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}

#listen kubernetes-6443
# bind ${VIP}:6443
# mode tcp
# log global
# server ${MASTER1} ${MASTER1}:6443 check inter 3000 fall 2 rise 5
# server ${MASTER2} ${MASTER2}:6443 check inter 3000 fall 2 rise 5
# server ${MASTER3} ${MASTER2}:6443 check inter 3000 fall 2 rise 5

EOF

groupadd -g 99 haproxy
useradd -u 99 -g haproxy -d /var/lib/haproxy -M -r -s /sbin/nologin haproxy
}

start_haproxy () {
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
systemctl daemon-reload
systemctl enable --now haproxy
systemctl is-active haproxy &> /dev/null && color 'HAPROXY安装完成!' 0 || { color 'HAPROXY 启动失败,退出!' 1; exit; }
echo "-------------------------------------------------------------------"
echo -e "请访问链接: \E[32;1mhttp://${LOCAL_IP}:9999/haproxy-status\E[0m"
echo -e "用户和密码: \E[32;1m${STATS_AUTH_USER}/${STATS_AUTH_PASSWORD}\E[0m"
}

check_file
install_packs
install_lua
install_haproxy
start_haproxy

标签:haproxy,脚本,一键,echo,LUA,FILE,HAPROXY,DIR
From: https://blog.51cto.com/dayu/5795076

相关文章

  • HAProxy反向代理负载均衡实例
    1、环境准备:设备IP地址作用系统版本web110.0.0.18Nginx-Web服务器Rocky8.6web210.0.0.28Nginx-Web服务器Rocky8.6Haproxy172.20.0.248、10.0.0.101反向代理web+负载均衡Ubun......
  • 部署haproxy+keepalived高可用负载均衡器
    尽管HAProxy非常稳定,但仍然无法规避操作系统故障、主机硬件故障、网络故障甚至断电带来的风险。所以必须对HAProxy实施高可用方案。下面将介绍利用Keepalived实现的HAProxy......
  • Unity 脚本手册查询
    现实中某个词语不会的时候,一般别人的建议是查下字典,Unity中的API同样是这个道理。Unity中的API千千万,但一个人的记忆力是有限的,这个时候学会查询UnityAPI比死记硬背API要好......
  • Python制作自动填写脚本,100%准确率
    本次案例代码实现思路:本次案例代码实现思路:打开考试网站selenium-->浏览器驱动-->操作浏览器<模拟人的行为做操作浏览器>获取答案获取答案网站链接获取问题......
  • 火灾检测、人流量统计、安全帽检测,飞桨开源一键运行的产业案例教程
    随着以深度学习为代表的人工智能技术的成熟,国内众多行业都在基于人工智能技术推进行业变革与创新,积极探寻有效、有价值的应用场景进行商业化落地,其中尤以安防行业表现最为活......
  • getopts 解析Shell脚本命令行参数
      getopts命令是用来解析Shell脚本命令行参数的工具    #!/bin/bashset-eset-x##Globalvariablesworkspace=$PWD/$(dirname$0)readonlyworkspac......
  • 脚本将 Java 包打为 docker 镜像并重启
    DockerfileFROMopenjdk:11.0.16-jreADDbp.jarbp.jarEXPOSE9090ENTRYPOINT["java","-jar","-Dspring.profiles.active=cq","-Duser.timezone=Asia/Shanghai","......
  • shell脚本之函数
    一、函数概念及格式1、函数的概念函数定义:封装的可重复利用的具有特定功能的代码函数就是可以在shell脚本当中做出一个类似自定义执行的命令的东西,最大的功能就是简化......
  • shell脚本之数组
    一、数组的概念数组中可以存放多个值。BashShell只支持一维数组(不支持多维数组)。与大部分编程语言类似,数组元素的下标由0开始。Shell数组用括号来表示,元素用"空格......
  • 使用Shell脚本安装MySQL
    使用Shell脚本安装MySQL......