keepalived+nginx+tomcat高可用

1.要求

角色 主机名 软件 IP地址
用户 client 192.168.72.90
keepalived vip 192.168.72.100
master master keepalived, nginx 192.168.72.30
backup backup keepalived, nginx 192.168.72.32
web tomcat1 tomcat 192.168.72.41
web tomcat2 tomcat 192.168.72.42

1.搭建Tomcat

1.1下载jdk

wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz
1.2.查看文件以及解压文件

bash 复制代码
ls 

anaconda-ks.cfg jdk-21_linux-x64_bin.tar.gz

bash 复制代码
tar -xzf  jdk-21_linux-x64_bin.tar.gz -C  /usr/local
bash 复制代码
ls /usr/local/jdk-21.0.6/

bin conf include jmods legal lib LICENSE man README release

1.3配置jdk

bash 复制代码
vim /etc/profile
cat /etc/profile
export JAVA_HOME=/usr/local/jdk-21.0.6/
export PATH=$PATH:$JAVA_HOME/bin

1.4刷新文件配置生效

bash 复制代码
source /etc/profile

1.5验证jdk是否生效

bash 复制代码
java -version

1.6关闭防火墙以及selinux

bash 复制代码
systemctl disabled firewalld
setenforce 0

2.在tomact1安装配置Tomact

2.1下载tomact

bash 复制代码
wget https://dlcdn.apache.org/tomcat/tomcat-11/v11.0.5/bin/apache-tomcat-11.0.5.tar.gz

2.2查看文件并解压

bash 复制代码
ls 

anaconda-ks.cfg apache-tomcat-11.0.5.tar.gz

jdk-21_linux-x64_bin.tar.gz

bash 复制代码
tar -xzf  apache-tomcat-11.0.5.tar.gz  -C /usr/local
ls /usr/local

2.3配置tomact相关环境

bash 复制代码
vim /etc/profile
cat /etc/profile
export TOMACT_HOME=/usr/local/apache-tomcat-11.0.5
export PATH=$PATH:$TOMACT_HOME/bin

2.4刷新配置

bash 复制代码
source /etc/profile

2.5启动tomact

bash 复制代码
startup.sh

3.在tomact2上安装jdk以及tomact

3.1复制jdk安装目录

bash 复制代码
scp  -r /usr/local/jdk-21.0.6/ root@10.10.10.42:/usr/local/ >/dev/null

3.2复制tomact安装目录

bash 复制代码
scp  -r /usr/local/apache-tomcat-11.0.5/ root@10.10.10.42:/usr/local > /dev/null

3.3复制/etc/profile文件

bash 复制代码
 scp /etc/profile root@10.10.10.42:/etc/profile/

3.4验证复制的目录

bash 复制代码
ls /usr/local 

bin etc games include jdk-21.0.6 lib lib64 libexec sbin share

src apache-tomcat-11.0.5

3.5刷新/etc/profile

bash 复制代码
source /etc/profile
java -version

3.6启动tomact

bash 复制代码
startup.sh

Using CATALINA_BASE: /usr/local/tomcat-11.0.5 Using CATALINA_HOME:

/usr/local/tomcat-11.0.5 Using CATALINA_TMPDIR:

/usr/local/tomcat-11.0.5/temp Using JRE_HOME:

/usr/local/jdk-21.0.6/ Using CLASSPATH:

/usr/local/tomcat-11.0.5/bin/bootstrap.jar:/usr/local/tomcat-11.0.5/bin/tomcat-juli.jar Using CATALINA_OPTS: Tomcat started.

4.修改tomact主页

4.1修改tomact1主页

bash 复制代码
cd /usr/local/apache-tomcat-11.0.5/webapps/
bash 复制代码
ls

docs examples host-manager manager ROOT

bash 复制代码
rm -rf  docs  examples  host-manager  manager 
bash 复制代码
cd /ROOT
rm -rf *
bash 复制代码
vim index.jsp
cat index.jsp
tomact1 10.10.10.41

4.2修改tomact2主页

bash 复制代码
cd /usr/local/apache-tomcat-11.0.5/webapps/
ls

docs examples host-manager manager ROOT

