LNMT动静分离+keepalived

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: LNMT动静分离是指在LNMT架构中使用动静分离技术,将动态请求和静态请求分开处理和分发,以提高性能和可扩展性。这种架构使用Nginx作为反向代理服务器,将静态资源直接由Nginx服务器提供,而将动态请求转发给后端的Tomcat应用服务器进行处理。

前言

LNMT动静分离是指在LNMT架构中使用动静分离技术,将动态请求和静态请求分开处理和分发,以提高性能和可扩展性。这种架构使用Nginx作为反向代理服务器,将静态资源直接由Nginx服务器提供,而将动态请求转发给后端的Tomcat应用服务器进行处理。


Keepalived是一种开源的高可用性解决方案,可以用于实现服务器之间的故障转移和负载均衡。它使用虚拟路由冗余协议(Virtual Router Redundancy Protocol,VRRP)来监控服务器的状态,并自动切换到备用服务器以实现高可用性。


当将LNMT动静分离架构与Keepalived结合使用时,通常是在Nginx服务器部署Keepalived以实现高可用性。可以部署多个Nginx服务器,并使用Keepalived来监控它们的状态。如果主要的Nginx服务器发生故障或不可用,Keepalived会自动将IP地址转移到备用服务器,确保服务的连续性。


此组合架构提供了高可用性和负载均衡的好处。即使其中一个Nginx服务器发生故障,Keepalived会自动将请求转发到其他可用的Nginx服务器,以确保服务的持续性和高性能。同时,LNMT动静分离架构通过将静态资源由Nginx直接提供,减轻了后端Tomcat服务器的负载,并提高了静态资源的访问速度。


一、实验拓扑


本次实验采用的nginx结合Tomcat来实现动静分离,负载均衡;使用nfs服务来为Tomcat共享目录

在调度器NGINX上配置keepalived来提高可用性

二、配置tomcat

Apache Tomcat® - Welcome!

##两台tomcat服务器先进行如下步骤 :
##解压/建立软连接
tar xf apache-tomcat-8.5.16.tar.gz
mv apache-tomcat-8.5.16 /usr/local/tomcat
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/bin/catdown
ln -s /usr/local/tomcat/bin/startup.sh /usr/bin/catup
###创建挂载目录
/usr/local/tomcat
mkdir webapps1
###修改tomcat的访问目录
vim /usr/local/tomcat/conf/server.xml
###修改host字段插入
<Context path="" docBase="/usr/local/tomcat/webapps1" />

三、nfs配置

安装及配置

##安装nfs服务
yum -y install nfs
##创建共享目录
mkdir /opt/web1
mkdir /opt/web2
##配置nfs的配置文件
vim /etc/exports
##插入
/opt/web1 192.168.115.136/24(rw,sync,no_root_squash)
/opt/web2 192.168.115.140/24(rw,sync,no_root_squash)
##让他生效
exportfs -arv
##启动nfs
systemctl start nfs

回到两台Tomcat挂载共享目录

###查看可挂载的目录
showmount -e 192.168.115.131
###挂载到webapps1
 mount 192.168.115.131:/opt/web1 /usr/local/tomcat/webapps1
##查看挂载情况
df
###分别书写测试页面
echo tomcat1 > webapps1/index.jsp
echo tomcat2 > webapps1/index.jsp
##启动Tomcat
catup
##查看端口、
netstat -anput |grep 8080

测试页面

四、配置NGINX


安装NGINX

###安装
yum -y install epel-release.noarch 
yum -y install nginx
##修改配置文件
vim /etc/nignx/nginx.conf
##在http字段插入
upstream tomcat {
                server 192.168.115.136:8080;
                server 192.168.115.140:8080;
        }
##server字段插入
location ~ \.jsp$ {
                proxy_pass http://tomcat;
                proxy_set_header  Host $host;
        }
        location / {
                root    /usr/share/nginx/html;
                index   index.html;
        }
##启动NGINX

访问2台调度器

测试动静分离

五、配置NGINX的双机热备


安装keepalived

