应用负载均衡基本原理解析(二)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
网络型负载均衡 NLB,每月750个小时 15LCU
全局流量管理 GTM,标准版 1个月
简介:

在第一部分中,我们从网络层面深度解析了负载均衡的本质,这一部分中我们将从应用的角度来分析负载均衡的多种关键技术。

 再来回顾一下我们在第一部分中的这幅图:

 

问题1、如果10.0.0.2不可达或者80端口服务不可用,怎么办?难道被分到这台服务器上的用户就该倒霉吗?

问题2、为何172.16.0.1的用户请求会被分配到10.0.0.2上,172.16.0.2的用户请求会被分配到10.0.0.3上?

 

以上两个问题分别涉及到负载均衡里两个基本的关键词:健康状态检测和负载均衡算法。

我们这部分主要分析健康状态检测原理。

健康状态检测是负载均衡设备的一个最基本的机制,它能确认某台服务器上的应用是否正常,如果确认不正常,则会把这台机器排除在可用来进行分发的服务器资源之外,这样就能避免出现将客户请求分发到不能正常工作的服务器上,从而导致用户访问失败。

如何才能正确判断应用的健康状态呢?

我们假设对一个运行web服务的服务器进行健康状态检测,分别以从浅到深的方式去检查:

A、 ICMP协议的方式进行探测,看能ping通服务器的IP地址

诚然,如果正常状态下能ping通服务器,当某个时刻ping不通以后,说明链路出现故障或者服务器死机,这个时候判断应用不可用是没有问题的,但是,能ping通应用就一定正常吗?假设服务器网络正常,但是web服务的软件出现问题,导致对80端口的请求都不响应的时候,即便能ping通,但是分配到这台服务器上的请求也无法正常访问应用。所以,看来能ping通不代表业务就正常啊。

B、 TCP协议3次握手的方式来检查80端口是否响应。

这种方式相对第一种方式,就要进步得多了。即便是能ping通,但是如果和应用的80端口无法建立3TCP握手,则说明该服务器上应用不正常,这种方式在很大程度上避免了服务进程问题导致的不响应用户请求的问题。但是,这样就一定保险吗?假设web应用的80端口是打开的,可以响应TCP方式的探测,但是想必大家经常遇到一种情况,打开网页的时候,却看到“HTTP 404 未找到…..。这种提示就说明服务进程是正常的,但是网页文件可能不正常,比如被误删除之类。所以,只靠TCP的检测方式也不能完全感知应用的健康程度。

C、 http的方式来检测80端口是否正常。

   这种方式相对前2种来说,就要更加可靠了。默认设置下设备会对应用服务器的80端口模拟一个httpGET /的请求,通过设备响应的页面是否包含完整的headerbody等关键元素来判断web应用是否健康,这种方式在通常情况下已经可以满足相当一部分用户对应用健康状态检测的需求了。但是,在某些情况下,这种方式依旧有局限。我们假设这种情况,如果这个web服务是一个门户网站,当我们直接访问首页的时候可以正常打开,而输入用户名、密码以后回车,却仍旧看到“HTTP 404未找到”,所以这个时候光靠GET /的方式来检测就不够了。通过定制http的检测方式,可以通过GET指定页面,使用指定的usernamepassword登录,并指定登录以后页面包含的关键字这一系列的操作来完成深度的健康检测。

 

上面案例是以web应用为例,在现实环境中,客户的应用种类是多种多样,所以设备需要能够争对各种应用均衡做到应用级别的检测才行,以下是一些常见应用及需要的检测方式:

Radius服务:设备应能够模拟一个radius的认证请求,请求中包含一个合法的用户名和

             密码,在检测应用的时候,如果Radius服务器返回验证通过的请求,则

             说明服务状态正常;如果返回不通过或者不返回信息,则说明不正常。

LDAP服务:  设备应能够模拟一个LDAP的认证请求,请求中包含一个合法的用户名和

             密码,在检测应用的时候,如果LDAP服务器返回验证通过的请求,则

             说明服务状态正常;如果返回不通过或者不返回信息,则说明不正常。

FTP服务:   设备应能够模拟一个FTP的认证请求,请求中包含一个合法的用户名和

             密码,在检测应用的时候,如果FTP服务器返回验证通过的请求,则

             说明服务状态正常;如果返回不通过或者不返回信息,则说明不正常。

   POP3服务:  设备应能够模拟一个POP3的认证请求,请求中包含一个合法的用户名和

             密码,在检测应用的时候,如果POP3服务器返回验证通过的请求,则

             说明服务状态正常;如果返回不通过或者不返回信息,则说明不正常。

 

   同理,一些常见服务,比如SMTPRSTPSIPNTPIMAPSNMPDNSHTTPSUDPcompound等都应该能够内置支持。除了这些内置的健康状态以外,设备最好能够支持外部的健康检测方式,比如通过编写脚本来实现我们需要的健康状态检测。例如,争对TFTP的访问原理,我们编写了一个外部健康检查程序,判断是否能从服务器取回指定的文件:

 

          #! /bin/bash

    server=$1

    file=$1".txt"

    if [ -f $file ] ; then

    rm -f $file

    fi

    tftp $server << END

    get $file

    quit

    END

 

    #! /bin/bash          

           

    if test "$HM_SRV_IPADDR" == "" ; then             

    echo "Please check ENV Var 'HM_SRV_IPADDR'"             

    exit 1             

    fi                                                                      

    server=$HM_SRV_IPADDR                                                                

    file=$server".txt"            

    /tftp_getfile.sh $server                                     

    grep  "test" $file                            

    exit $?

 

