【Linux】使用Shell脚本创建主备Nginx软负载服务

本文提供了一个bash脚本,用于快速部署Keepalived和Nginx的双机热备负载均衡环境。脚本包括磁盘分区、安装依赖、配置及启动服务等步骤,显著减少了手动安装的时间,从约3小时缩短到5-10分钟。此外,脚本还涉及到Nginx的配置文件和Keepalived的状态检查脚本。

应用场景:使用Keepalived + Nginx,搭建两台(主、备)软负载服务器。

脚本功能

1)磁盘分区,创建PV、VG、LV,磁盘格式化,文件系统挂载;

2)安装依赖包;

3)安装和配置(提前配置好的文件)Nginx、Keepalived;

4)启动相关服务;

测试环境

1)虚拟机单独挂载了一块/dev/vdb的独立磁盘(50GB)作为数据盘,与系统盘分开;

2)系统提前挂载了在线的yum源;

3)提前准备好相关的配置文件,如:nginx.conf、keepalived.conf、chk_nginx.sh;

#! /bin/bash

####################################################
#
# Function: install nginx and keepalived
# version: 1.0
# Date: 2022/11/9
#
####################################################

echo "=============================="
PS3="chose which disk you want to create:"
select W in `ls /dev/vd*|grep -o 'vd[b-z]'|uniq` quit
do
        case $W in
        vda)
            fdisk -l /dev/vda
            break;;
        vd[b-z])
             echo "n
                     p



                        t
                         8e
                           w" | fdisk /dev/$W
        break;;
        quit)
        break;;
        *)
        echo "Wrong disk choice, check again!";;
        esac
done

pvcreate /dev/vdb1
vgcreate vg /dev/vdb1
lvcreate -L 49.9G -n data vg
mke2fs -t ext4 -b 4096 /dev/vg/data
cd /
mkdir data
mount  /dev/vg/data /data

cat >> /etc/fstab << EOF
/dev/mapper/vg-data      /data                  ext4      defaults        0 0
EOF

echo "Start to install dependent rpms by on-line yum."
yum install -y curl gcc gcc-c++ libnl libnl-devel libnl3-devel libnfnetlink-devel net-snmp-devel openssl openssl-devel patch pcre pcre-devel telnet zlib zlib-devel

nginx_version=1.22.1
keepalived_version=2.2.7
work_dir=/usr/local/src

cd $work_dir
echo "Start to install Nginx-"${nginx_version}".tar.gz"
tar -xzf ./nginx-${nginx_version}.tar.gz
rm -f ./nginx-${nginx_version}.tar.gz

echo "Start to configure and install nginx-"${nginx_version}
cd ./nginx-${nginx_version}
./configure --prefix=/data/nginx --with-threads
make
make install

cp -f $work_dir/master/nginx.conf /data/nginx/conf
cp -f $work_dir/html/403.html /data/nginx/html
cp -f $work_dir/html/404.html /data/nginx/html
mv /data/nginx/html/index.html /data/nginx/html/index_html

echo "Start to install keepalived-"${keepalived_version}".tar.gz"
mkdir -p /usr/local/keepalived /etc/keepalived
cd $work_dir
tar -xzf ./keepalived-${keepalived_version}.tar.gz
rm -f ./keepalived-${keepalived_version}.tar.gz

cd $work_dir/keepalived-${keepalived_version}
./configure --prefix=/usr/local/keepalived --sysconfdir=/etc/keepalived
make
make install

cp -f $work_dir/common/keepalived.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl enable keepalived.service

cp -f $work_dir/master/keepalived.conf /etc/keepalived/
cp -f $work_dir/common/chk_nginx.sh /etc/keepalived/
chmod u+x /etc/keepalived/chk_nginx.sh

cp $work_dir/keepalived-2.2.7/keepalived/etc/init.d/keepalived /etc/init.d
cp $work_dir/keepalived-2.2.7/keepalived/etc/sysconfig/keepalived /etc/sysconfig
cp $work_dir/keepalived-2.2.7/keepalived/etc/keepalived/keepalived.conf.sample /etc/keepalived
cp $work_dir/keepalived-2.2.7/bin/keepalived /usr/sbin

systemctl enable keepalived.service
systemctl start keepalived.service
systemctl status keepalived.service

备注:这个脚本本身并没有什么技术含量,但是通过这个脚本可以将大约三个小时(两台虚拟机)的手工安装操作时长,缩减到5至10分钟。另外,频繁的安装,确实很无聊,所以抽了点时间做成脚本。

:Nginx软负载典型架构图

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cnskylee

技术分享我是认真的,期待您打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值