nignx+Tomcat+NFS负载均衡加共享储存服务脚本
本次使有4台主机,系统均为centos7,1台nignx,2台tomcat,1台nfs
第一台配置nignx脚本
#!/bin/bash
#xiexianghu 2025.6.24
#nignx配置脚本,centos7#关闭防火墙和SElinux
systemctl stop firewalld && systemctl disable firewalld && echo "防火墙已经关闭"
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config && setenforce 0 && echo "关闭selinux"ip=$(hostname -I |awk '{print $1}')## 添加Nginx官方仓库
cat > /etc/yum.repos.d/nginx.repo << 'EOF'
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
EOF# 安装Nginx
yum install -y nginx# 验证安装
nginx -v# 备份默认配置
mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup# 创建新的配置文件
cat > /etc/nginx/nginx.conf << 'EOF'
user nginx;
worker_processes 1;error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;events {worker_connections 1024;
}http {include /etc/nginx/mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;sendfile on;#tcp_nopush on;keepalive_timeout 65;# 定义上游Tomcat服务器池upstream tomcat_servers {# 轮询策略(默认)server 10.10.10.104:8080;server 10.10.10.105:8080;# 可添加更多配置参数:# weight=10; # 权重,数值越大优先级越高# max_fails=3; # 失败次数# fail_timeout=30s; # 失败超时时间# backup; # 备用服务器}server {listen 80;server_name localhost;location / {proxy_pass http://tomcat_servers;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/html;}}
}
EOFsleep 5# 启动Nginx
systemctl start nginx && systemctl enable nginx
if [ $? = 0 ]
then echo "成功"elseecho "失败"exit 0
fi
tomcat配置脚本,2台都是一样的配置,这里非常注意创建的安装目录,后面启动脚本在里面,要指定绝对路径
#!/bin/bash
#nignx+Tomcat+NFS负载均衡加共享储存服务脚本,4台服务器centos7
#本脚本为tomcat脚本
#xiexianghu 2025.6.23#关闭防火墙和selinux
systemctl stop firewalld && systemctl disable firewalld && echo "防火墙已经关闭"
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config && setenforce 0 && echo "关闭selinux"
sleep 5ip=$(hostname -I |awk '{print $1}')# 安装OpenJDK 8
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
if [ $? = 0 ]
thenecho "安装成功"
elseecho "安装失败"sleep 5exit 1 # 返回非零状态码表示失败
fi# 验证安装
java -version# 创建安装目录
cd /usr/local# 下载Tomcat 9(可根据需求选择版本)
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.105/bin/apache-tomcat-9.0.105.tar.gz
if [[ $? -ne 0 ]]; thenecho "下载Tomcat失败"exit 1
fi
tar -zxvf apache-tomcat-9.0.105.tar.gz
if [[ $? -ne 0 ]]; thenecho "解压Tomcat失败"exit 1
fi
mv apache-tomcat-9.0.105 tomcat
chmod -R 755 /usr/local/tomcat#配置 Tomcat 标识
# 修改webapps/ROOT/index.jsp,添加标识1,表示第一台tomcat
echo "<h1>Tomcat Server 1 - 10.10.10.101</h1>" > /usr/local/tomcat/webapps/ROOT/index.jsp# 创建systemd服务文件
cat > /usr/lib/systemd/system/tomcat.service << 'EOF'
[Unit]
Description=Apache Tomcat 9.0.105
After=network.target[Service]
Type=forking
User=root
Group=root
Environment="JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk"
Environment="CATALINA_HOME=/usr/local/tomcat"
Environment="CATALINA_BASE=/usr/local/tomcat"
Environment="CATALINA_PID=/usr/local/tomcat/temp/tomcat.pid"
Environment="CLASSPATH=/usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar"
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
Restart=on-failure[Install]
WantedBy=multi-user.target
EOF# 重新加载systemd配置
systemctl daemon-reload# 启动Tomcat并设置为开机自启
systemctl start tomcat
systemctl enable tomcatecho 在浏览器中访问$(hostname -I |awk '{print $1}')看到各自的标识页面
nfs配置脚本
#!/bin/bash
#nignx+Tomcat+NFS负载均衡加共享储存服务脚本,4台服务器centos7
#本脚本为NFS脚本
#xiexianghu 2025.6.23#安装 NFS 服务
#使用yum命令安装rpcbind和nfs-utils
yum -y install rpcbind nfs-utils#创建共享目录
mkdir /data/
mkdir /data/share/
chmod 755 -R /data/share/#编辑 NFS 的配置文件/etc/exports,添加共享目录及权限设置
# 配置NFS共享
echo "正在配置NFS共享..."
# 检查/etc/exports文件是否存在,若不存在则创建
if [ ! -f /etc/exports ]; thentouch /etc/exports
fi# 向exports文件中添加共享配置
echo "/data/share/ 10.10.10.104(rw,no_root_squash,no_all_squash,sync)" >> /etc/exports
echo "/data/share/ 10.10.10.105(rw,no_root_squash,no_all_squash,sync)" >> /etc/exports# 重新导出NFS共享
echo "正在重新导出NFS共享..."
exportfs -r# 启动NFS相关服务
echo "正在启动NFS相关服务..."
systemctl start rpcbind
systemctl start nfs# 设置服务开机自启
echo "正在设置服务开机自启..."
systemctl enable rpcbind
systemctl enable nfs# 输出脚本执行完成信息
echo "NFS服务安装与配置完成!"
最后解释tomcat的最后配置脚本
#!/bin/bash# NFS客户端配置与挂载脚本
# 功能:安装NFS客户端工具,创建挂载目录,配置NFS挂载并设置开机自动挂载
# 输出脚本开始信息
echo "开始配置NFS客户端..."# 安装NFS相关服务
echo "正在安装rpcbind和nfs-utils..."
yum -y install rpcbind
yum -y install nfs-utils# 创建挂载目录
echo "正在创建挂载目录..."
mkdir -p /mnt/share# 临时挂载NFS共享
echo "正在临时挂载NFS共享..."
mount -t nfs 10.10.10.100:/data/share /mnt/share/ -o nolock,nfsvers=3,vers=3# 配置开机自动挂载
echo "正在配置开机自动挂载..."
# 检查rc.local文件是否存在,不存在则创建
if [ ! -f /etc/rc.d/rc.local ]; thentouch /etc/rc.d/rc.localchmod +x /etc/rc.d/rc.local
fi
# 向rc.local中添加挂载命令(避免重复添加)
grep -q "mount -t nfs 10.10.10.100:/data/share /mnt/share/ -o nolock,nfsvers=3,vers=3" /etc/rc.d/rc.local
if [ $? -ne 0 ]; thenecho "mount -t nfs 10.10.10.100:/data/share /mnt/share/ -o nolock,nfsvers=3,vers=3" >> /etc/rc.d/rc.local
fi# 确保rc.local有执行权限
chmod +x /etc/rc.d/rc.local# 输出脚本执行完成信息
echo "NFS客户端配置与挂载完成!"
echo "当前已临时挂载NFS共享,系统重启后将自动挂载。"
全部配置好后在tomcat1中创建文件,在tomcat2中会同步