通过以上脚本,我们可以在tftp服务器上,通过获取指定的文件,以获取的结果成功或者失败来达到深度检测应用健康状态的问题,而不是只是简单的通过UDP协议方式去检测。

 

通过以上内部内置的检测方式和灵活的外部检测方式,我们可以实现争对客户特定应用进行深度定制的健康状态检测方式。

 

(待续)

t.d.


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


 

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
16天前
|
缓存 Kubernetes Docker
GitLab Runner 全面解析:Kubernetes 环境下的应用
GitLab Runner 是 GitLab CI/CD 的核心组件,负责执行由 `.gitlab-ci.yml` 定义的任务。它支持多种执行方式(如 Shell、Docker、Kubernetes),可在不同环境中运行作业。本文详细介绍了 GitLab Runner 的基本概念、功能特点及使用方法,重点探讨了流水线缓存(以 Python 项目为例)和构建镜像的应用,特别是在 Kubernetes 环境中的配置与优化。通过合理配置缓存和镜像构建,能够显著提升 CI/CD 流水线的效率和可靠性,助力开发团队实现持续集成与交付的目标。
|
1月前
|
存储 缓存 算法
HashMap深度解析:从原理到实战
HashMap,作为Java集合框架中的一个核心组件,以其高效的键值对存储和检索机制,在软件开发中扮演着举足轻重的角色。作为一名资深的AI工程师,深入理解HashMap的原理、历史、业务场景以及实战应用,对于提升数据处理和算法实现的效率至关重要。本文将通过手绘结构图、流程图,结合Java代码示例,全方位解析HashMap,帮助读者从理论到实践全面掌握这一关键技术。
99 14
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
AI技术深度解析:从基础到应用的全面介绍
人工智能(AI)技术的迅猛发展,正在深刻改变着我们的生活和工作方式。从自然语言处理(NLP)到机器学习,从神经网络到大型语言模型(LLM),AI技术的每一次进步都带来了前所未有的机遇和挑战。本文将从背景、历史、业务场景、Python代码示例、流程图以及如何上手等多个方面,对AI技术中的关键组件进行深度解析,为读者呈现一个全面而深入的AI技术世界。
158 10
|
13天前
|
机器学习/深度学习 自然语言处理 搜索推荐
自注意力机制全解析:从原理到计算细节,一文尽览!
自注意力机制(Self-Attention)最早可追溯至20世纪70年代的神经网络研究,但直到2017年Google Brain团队提出Transformer架构后才广泛应用于深度学习。它通过计算序列内部元素间的相关性,捕捉复杂依赖关系,并支持并行化训练,显著提升了处理长文本和序列数据的能力。相比传统的RNN、LSTM和GRU,自注意力机制在自然语言处理(NLP)、计算机视觉、语音识别及推荐系统等领域展现出卓越性能。其核心步骤包括生成查询(Q)、键(K)和值(V)向量,计算缩放点积注意力得分,应用Softmax归一化,以及加权求和生成输出。自注意力机制提高了模型的表达能力,带来了更精准的服务。
|
6天前
|
JSON 小程序 UED
微信小程序 app.json 配置文件解析与应用
本文介绍了微信小程序中 `app.json` 配置文件的详细
52 12
|
13天前
|
供应链 搜索推荐 API
深度解析1688 API对电商的影响与实战应用
在全球电子商务迅猛发展的背景下,1688作为知名的B2B电商平台,为中小企业提供商品批发、分销、供应链管理等一站式服务,并通过开放的API接口,为开发者和电商企业提供数据资源和功能支持。本文将深入解析1688 API的功能(如商品搜索、详情、订单管理等)、应用场景(如商品展示、搜索优化、交易管理和用户行为分析)、收益分析(如流量增长、销售提升、库存优化和成本降低)及实际案例,帮助电商从业者提升运营效率和商业收益。
105 20
|
24天前
|
存储 物联网 大数据
探索阿里云 Flink 物化表:原理、优势与应用场景全解析
阿里云Flink的物化表是流批一体化平台中的关键特性,支持低延迟实时更新、灵活查询性能、无缝流批处理和高容错性。它广泛应用于电商、物联网和金融等领域,助力企业高效处理实时数据,提升业务决策能力。实践案例表明,物化表显著提高了交易欺诈损失率的控制和信贷审批效率,推动企业在数字化转型中取得竞争优势。
97 16
|
29天前
|
安全 API 数据安全/隐私保护
速卖通AliExpress商品详情API接口深度解析与实战应用
速卖通(AliExpress)作为全球化电商的重要平台,提供了丰富的商品资源和便捷的购物体验。为了提升用户体验和优化商品管理,速卖通开放了API接口,其中商品详情API尤为关键。本文介绍如何获取API密钥、调用商品详情API接口,并处理API响应数据,帮助开发者和商家高效利用这些工具。通过合理规划API调用策略和确保合法合规使用,开发者可以更好地获取商品信息,优化管理和营销策略。
|
1月前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
117 3
|
1月前
|
机器学习/深度学习 搜索推荐 API
淘宝/天猫按图搜索(拍立淘)API的深度解析与应用实践
在数字化时代,电商行业迅速发展,个性化、便捷性和高效性成为消费者新需求。淘宝/天猫推出的拍立淘API,利用图像识别技术,提供精准的购物搜索体验。本文深入探讨其原理、优势、应用场景及实现方法,助力电商技术和用户体验提升。

热门文章

最新文章

推荐镜像

更多