细节决定成败1: 负载均衡和应用层面的结合

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介:

细节决定成败, 做技术的尤其如此,这里有几个负载均衡相关案例和大家分享下

有个客户负载均衡上线的需求如下图;内部基于websphere的3台应用服务器,每个服务器提供3个端口9081,9082,9083做相同应用,前端是负载均衡,用户访问发布的公网IP地址的80端口,做负载均衡分配到后台服务器;由于旁路部署,服务器网关不指向负载均衡器,负载均衡需要配置源地址转换(SNAT)。

基本配置如下

物理接口配置好后,增加后台服务器配置端口

slb server Int_ser1 192.168.128.12
   port 9081  tcp
   port 9082  tcp
   port 9083  tcp
!
slb server Int_ser2 192.168.128.13
   port 9081  tcp
   port 9082  tcp
   port 9083  tcp
!
slb server Int_ser3 192.168.128.18
   port 9081  tcp
   port 9082  tcp
   port 9083  tcp

配置使用的SNAT地址池

ip nat pool snat 192.168.128.203 192.168.128.204 netmask /24

配置服务器组,确定算法

slb service-group Int_group1 tcp
    method service-least-connection
    member Int_ser1:9081
    member Int_ser1:9082
    member Int_ser1:9083
    member Int_ser2:9081
    member Int_ser2:9082
    member Int_ser2:9083
    member Int_ser3:9081
    member Int_ser3:9082
    member Int_ser3:9083

配置虚拟服务器(外部客户访问的IP地址)

slb virtual-server Virt_Int xx.xx.126.100
   port 80  http
      source-nat pool snat
      service-group Int_group1

配置结束。

但是在后台应用调通后上线前的测试中,发现无法正常打开界面,显示错误;结果经过一番盘查后,终于在服务器的回报中发现如下情况:

本来用户正常访问是虚拟IP地址 xx.xx.126.100:80, 但是在服务器的回报中却自动添加了对应接口;也就是说 第一次请求都是正常处理的,但是服务器回的内容需要客户端访问虚拟IP地址的9081端口(xx.xx.126.100:9081),而负载均衡设备上针对该端口并没有映射,无法正常转发到后台服务器造成访问失败。

定位后很简单,在负载均衡设备上添加虚拟IP的9081,9082,9083的映射即可

slb virtual-server Virt_Int xx.xx.126.100
   port 80  http
      source-nat pool snat
      service-group Int_group1
   port 9081  http
      source-nat pool snat
      service-group Int_group1
   port 9082  http
      source-nat pool snat
      service-group Int_group1
   port 9083  http
      source-nat pool snat
      service-group Int_group1

这是一个典型的后台应用和负载之间没有完全沟通好的案例,正常情况下后台应用无需再指定特定目标端口(例如9081),但是由于之前沟通准备不充分,导致配置不对称引起问题。

负载均衡设备和应用是紧密联系的,还有很多其他功能都会相关:例如负载均衡可以启用缓存功能,但是应用层面上到底哪些域名,哪些目录可以缓存,是需要和后台应用一起确定的。否则有可能出现用户登录网页后显示出其他用户的内容信息的情况。

在这里以此案例提醒大家,应用和网络不能完全隔离,尤其是和两者都相关的负载均衡或者应用交付的设备上线使用,多沟通交流才可以避免问题。

注:以上案例中为了突出主要内容使用简化后的设备配置。

(J.L.)
 

本文转自 virtualadc 51CTO博客,原文链接:http://blog.51cto.com/virtualadc/711363


相关实践学习
通过ACR快速部署网站应用
本次实验任务是在云上基于ECS部署Docker环境,制作网站镜像并上传至ACR镜像仓库,通过容器镜像运行网站应用,网站运行在Docker容器中、网站业务数据存储在Mariadb数据库中、网站文件数据存储在服务器ECS云盘中,通过公网地址进行访问。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
负载均衡 算法 NoSQL
聊聊分布式应用中负载均衡技术和Session一致性
聊聊分布式应用中负载均衡技术和Session一致性
50 0
|
11月前
|
SpringCloudAlibaba 负载均衡 算法
SpringCloudAliBaba篇之Ribbon负载均衡器:让你的应用从容应对高并发
SpringCloudAliBaba篇之Ribbon负载均衡器:让你的应用从容应对高并发
260 0
|
1天前
|
负载均衡 Java 测试技术
性能测试与负载均衡:保证Java应用的稳定性
性能测试与负载均衡:保证Java应用的稳定性
|
29天前
|
负载均衡 运维 监控
负载均衡与容错性:集群模式在分布式系统中的应用
本文由小米分享,解释了分布式系统中的集群模式。集群模式是通过组合多个服务器节点,共同提供服务,实现高可用性、负载均衡和扩展性。文章介绍了主控节点的角色及其高可用性策略,如主备模式和选举机制,并以Zookeeper为例详细阐述了其工作机制。集群模式的优势在于高可用性、负载均衡、扩展性和数据一致性,但也面临节点通信、数据一致性、故障检测和管理等挑战。最后,作者鼓励读者讨论和交流相关技术问题。
179 5
|
2月前
|
运维 负载均衡 Cloud Native
Serverless 应用引擎产品使用之在Serverless 应用引擎中,使用云原生网关的情况下,SLB(负载均衡器)和证书配置如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
2月前
|
运维 Serverless 应用服务中间件
Serverless 应用引擎产品使用之在Serverless应用引擎(SAE)中,在创建ALB时找不到对应的SAE容器如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
2月前
|
缓存 监控 应用服务中间件
如何使用负载均衡器提升Python Web应用的性能?
【2月更文挑战第27天】【2月更文挑战第94篇】如何使用负载均衡器提升Python Web应用的性能?
|
2月前
|
负载均衡 应用服务中间件 nginx
Nginx四层负载均衡在秒杀系统中的应用
Nginx四层负载均衡在秒杀系统中的应用
36 0
|
2月前
|
负载均衡 应用服务中间件 nginx
Nginx负载均衡选择在秒杀系统中的应用
Nginx负载均衡选择在秒杀系统中的应用
54 0
|
9月前
|
负载均衡 Cloud Native 网络协议
负载均衡原理及应用
负载均衡原理及应用
75 0