本文转载自微信公众号《六脉神剑小六六》作者六脉神剑的程序人生。转载本文请联系六脉神剑的程序生活公众号。前言文字已收录在我的GitHub仓库,欢迎Star:https://github.com/bin392328206/six-finger种一棵树的最佳时机是十年前,后面的公司很多小伙伴都信得过就这些了服务治理,自动化运维,所以我们要自己设置很多东西,比如自己创建一个域名,绑定它的代理机,它的web负载均衡。所以今天我就来看看负载均衡。不想看文字的话,看图就很清楚了。您如何看待负载平衡?服务器,以提高网站、应用程序、数据库或其他服务的性能和可靠性。相信很多朋友,听到负载均衡这个词,首先想到的就是我们所说的Nginx,因为这是一个比较贴近我们开发的组件。第二个呢?也就是我们的Springcloud组件自带负载均衡(ribbon),这也是第三个比较贴近我们开发的?其实我们k8s里面的服务也是可以做负载均衡的。目前主流容器使用的第四种方式是在我们的DNS之后做一个负载均衡的SLB(这个就是之前负责运费的多点)。为什么我们需要负载均衡?请看下面的图片。当我们访问一个网站时,如果流量突然增加,就会导致我们的服务不可用(单点故障)。并发的基石)有个负载均衡架构image.pngweb架构image.png说说SLBimage.png相信很多公司都有用。负载均衡的组成负载均衡实例(Instances):一个负载均衡实例是一个运行中的负载均衡服务,用于接收流量并转发给后端服务器,添加至少一个监听器(Listeners)和两个ECS实例。监听器:监听客户端的请求并转发给后端服务器,监听器也会对后端服务器进行健康检查。后端服务器:后端服务器是一组接收前端请求的ECS实例。您可以单独将ECS实例添加到后端服务器池中;healthcheckimage.pngNginx负载均衡如果你还没有用过容器,那一定是Nginx用于负载均衡。image.png至于构造,这里就不说了。百度一下就知道了。SpringCloud负载均衡Ribbonspringcloud提供了一系列的组件,我们使用ribbon来实现负载均衡,而eureka也内置了ribbon,所以引入eureka之后,其实可以直接使用ribbon。Ribbon中的负载均衡是在客户端使用的,或者说也可以成为消费者。当一个消费者访问一个提供者时,它会执行一个负载均衡算法,然后找到一个最优的提供者来提供服务。image.pngK8s服务管理负载均衡(Ingress)k8S的负载均衡方式有很多种有,这里只说一种。IngressIngress是k8s的一个资源对象。该对象允许外部访问k8s服务。通过创建一组规则来配置访问权限。这些规则定义了哪些入站连接可以访问哪些服务;Ingress仅支持HTTP和HTTPS协议;ingress可以配置为提供外部可访问的服务url、负载均衡流量、SSL终止,并提供虚拟主机名配置。ingress的工作流程如下:image.png大概的访问路径如下:用户访问-->LB-->ingress-nginx-service-->ingressController-ingress-nginx-pod-->后端podcalledintheingressfield面试题nginx的四层和七层负载均衡的区别简单理解四层和七层负载均衡所谓四层就是基于IP+端口的负载均衡;第七层是基于URL等应用层信息的负载均衡;同样,也有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡。也就是说,二层负载均衡会通过一个虚拟的MAC地址接收请求,然后分配给真实的MAC地址;三层负载均衡会通过虚拟IP地址接收请求,然后分配给真实IP地址;Layer1通过虚拟IP+端口接收请求,然后分发到真实服务器;第7层通过虚拟URL或主机名接收请求,然后分发到真实服务器。所谓四层到七层负载均衡,就是在后台服务器做负载均衡的时候,根据第四层的信息或者第七层的信息来决定流量如何转发。比如第四层的负载均衡就是发布第三层的IP地址(VIP),然后加上第四层的端口号来判断哪些流量需要做负载均衡,对流量进行NAT处理需要处理的,转发给后台服务器。并记录该TCP或UDP流量是由哪个服务器处理的,本次连接的所有后续流量也都转发到同一台服务器处理。七层负载均衡是在四层的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特点,比如同一个web的负载均衡服务器,除了根据VIP加80端口来区分流量是否需要处理外,还可以根据七层URL、浏览器类型、语言来决定是否进行负载均衡。比如你的web服务器分为两组,一组是中文,一组是英文,那么七层负载均衡可以在用户访问你的域名时自动识别用户的语言,然后选择对应的语言服务器组进行负载均衡处理。负载平衡器通常称为第4层交换机或第7层交换机。四层交换机主要分析IP层和TCP/UDP层,实现四层流量负载均衡。七层交换机除了支持四层负载均衡外,还会分析应用层信息,比如HTTP协议URI或者Cookie信息。最后,作为一个互联网工具人,你必须知道用户流量流转的全过程,这样你才能掌握流量的每一个环节,也就是先把东西串起来,再把细节一个一个地拆解。
