三主热备架构

1.要求

在这里插入图片描述

角色主机名软件IP地址
用户client192.168.72.90
keepalivedvip192.168.72.100
masterserverAkeepalived, nginx192.168.72.30
backupserverBkeepalived, nginx192.168.72.31
backupserverCkeepalived, nginx192.168.72.32
webtomcat1tomcat192.168.72.41
webtomcat2tomcat192.168.72.42
webtomcat3tomcat192.168.72.43
DNS轮询dnsnginx192.168.72.11

2.环境准备

2.1修改主机名和ip地址
web:

hostnamectl hostname tomact1
nmcli c modify ens160 ipv4.method manual ipv4.address 192.168.72.41 ipv4.gateway 192.168.72.2 ipv4.dns 223.5.5.5 connection.autoconnect yes
hostnamectl hostname tomact2
nmcli c modify ens160 ipv4.method manual ipv4.address 192.168.72.42 ipv4.gateway 192.168.72.2 ipv4.dns 
223.5.5.5 connection.autoconnect yes
hostnamectl hostname tomact3
nmcli c modify ens160 ipv4.method manual ipv4.address 192.168.72.42 ipv4.gateway 192.168.72.2 ipv4.dns 
223.5.5.5 connection.autoconnect yes

master:

hostnamectl hostname master
nmcli c modify ens160 ipv4.method manual ipv4.address 192.168.72.30 ipv4.gateway 192.168.72.2 ipv4.dns 223.5.5.5 connection.autoconnect yes

bacup1:

hostnamectl hostname backup1
nmcli c modify ens160 ipv4.method manual ipv4.address 192.168.72.31 ipv4.gateway 192.168.72.2 ipv4.dns 223.5.5.5 connection.autoconnect yes

backup2:

hostnamectl hostname tomact1
nmcli c modify ens160 ipv4.method manual ipv4.address 192.168.72.32 ipv4.gateway 192.168.72.2 ipv4.dns 223.5.5.5 connection.autoconnect yes

dns:

hostnamectl hostname dns
nmcli c modify ens160 ipv4.method manual ipv4.address 192.168.72.11 ipv4.gateway 192.168.72.2 ipv4.dns 223.5.5.5 connection.autoconnect yes

2.2配置仓库(所有虚拟机)

[BaseOS]
name=BaseOS
baseurl=/mnt/BaseOS
gpgcheck=0
[AppStream]
name=AppStream
baseurl=/mnt/AppStream
gpgcheck=0

2.3挂载仓库(所有虚拟机)

mount /dev/sr0 /mnt

2.4关闭防火墙和selinux(所有虚拟机)

systemctl stop firewalld
setenforce 0

3.配置tomact服务

3.1下载tomact
官网:https://tomcat.apache.org/
tomact1:

wgt  https://dlcdn.apache.org/tomcat/tomcat-11/v11.0.5/bin/apache-tomcat-11.0.5.tar.gz
ls

apache-tomcat-11.0.5.tar.gz

3.2解压并配置环境

tar -xzf apache-tomcat-11.0.5.tar.gz -C /usr/local
vim /etc/profile
export TOMACT_HOME=/usr/local/apache-tomcat-11.0.5
export PAHT=$PATH:$TOMACT_HOME/bin

3.3下载jdk
官网:https://www.oracle.com

wget  https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz
ls jdk-21_linux-x64_bin.tar.gz

3.4 解压并配置环境

tar- xzf jdk-21_linux-x64_bin.tar.gz -C /usr/local
vim /usr/local
export JAVA_HOME=/usr/local/jdk-21.0.6
export PATH=$PATH:$JAVA_HOME/bin
vim /usr/local/apache-tomcat-11.0.5/webapps/
ls

docs examples host-manager manager ROOT

rm -rf docs  examples  host-manager  manager  
cd ROOT
rm -rf *
vim index.jsp
tomact1 192.168.72.41

3.5启动文件

source /ect/profile
startup.sh
curl 192.168.72.41:8080

tomact 192.168.72.41

tomact2
复制相关配置文件(tomact1上进行)

scp -r /usr/local/jdk-21.0.6/ root@192.168.72.42:/usr/local
scp -r /usr/local/apache-tomcat-11.0.5/ root@192.168.72.42:/usr/local
scp -r /etc/profile root@192.168.72.42:/etx/profile

验证复制的目录

source /etc/profile
startup.sh

修改tomact主页

cd /usr/local/apache-tomcat-11.0.5/webapps/
ls

docs examples host-manager manager ROOT