##安装
yum -y install keepalived
##配置
vim /etc/keepalived/keepalived.conf
############################################################
! Configuration File for keepalived
global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL            ###从的编号要改动一下 LVS_DEVEL1
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_instance VI_1 {
    state MASTER                  ###从改为BACKUP
    interface ens33               ###网卡名
    virtual_router_id 51
    priority 100                  ###从的优先级要比主低
    advert_int 1
   authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.115.200          ###VIP用来访问的虚拟IP
    }
}
virtual_server 192.168.115.200 8080 {       ###vip对应的真是IP 在下面
    delay_loop 6
    lb_algo rr 
    persistence_timeout 50
    protocol TCP
    real_server 192.168.115.136 8080 {        ###这是Tomcat服务器的IP
        weight 1
        HTTP_GET {
            url { 
              path /testurl/test.jsp
            }
url { 
              path /testurl2/test.jsp
            }
            url { 
              path /testurl3/test.jsp
            }
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.115.140 8080 {       ###这是Tomcat服务器的IP
        weight 1
        HTTP_GET {
            url { 
              path /testurl/test.jsp
            }
            url { 
              path /testurl2/test.jsp
}
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}

启动keepalived

systemctl start keepalived

查看主的IP说明keepalived生效了

VIP页面访问测试

静态页面

动态页面

六、验证双机热备


模拟调度器主宕机init 0,直接给他关机,使用调度器备访问

1、查看调度器备的IP,ip漂移说明keepalived生效

2、页面访问测试

动态页面

正常访问,试验成功。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
人工智能 弹性计算 运维
云上创新丨云计算,如何从IT战略上升为企业核心战略?
云计算在中国发展十余年,越来越多行业开始用云,与此同时,云计算也已从企业IT战略上升为企业核心战略。未来,云计算一定是企业和开发者的首选,技术创新也一定优先诞生在云上。
云上创新丨云计算,如何从IT战略上升为企业核心战略?
|
网络安全
[网络安全]xss-labs level-15 解题详析
[网络安全]xss-labs level-15 解题详析
192 0
|
负载均衡 网络协议 安全
负载均衡4层和7层区别
所谓四层就是基于IP+端口的负载均衡;七层就是基于URL等应用层信息的负载均衡
|
7月前
|
人工智能 SpringCloudAlibaba 自然语言处理
SpringCloud Alibaba AI整合DeepSeek落地AI项目实战
在现代软件开发领域,微服务架构因其灵活性、可扩展性和模块化特性而受到广泛欢迎。微服务架构通过将大型应用程序拆分为多个小型、独立的服务,每个服务运行在其独立的进程中,服务与服务间通过轻量级通信机制(通常是HTTP API)进行通信。这种架构模式有助于提升系统的可维护性、可扩展性和开发效率。
2144 2
|
Java Android开发
Android 导航方式切换
Android 导航方式切换
404 1
|
人工智能 供应链 监控
供应链管理(SCM):从物流到信息流的技术融合之旅
【6月更文挑战第24天】供应链管理聚焦物流与信息流的融合,借助物联网、大数据及AI提升效率。物流技术进步增强透明度,信息流分析优化决策,两者结合实现供应链可视化和智能化,确保快速响应市场变化,增强企业竞争力。科技驱动的供应链未来将更加智能、自动化。
|
JavaScript Go 项目管理
云效常见问题之使用gitlab仓库将代码合并评审环节集成到云效如何解决
云效(CloudEfficiency)是阿里云提供的一套软件研发效能平台,旨在通过工程效能、项目管理、质量保障等工具与服务,帮助企业提高软件研发的效率和质量。本合集是云效使用中可能遇到的一些常见问题及其答案的汇总。
275 1
|
JavaScript 索引
Vue.js中循环语句的使用方法和相关技巧
Vue.js中循环语句的使用方法和相关技巧
194 1
Vue.js中循环语句的使用方法和相关技巧
|
存储 算法 Linux
VDO卷的配置
在CentOS 7环境下,VDO通过重删和压缩技术节省磁盘空间,使1T磁盘可存储1.5T数据,降低成本。创建VDO步骤包括:添加64GB新硬盘,安装vdo和kmod-kvdo软件,使用`vdo create`命令创建VDO卷,如`vdo create --name=myvdo --device=/dev/sdb --vdoLogicalSize=200G`。之后,可通过`vdo list`、`vdo status`和`vdostats`检查状态和空间使用。最后,格式化VDO卷,创建挂载点并挂载,完成设置。
177 0
|
监控 搜索推荐 测试技术
微服务可见可观测性
【2月更文挑战第29天】本文介绍了服务治理的反馈机制关键步骤:服务可见性、变更可见性和观测可见性。