5台虚拟机 两台nginx 两个tomcat 一个nfs keepalived和调度器合在一起做高可用 dns加在vip上 用IP加端口进行访问 如果一台nginx损坏 可以适用另一台备用
5台虚拟机 两台nginx 两个tomcat 一个nfs keepalived和调度器合在一起做高可用 dns加在vip上 用IP加端口进行访问 如果一台nginx损坏 可以适用另一台备用
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
4条回答 默认 最新
檀越@新空间 2025-07-24 14:48关注下午好🌅🌅🌅
本答案参考通义千问根据你的描述,这是一个典型的高可用(HA)架构设计,使用 Keepalived 实现高可用负载均衡,Nginx 作为反向代理和负载均衡器,Tomcat 作为应用服务器,NFS 提供共享存储。以下是详细的架构说明及部署方案。
✅ 架构概述
-
5台虚拟机:
- 2台 Nginx(主备):用于负载均衡和反向代理
- 2台 Tomcat:应用服务器,提供 Web 应用服务
- 1台 NFS:提供共享存储,用于 Tomcat 的 session 共享或静态资源同步
-
Keepalived 和调度器合在一起:
- Keepalived 负责实现 VIP(Virtual IP)的高可用切换
- 调度器即为 Nginx,通过 Keepalived 实现主从切换
-
DNS 加在 VIP 上:
- DNS 解析指向 VIP 地址,客户端通过 VIP 访问服务
- 使用 IP + 端口 进行访问(如
http://VIP:80)
-
故障切换机制:
- 如果一台 Nginx 损坏,另一台 Nginx 会自动接管流量,确保服务不中断
🧩 部署步骤详解
1. 准备环境
- 虚拟机分配如下: | 虚拟机名称 | 角色 | IP地址 | 备注 | |------------|------|--------|------| | VM1 | Nginx 主 | 192.168.1.10 | Keepalived + Nginx | | VM2 | Nginx 备 | 192.168.1.11 | Keepalived + Nginx | | VM3 | Tomcat1 | 192.168.1.12 | 应用服务器 | | VM4 | Tomcat2 | 192.168.1.13 | 应用服务器 | | VM5 | NFS | 192.168.1.14 | 共享存储 |
2. 安装并配置 Keepalived
安装 Keepalived
sudo apt update sudo apt install keepalived -y配置 Keepalived(VM1 和 VM2)
在 VM1(主节点)中配置
/etc/keepalived/keepalived.confvrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 192.168.1.100 } }在 VM2(备节点)中配置
/etc/keepalived/keepalived.confvrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 192.168.1.100 } }注意:
virtual_ipaddress是 VIP,所有客户端通过这个 IP 访问服务。
3. 配置 Nginx(主备)
安装 Nginx
sudo apt install nginx -y配置 Nginx 反向代理到 Tomcat(在 VM1 和 VM2 中配置相同)
编辑
/etc/nginx/sites-available/default或/etc/nginx/conf.d/upstream.conf:upstream backend { server 192.168.1.12:8080; server 192.168.1.13:8080; } server { listen 80; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }重点: Nginx 通过 upstream 指向两个 Tomcat 实例,实现负载均衡。
4. 配置 Tomcat(VM3 和 VM4)
- 安装 Java 和 Tomcat(以 Ubuntu 为例):
sudo apt install openjdk-8-jdk -y wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.73/bin/apache-tomcat-9.0.73.tar.gz tar -zxvf apache-tomcat-9.0.73.tar.gz -C /opt/- 修改
conf/server.xml中的Connector端口:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />- 启动 Tomcat:
/opt/apache-tomcat-9.0.73/bin/startup.sh注意: 确保防火墙允许 8080 端口访问。
5. 配置 NFS 共享存储(VM5)
安装 NFS 服务
sudo apt install nfs-kernel-server -y配置 NFS 共享目录
编辑
/etc/exports:/var/www/html 192.168.1.0/24(rw,sync,no_subtree_check)重启 NFS 服务
sudo systemctl restart nfs-kernel-server在 Tomcat 节点挂载 NFS(VM3 和 VM4)
sudo mount 192.168.1.14:/var/www/html /var/www/html注意: 可将挂载命令写入
/etc/fstab实现开机自动挂载。
6. DNS 配置(可选)
如果你希望使用域名访问,可以将域名解析到 VIP(192.168.1.100):
example.com A 192.168.1.100客户端访问方式为:
http://example.com:80或http://192.168.1.100:80
✅ 故障切换测试
-
停止 VM1 的 Nginx 和 Keepalived:
sudo systemctl stop nginx sudo systemctl stop keepalived -
查看 VM2 是否接管 VIP:
ip a show eth0 -
如果看到
192.168.1.100则表示切换成功。
✅ 总结
📌 关键点总结:
-
Keepalived 实现 VIP 高可用
- 主节点(VM1)和备节点(VM2)通过 VRRP 协议实现故障切换
- VIP 为
192.168.1.100
-
Nginx 负载均衡 Tomcat
- 通过 upstream 配置将请求分发到两个 Tomcat 实例
- 支持负载均衡和故障转移
-
NFS 提供共享存储
- Tomcat 通过 NFS 实现 session 共享或静态资源同步
-
DNS 解析到 VIP
- 客户端通过域名或 IP + 端口访问服务
- 确保服务连续性
✅ 附录:完整配置文件示例
Keepalived 配置(主节点)
vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 192.168.1.100 } }Nginx 配置
upstream backend { server 192.168.1.12:8080; server 192.168.1.13:8080; } server { listen 80; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
如有需要,我可以为你生成完整的脚本或一键部署方案。欢迎继续提问!
解决 无用评论 打赏 举报-