rm -rf docs examples host-manager manager 
cd ROOT
rm -rf *
vim index.jsp
tomact2 192.168.72.42

启动tomact

startup.sh
curl 192.168.72.42> tomact2 3192.168.72.42

tomact3:
复制相关配置文件(tomact1上进行)

scp -r /usr/local/jdk-21.0.6/ root@192.168.72.43:/usr/local
scp -r /usr/local/apache-tomcat-11.0.5/ root@192.168.72.43:/usr/local
scp -r /etc/profile root@192.168.72.43:/etx/profile

验证复制的目录

source /etc/profile
startup.sh

修改tomact主页

cd /usr/local/apache-tomcat-11.0.5/webapps/
ls

docs examples host-manager manager ROOT

rm -rf docs examples host-manager manager 
cd ROOT
rm -rf *
vim index.jsp
tomact3 192.168.72.43

启动tomact

startup.sh
curl 192.168.72.43> tomact 3192.168.72.43

4.keepalived和nginx相关服务

4.1下载nginx和keepalived
mastr:

dnf install nginx -y
dnf install keepalived

4.2配置nginx

vim /etc/nginx/conf.d/master.conf
upstream tpmact1 {server 192.168.72.41:8080;server 192.168.72.42:8080;server 192.168.72.43:8080;
}
server{server_name 192.168.72.30;listen 80;access_log /var/log/nginx/master_access.log;error_log /var/log/nginx/master_error.log;location / {proxy_pass http://tomact1}
}

4.3配置keepalived

vim /etc/keepalived/keepalived.conf
global_defs {router_id master
}vrrp_instance VI_1 {state MASTERinterface ens160virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.72.100}
}
vrrp_instance VI_1 {state BACKUPinterface ens160virtual_router_id 51priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.72.101}
}
vrrp_instance VI_1 {state BACKUPinterface ens160virtual_router_id 51priority 60advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.72.102}
}

4.4配置nginx高可用

vim /etc/keepalived/check_nginx.sh
#!/bin/bash
counter=$(ps -C nginx --no-header | wc -l)
if [$counter -eq 0]; thensystemctl start nginxif [`ps  -C --no-header | wc -l` -eq 0]; thensystemctl stop keepalivedfi
fi

4.5给脚本赋予执行权限

chmod +x /etc/keepalived/check_nginx.sh

4.6修改keepalived.conf文件

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 MASTERinterface ens160virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.72.100}track check_nginx{check_nginx}
}
vrrp_instance VI_1 {state BACKUPinterface ens160virtual_router_id 51priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.72.101}track check_nginx{check_nginx}
}
vrrp_instance VI_1 {state BACKUPinterface ens160virtual_router_id 51priority 60advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.72.102}track check_nginx{check_nginx}
}

4.7启动keepalived和nginx

systemctl start keepalived
systemctl start nginx

4.8 测试

curl192.168.72.30> tomact1 192.168.72.41 tomact1 192.168.72.42 tomact1 192.168.72.43

backup1:
下载nginx和keepalived

dnf install nginx -y
dnf install keepalived -y

复制相关配置文件(master上进行)

scp /etc/keepalived/keepalived.conf root@192.168.72.31:/etc/keepalived/keepalived.conf/
scp /etc/keepalived/check_nginx.sh root@192.168.72.31:/etc/keepalived/

查看脚本文件

ls /etc/keepalived/check_nginx.sh

修改keepalived.conf文件

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 BACKUPinterface ens160virtual_router_id 51priority 60advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.72.100}track check_nginx{check_nginx}
}
vrrp_instance VI_1 {state MASTERinterface ens160virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.72.101}track check_nginx{check_nginx}
}
vrrp_instance VI_1 {state BACKUPinterface ens160virtual_router_id 51priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.72.102}track check_nginx{check_nginx}
}

启动nginx和keepalived


```bash
systemctl start nginx
systemctl start keepalived
测试:```bash
curl 192.168.72.31> tomact1 192.168.72.41 tomact1 192.168.72.42 tomact1 192.168.72.43

backup2:
下载nginx和keepalived

dnf install nginx -y
dnf install keepalived -y

复制相关配置文件(master上进行)

scp /etc/keepalived/keepalived.conf root@192.168.72.32:/etc/keepalived/keepalived.conf/
scp /etc/keepalived/check_nginx.sh root@192.168.72.32:/etc/keepalived/

查看脚本文件

ls /etc/keepalived/check_nginx.sh