bash 复制代码
rm -rf docs  examples  host-manager  manager
bash 复制代码
cd /ROOT
rm -rf *
vim index.jsp
cat index.jsp
tpmact 10.10.10.42
bash 复制代码
curl 10.10.10.42:8080

tomact 10.10.10.42

5.搭建nginx服务

5.1在master上搭建nginx服务

5.1.1配置仓库

bash 复制代码
vim /etc/yum/repos.d/master.repo
cat etc/yum/repos.d/master.repo
[BaseOS]
name=BaseOS
baseurl=/mnt/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=/mnt/AppStream
gpgcheck=0

5.1.2挂载仓库

bash 复制代码
mount /dev/sr0 /mnt

5.1.3 下载nginx服务

bash 复制代码
dnf install nginx -y

5.1.4 配置nginx

bash 复制代码
vim /etc/nginx/conf.d/master.conf
cat /etc/nginx/conf.d/master.conf
upstream tomact1{
	server_name 10.10.10.41:8080;
	server_name 10.10.10.42:8080;
}
server{
	server_name 10.10.10.30;
	listen 80;
	access_log /var/log/nginx/master_access.log;
	error_log /var/log/nginx/master_error.log;
	location / {
			proxy_pass http://tomact1;
		}
}

5.1.5启动nginx服务

bash 复制代码
systemctl start nginx

5.1.6测试

bash 复制代码
curl http://10.10.10.30

tomact1 10.10.10.41

bash 复制代码
curl http://10.10.10.30

tomact2 10.10.10.42

5.2在backup上搭建nginxf服务

5.2.1配置仓库

bash 复制代码
vim /etc/yum/repos.d/master.repo
cat etc/yum/repos.d/master.repo
[BaseOS]
name=BaseOS
baseurl=/mnt/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=/mnt/AppStream
gpgcheck=0

5.2.2挂载仓库

bash 复制代码
mount /dev/sr0 /mnt

5.2.3 下载nginx服务

bash 复制代码
dnf install nginx -y

5.2.4 配置nginx

bash 复制代码
vim /etc/nginx/conf.d/backup.conf
cat /etc/nginx/conf.d/backup.conf
upstream tomact2 {
	server 10.10.10.41:8080;
	server 10.10.10.42:8080;
	}
	server {
		server_name 10.10.10.42;
		listen 80;
		access_log /var/log/nginx/baskup_access.log;
		error_log /var/log/nginx/backup_error.log;
		location / {
			proxy_pass http://tomact2;
			}
		}

5.2.5启动nginx服务

bash 复制代码
systemctl start nginx

5.2.6测试

bash 复制代码
curl 10.10.10.32

tomact1 10.10.10.41

bash 复制代码
curl 10.10.10.32

tomact2 10.10.10.42

6.搭建keepalived

6.1在master上搭建keepalived

6.1.1下载keepalived服务

bash 复制代码
dnf install keepalived -y

6.1.2配置keepalived文件

bash 复制代码
vim /etc/keepalived/keepalived.conf
cat /etc/keepalived/keepalived.conf
global_defs {
   router_id  master
}

vrrp_instance VI_1 {
    state MASTER
    interface ens160
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.10.100
    }
}

6.2在backup上配置keepalived

6.2.1下载keepalived服务

bash 复制代码
dnf install keepalived -y

6.2.2配置keepalived文件

bash 复制代码
vim /etc/keepalived/keepalived.conf
cat /etc/keepalived/keepalived.conf
global_defs {
   router_id  backup
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens160
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.10.100
    }
}

6.3启动keepalived服务

master:

bash 复制代码
systemctl start keepalived

backup:

bash 复制代码
systemctl start keepalived

6.4 修改nginx文件

bash 复制代码
vim /etc/nginx/conf.d/master.conf
cat /etc/nginx/conf.d/master.conf
upstream tomact2 {
	server 10.10.10.41:8080;
	server 10.10.10.42:8080;
	}
	server {
		server_name 10.10.10.100;
		listen 80;
		access_log /var/log/nginx/baskup_access.log;
		error_log /var/log/nginx/backup_error.log;
		location / {
			proxy_pass http://tomact2;
			}
		}
		