修改keepalived.conf文件

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 BACKUPinterface ens160virtual_router_id 51priority 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.72.100}track check_nginx{check_nginx}
}
vrrp_instance VI_1 {state BACKUPinterface ens160virtual_router_id 51priority 60advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.72.101}track check_nginx{check_nginx}
}
vrrp_instance VI_1 {state MASTERinterface ens160virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.72.102}track check_nginx{check_nginx}
}

启动nginx和keepalived


```bash
systemctl start nginx
systemctl start keepalived

测试:```bash
curl 192.168.72.32> tomact1 192.168.72.41 tomact1 192.168.72.42 tomact1 192.168.72.43

5.dns相关配置:

5.1下载nginx

dnf install nginx -y

5.2配置文件

vim /etc/nginx/conf.d/dns.conf
upstream web {server 192.168.72.100;server 192.168.72.101;server 192.168.72.102;}
server {server_name 192.168.72.11;listen 80;access_log /var/log/ngonx/dns_access.log;error_log /var/log/nginx/dns_error.log;location / {proxy_pass http://web;}}

5.3 启动nginx

systemctl start nginx

5.4 测试

curl 1912.168.72.100> tomact1 192.168.72.41 tomact1 192.168.72.42 tomact1 192.168.72.43

至此,keepalived+nginx+tomact的高可用轮询搭建完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/74242.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows 10 系统配置Node

目录 什么是Node.js 什么是Npm Node.js环境搭建 下载 解压 配置环境变量 npm配置 如何运行下载的Node.js项目 什么是Node.js 在 Node.js 之前,JavaScript 只能运行在浏览器中,作为网页脚本使用,为网页添加一些特效,或者和…

Windows Server 2025 使用 IIS 搭建 ASP.NET 3.5 网站

开启远程桌面 参考文章Windows server开启远程桌面教程打开服务管理器。ECS 配置安全组,开启 3389Telnet 验证网络联通性 telnet x.x.x.x 338安装 Windows App,登录验证 安装 ASP.NET 3.5 1.参考文章Windows Server 2012安装 .NET Framework 3.5和 Wi…

开源模型应用落地-shieldgemma-2-4b-it模型小试-多模态内容安全检测(一)

一、前言 在人工智能迅速发展的过程中,内容安全成为AI应用中的一个重要挑战。谷歌团队于2025年3月推出了一款名为ShieldGemma-2-4B-IT的模型,它以创新的多模态安全检测能力,为行业树立了新的开源责任AI标准。 与早期的仅支持文本审核的版本相比,ShieldGemma-2-4B-IT在谷歌的…

【数据预测】基于遗传算法GA的LSTM光伏功率预测 GA-LSTM光伏功率预测【Matlab代码#91】

文章目录 【可更换其他算法,获取资源请见文章第6节:资源获取】1. 遗传算法GA2. 长短期记忆网络LSTM3. 基于GA-LSTM的光伏功率预测4. 部分代码展示5. 运行结果展示6. 资源获取 【可更换其他算法,获取资源请见文章第6节:资源获取】 …

openEuler24.03 LTS下安装Hadoop3完全分布式

目录 Linux准备 openEuler24.03 LTS简介 下载openEuler24.03 LTS 安装openEuler24.03 LTS Linux基本设置 关闭及禁用防火墙 修改主机名 静态ip 映射主机名 创建普通用户 目录准备 克隆主机 配置机器之间免密登录 编写分发脚本 安装Java 下载Java 解压 设置环…

【Linux之Shell脚本实战】Linux服务器输出美观漂亮的html巡检报告

【Linux之Shell脚本实战】Linux服务器输出美观漂亮的html巡检报告 一、Shell脚本介绍1.1 Shell脚本简介1.2 Shell脚本特点二、脚本要求三、检查本地环境3.1 本地环境规划3.2 检查本地系统3.3 检查系统内核版本四、编辑脚本五、执行及测试脚本5.1设置定时任务5.2 执行效果六、总…

坦克大战(c++)

今天我给大家分享一个c游戏。 废话不多说&#xff0c;作品展示&#xff1a; #include <stdio.h> #include <windows.h> #include <time.h> //里规格&#xff1a;长39*278 &#xff08;真坐标&#xff09;(假坐标宽为39) 高39 //外规格&#xff1a;长…

node-ddk, electron组件, 自定义本地文件协议,打开本地文件

node-ddk 文件协议 https://blog.csdn.net/eli960/article/details/146207062 也可以下载demo直接演示 http://linuxmail.cn/go#node-ddk 安全 考虑到安全, 本系统禁止使用 file:/// 在主窗口, 自定义文件协议,可以多个 import main, { NODEDDK } from "node-ddk/m…

论文阅读:2023 arxiv Provable Robust Watermarking for AI-Generated Text

总目录 大模型安全相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 Provable Robust Watermarking for AI-Generated Text https://arxiv.org/pdf/2306.17439 https://github.com/XuandongZhao/Unigram-Watermark https://www.doubao.com/chat/211092…

一条sql语句在mysql中的执行流程(Mysql基础架构)

mysql基础架构 MySQL 主要分为 Server 层和 存储引擎层&#xff1a; Server 层&#xff1a;主要包括 连接器、查询缓存、分析器、优化器、执行器等&#xff0c;所有跨存储引擎的功能都在这一层实现&#xff0c;比如存储过程、触发器、视图&#xff0c;函数等&#xff0c;还有一…

GitLens with `Commit Graph`

文章目录 GitLens with Commit Graph GitLens with Commit Graph 想要更直观地查看 Git 提交历史&#xff1f;我打包了一个支持 Commit Graph 的 GitLens 版本&#xff0c;让你轻松在 VSCode 中查看分支、合并、变更记录等内容&#xff0c;一目了然&#xff01; &#x1f4cc…

C#里使用libxl的数字格式

由于EXCEL里可以表示不同的数字格式, 比如表示货币数字时,与表示普通序号的数字就不一样。 还有科学计算表示的数字使用小数点位数与普通货币也不一样。 如下所示: 要使用这些格式, 下面创建一个例子来演示保存这些数字格式: private void button11_Click(object send…

CentOS 7扩容 /dev/shm

在 CentOS 7 中&#xff0c;/dev/shm 是基于内存的临时文件系统&#xff08;tmpfs&#xff09;&#xff0c;其大小通常为系统内存的一半。要扩容 /dev/shm&#xff0c;可以通过重新挂载 tmpfs 并指定新的大小来实现。 扩容步骤 查看当前 /dev/shm 的大小&#xff1a; df -h /d…

【一起学Rust | Tauri2.0框架】基于 Rust 与 Tauri 2.0 框架实现全局状态管理

前言 在现代应用程序开发中&#xff0c;状态管理是构建复杂且可维护应用的关键。随着应用程序规模的增长&#xff0c;组件之间共享和同步状态变得越来越具有挑战性。如果处理不当&#xff0c;状态管理可能会导致代码混乱、难以调试&#xff0c;并最终影响应用程序的性能和可扩…

百度SEO和必应SEO优化方法

如需SEO服务&#xff0c;可以搜索&#xff1a;深圳市信科网络科技有限公司。 一、搜索引擎生态格局&#xff1a;流量入口的重新洗牌 2025 年&#xff0c;中国 PC 端搜索引擎市场正经历戏剧性变革。StatCounter 数据显示&#xff0c;必应凭借 Edge 浏览器的预装优势与 ChatGPT …

Redis 事件机制详解

Redis 事件机制详解 Redis 的事件机制是其高性能和高并发能力的关键之一&#xff0c;它采用Reactor 模型&#xff0c;基于文件事件驱动机制实现高效的 I/O 处理。Redis 的事件机制主要分为以下几类&#xff1a; 文件事件&#xff08;File Event&#xff09; —— 处理网络 I/…

【LangChain入门 3 Prompts组件】聊天提示词模板 ChatPromptTemplate

文章目录 一、 聊天信息提示词模板1.1 使用关键字1.2 使用SystemMessage, HumanMessage, AIMessage来定义消息1.3 使用MessagesPlaceholder 在特定未知添加消息列表 二、关键类介绍2.1 ChatPromptTemplate 类2.1.1 from_messages()2.1.2 format_messages()2.1.3 format_prompt(…

Flutter TextFormField 完全手册与设计最佳实践

目录 1. 引言 2. TextFormField 的基本用法 3. 主要属性 4. 自定义 TextFormField 样式 4.1 设置边框样式 4.2 设置输入格式限制 4.3 多行输入 5. 结论 相关推荐 1. 引言 在 Flutter 中&#xff0c;TextFormField 是 TextField 的扩展版本&#xff0c;专为表单输入设计…

HC-05与HC-06蓝牙配对零基础教程 以及openmv识别及远程传输项目的概述

这个是上一年的项目&#xff0c;之前弄得不怎么完整&#xff0c;只有一个openmv的&#xff0c;所以openmv自己去我主页找&#xff0c;这篇主要讲蓝牙 这个是我在使用openmv连接单片机1然后单片机1与单片机2通过蓝牙进行通信 最终实现的效果是&#xff1a;openmv识别到图形和数…

【Docker系列一】Docker 简介

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…