bash 复制代码
vim /etc/nginx/conf.d/backup.conf
cat /etc/nginx/conf.d/backup.conf
upstream tomact2 {
	server 10.10.10.41:8080;
	server 10.10.10.42:8080;
	}
	server {
		server_name 10.10.10.100;
		listen 80;
		access_log /var/log/nginx/baskup_access.log;
		error_log /var/log/nginx/backup_error.log;
		location / {
			proxy_pass http://tomact2;
			}
		}

6.5重启nginx服务

bash 复制代码
systemctl reatart nginx
curl 10.10.10.100

tomact1 10.10.10.41

bash 复制代码
curl 10.10.10.100

tomact2 10.10.10.42

7.配置nginx高可用

7.1 编写检测脚本

bash 复制代码
vim /etc/keepalived/check_nginx.sh
#!/bin/bash
counter=$(ps -c nginx --no-header | wc -l)
if [$counter -eq 0];then
	systemctl start nginx
	if [	`ps -C nginx --no-header | wc -l` -eq 0]; rhen
	systemctl stop keepalived
	fi
fi

7.2给脚本赋予执行权限

bash 复制代码
chmod +x /etc/keepalived/check_nginx.sh

7.3将脚本文件复制到backup主机中

bash 复制代码
scp /etc/keepalived/check_nginx.sh root@10.10.10.32:/etc/keepalived/

7.4在backup中验证

bash 复制代码
ll /etc/keepalived

-rwxr-xr-x. 1 root root 191 Mar 20 21:15 check_nginx.sh

-rw-r--r--. 1 root root 286 Mar 20 20:58 keepalived.conf

7.5修改master主机上keepalived.conf文件

bash 复制代码
vim /etc/keepalived/keepalived.conf
global_defs {
   router_id  master
}

vrrp_script check_nginx{
	script "/etc/keepalived/check_nginx.sh"
	interval 2
	}
vrrp_instance VI_1 {
    state MASTER
    interface ens160
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.10.100
    }
    track_script {
    	check_nginx
    	}
}

7.6修改backup中keepalived.conf文件

bash 复制代码
vim /etc/keepalived/keepalived.conf
global_defs {
   router_id  backup
}

vrrp_script check_nginx{
	script "/etc/keepalived/check_nginx.sh"
	interval 2
	}
vrrp_instance VI_1 {
    state BACKUP
    interface ens160
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.10.10.100
    }
    track_script {
    	check_nginx
    	}
}

7.7重启keepalived服务

bash 复制代码
systemctl reatart keepalived

8.测试高可用

8.1关闭master上nginx服务

bash 复制代码
systemctl stop nginx
bash 复制代码
curl 10.10.10.100

tomact1 10.10.10.41

bash 复制代码
curl 10.10.10.100

tomact210.10.10.42

bash 复制代码
ps -ef  | grep nginx

root 3471 1 0 21:23 ? 00:00:00 nginx: master

process /usr/sbin/nginx nginx 3472 3471 0 21:23 ?

00:00:00 nginx: worker process nginx 3473 3471 0 21:23 ?

00:00:00 nginx: worker process nginx 3474 3471 0 21:23 ?

00:00:00 nginx: worker process

发现,当我们关闭 nginx 服务后,我们的脚本就会执行,从而自动帮我们把 nginx 服务启动起来。
8.2关闭keepalived和nginx

bash 复制代码
systemctl stop keepalived
systemctl stop nginx
bash 复制代码
curl 10.10.10.30

tomact1 10.10.10.41

bash 复制代码
curl 10.10.10.32

tomact2 10.10.10.42

bash 复制代码
ps -ef | grep nginx

root 3745 1489 0 21:25 pts/0 00:00:00 grep --color=auto

nginx

bash 复制代码
systemctl start keepalived
ps -ef | grep nginx

root 3789 1 0 21:26 ? 00:00:00 nginx: master

process /usr/sbin/nginx nginx 3790 3789 0 21:26 ?

00:00:00 nginx: worker process nginx 3791 3789 0 21:26 ?

00:00:00 nginx: worker process nginx 3792 3789 0 21:26 ?

00:00:00 nginx: worker process

至此,keepalived + nginx + tomcat 的高可用就搭建完成。

相关推荐
大树883 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工4 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智5 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_5 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉6 小时前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦7 小时前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw
java_cj7 小时前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes
lsyeei7 小时前
linux 系统目录详解
linux·运维·服务器