精华内容
下载资源
问答
  • 微服务的负载均衡
    千次阅读
    2022-03-10 23:13:49
    • 负载均衡指的是服务端(即使Nginx作为服务端,控制对多台tomcat进行负载均衡),使每个tomcat对于访问请求的负载均衡。
    • Bibbon是一个框架,提供负载均衡的算法,它的负载均衡是指的consumer对于provider的负载均衡
    • 服务清单

    服务清单就是ip地址+端口号(就是在注册中心看到的客服端的信息)

    • 如何使用Ribbon

    在RestTemplate对象上使用@roadBalanced开启负载均衡

    • RestTemplate对象有四种访问方式(get、post、put、delete)

    可以指定String、json、对象返回

    • 使用RestTemplate

    在consumer中@RequestMapping('指定访问的注册中心地址',返回类型)

    更多相关内容
  • Nginx实现负载均衡 web均衡负载 webservice负载均衡 Nginx实现负载均衡配制全说明 为了多台后台的web、webservice服务能均衡负载,可以使用nginx进行处理 1)配置文件全配制ok 2)有两个完整的web服务做例子,可以...
  • DNS轮询教程-负载均衡之DNS轮询,本例通过2台服务器实现DNS均衡负载.zip
  • 宝塔配置均衡负载

    千次阅读 2020-05-13 15:02:09
    #这个地址一定是上面定义的负载均衡的名字 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } 四、访问测试域名fuzai.yo....

    一、准备条件 服务器最少3台

    二、每个服务器先配置当前域名如下:

     1)   配置站点指定可以访问文件路径

     

     

    2)添加完成之后关闭跨站攻击

      

    三、测试网站域名增加配置(此域名必须备案)

    • upstream myyocotv{
    •       #轮询(默认方式)
    •       server 123.11.123.195:8081;
    •       server 123.22.123.157:8081;
    •       server 127.0.0.1:8081;
    • }
    • location / {
    •       # proxy_ignore_client_abort   on;
    •       proxy_pass http://myyocotv;#这个地址一定是上面定义的负载均衡的名字
    •       proxy_set_header Host $host;
    •       proxy_set_header X-Real-IP $remote_addr;
    •       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    •     }

    四、访问测试域名fuzai.yo.com每次刷新不同,如下:

     

     

    至此简单的轮询模式配置成功

     

    五、其他参数扩展nginx的五种负载算法及扩展

    1) 轮询(默认),每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器死机,故障系统被自动剔除,使用户访问不受影响。 

    2)Weight,指定轮询权值,Weight值越大,负载的权重就越大。分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下。

    举例:

    • upstream myyocotv {    
    • server 192.168.0.14 weight=10;    
    • server 192.168.0.15 weight=10;    

    3)ip_hash,每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题。

    举例:

    • upstream myyocotv {  
    • ip_hash;  
    • server 192.168.0.14:88;  
    • server 192.168.0.15:80;  

    4)  fair(第三方)

    比上面两个更加智能的负载均衡算法。根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块。

    举例:

    • upstream myyocotv {  
    • server 192.168.0.14;   
    • server 192.168.0.15;  

    5)  url_hash(第三方)

    按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx 的hash软件包。

    在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法  

    举例:

    • upstream myyocotv {  
    • server 192.168.0.14:80;   
    • server 192.168.0.15:80;
    • hash $request_uri;    
    • hash_method crc32;    

     Tips:

    • upstream bakend{
    • #定义负载均衡设备的Ip及设备状态    
    • ip_hash;    
    • server 1192.168.0.14:80 down;    
    • server 192.168.0.15:80 weight=2;     
    • server 127.0.0.1:8081;    
    • server 127.0.0.1:7070 backup;    
    • }

    在需要使用负载均衡的server中增加  

    proxy_pass http://myyocotv/;  

     

     

     

    upstream区块特殊指令和用法及每个设备的状态设置为: 

    1.upstream:定义集群信息

    2.server: 定义集群节点

    3.down 表示单前的server暂时不参与负载  

    4.weight 默认为1.weight越大,负载的权重就越大。

    5.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误 

    6. fail_timeout : max_fails次失败后,暂停的时间。重新检查间隔时间(默认10s),失败指定次数(max_fails)后,间隔(fail_timeout)时间后,重试一次,失败则结束(成功后下次检测还是3次机会)被动监测

    举例:

    • upstream myyocotv {  
    • server 192.168.0.14:8081 weight=1 max_fails=1 fail_timeout=3;  
    • server 192.168.0.15:8081 weight=1 max_fails=1 fail_timeout=3;  
    • }  

    7.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

    8.nginx支持同时设置多组的负载均衡,用来给不用的server来使用。
    client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug  

    client_body_temp_path 设置记录文件的目录 可以设置最多3层目录  
    location 对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡

    展开全文
  • 负载均衡A10考试题库

    2018-08-29 17:05:43
    负载均衡A10考试题库
  • win7 双网络负载均衡

    2018-03-02 08:34:08
    windows下多网络负载均衡 windows下多网络负载均衡 windows下多网络负载均衡 windows下多网络负载均衡
  • H3C负载均衡配置指导

    2018-08-09 17:19:40
    负载均衡配置指导帮助设置防火墙负载均衡的操作,有一定的帮助。
  • 什么是负载均衡  负载均衡,英文名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部...
  • nginx配置 +负载均衡+https协议 完整的配置以及nginx 启动 停止 重新加载
  • java selector 简易负载均衡例子
  • 当然Nginx最强大的功能还是分发请求,不仅提供了哈希,一致性哈希,负载均衡等多种请求分发模式,还保证了自己服务的轻量和稳定。一台Nginx服务器常年工作在高并发请求的环境下,也极少宕机。 在Nginx负载均衡模式下...
  • nginx负载均衡配置文件实例:基本配置说明文档和一个配置好的nginx.conf文件实例
  • 在介绍Nginx的负载均衡实现之前,先简单的说下负载均衡的分类,主要分为硬件负载均衡和软件负载均衡,硬件负载均衡是使用专门的软件和硬件相结合的设备,设备商会提供完整成熟的解决方案,比如F5,在数据的稳定性...
  • HP服务器负载均衡,实现多网卡均衡负载
  • Oracle RAC提供两种方式实现负载均衡,第一种是纯技术手段,即在用户连接时,根据系统当前的负载情况决定由哪个节点处理用户请求;第二种是面向业务,人为的把应用切分成很多service,通过某个service过来的连接请求...
  • 3.2、弘积负载均衡 3.2.1、配置节点(类似F5 poolmembers) 3.2.2、配置定义健康检查 延伸:不同poolmember采用不同健康检查(与F5类似) 目录 3.2.3、配置虚拟服务(类似F5 poolmembers) 3 3.2.4、...
  • 主要介绍了golang grpc 负载均衡的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 首先我们先介绍一下什么是负载均衡:负载平衡(Loadbalancing)是一种计算机网络技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最佳化资源使用、最大化吞吐率、最小...
  • 主要介绍了Java Grpc实例创建负载均衡详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • windows搭建nginx负载均衡,内容详情请见文档,安装包官网下载即可。
  • 主要介绍了MySQL如何实现负载均衡功能,学习过数据库的朋友们都会知道MySQL,那么如何在MySQL下实现负载均衡功能呢?本文就将为大家细致地介绍一下
  • apache负载均衡设置方法
  • 用springboot实现负载均衡,https访问对外端口,内网实现服务和服务提供者。
  • 微服务(Spring Cloud)——负载均衡

    千次阅读 2021-03-06 18:59:25
    负载均衡 组件库: Spring Cloud Netflix 组件库 组件: Ribbon 二、负载均衡介绍 (一)、什么是负载均衡 负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量...

    一、概述

    负载均衡
    组件库: Spring Cloud Netflix 组件库
    组件: Ribbon

    二、负载均衡介绍

    (一)、什么是负载均衡
    负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
    负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。—— 百度百科

    (二)、微服务中客户端负载均衡模式和服务端负载均衡模式之间如何选择
    1.客户端负载均衡模式
    在这里插入图片描述
    使用背景: 客户端在注册时,能通过Eureka的服务发现获取微服务集群中的服务节点列表和
    节点状态。
    前提: 1.机器列表要保存在客户端;2.机器列表要能够及时的动态更新,以便于获取节点的最新状态。
    使用: 有了上诉背景和前提条件,客户端本地就能实现负载均衡策略了

    2.服务端实现负载均衡策略
    在这里插入图片描述
    使用背景: 使用背景同样是微服务(spring cloud)集群服务节点
    前提:与客户端负载均衡策略不同的是,服务端负载均衡策略需要由中间件来实现,例如Nginx、F5。
    使用: 有了上诉背景和前提条件,就可以使用服务端负载均衡策略了。

    3.spring cloud中两种负载均衡模式的比较

    • List item
    客户端负载均衡模式服务端负载均衡模式
    开发团队灵活修改一般位于网关层,由NetOpts把控修改
    运维成本低运维成本较高
    非常依赖注册中心通常不依赖
    一般仅适用于微服务框架适用于多种环境,比如Tomcat,Jboss等

    4.总结
    一般而言,大型应用通常是客户端+服务端负载均衡搭配来使用的。

    三、深入Ribbon

    (一)、Ribbon实现负载均衡策略和原理,加载方式,IPing机制
    1.特点:
    组件库丰富:整套负载均衡由7个具体的策略组成,无论你是什么特殊需求,都有合适的策略供你选择
    适配性强:给谁都能用,跟多个组件都能搭配,能跟Sprig Cloud里的多个组件(eureka、feign、gateway、zuul、hystrix)搭配使用;
    此外,Ribbon可以脱离SpringCloud应用在一般项目中

    2.Ribbon的基本工作模式(IPing+IRule)
    在这里插入图片描述
    当Eureka接到Http请求时,此时Eureka虽然拥有所有服务节点的信息,但它不知道该如何选择才能满足负载均衡,所以Eureka将请求转到Ribbon。

    • IPing:IPing是Ribbon的healthcheck机制,检查目标节点是否还在线,一般不会主动向服务节点发起healthcheck,而是Ribbon后台静默处理。
    • IRule: Ribbon 组件库,各种负载均衡策略都继承自IRule接口。所有经过Ribbon的请求,都会先请求IRule,由IRule通过负载均衡策略选择指定的目标机器。
      3.Ribbon负载均衡七龙珠之底层七种负载均衡策略
      Ribbon的LoadBalancer的更底层内置了7中负载均衡策略
      第一种:随机策略(RandomRule),自然是随性而为,随机选择服务名称对应的服务节点。
      第二种:轮询策略(RoundRobinRule),一个一个来,谁不用急,底层使用了CAS+自旋锁的方式来保证线程安全。
      第三种:重试策略(RetryRule),一次不行再来第二次,使用了类似于装饰器设计模式,相当于重试+实际模式的方式,所以需要指定真正被执行的负载均衡策略。
      第四种:权重策略(WeightedResponseTimeRule),谁响应快,那么谁被选中的几率就高,该规则会自动根据服务节点的响应时间来计算权重,响应快则权重高。该Rule继承自RoundRobinRule,所以服务器刚启动时采用轮询策略,当权重数据积累足够后才使用WeightedResponseTimeRule模式。
      第五种:空闲策略(BestAvailableRule),谁最闲谁先来,在过滤掉故障服务后,选择过去30分钟类并发量最小的服务节点。当然服务器刚启动时,统计结果未生成时,依然使用轮询的方式。
      第六种:下限策略(AvailabilityFilteringRule),基于RoundRobinRule来选择服务节点,但必须满足它的最低要求,否在不予采纳,10次以内选择种为止。
      第七种:自主策略(ZoneAvoidanceRule),以机房大区(Zone)和可用性作为过滤条件,选择可用的服务节点。满足大区要求,且服务可用且并发量不大的节点才会被选中。

    (二)、源码解析-LoadBalancer底层机制&可扩展性
    1.通过源码解读7中负载均衡策略

    RandomRule
    实现关键:
    在这里插入图片描述
    RoundRobinRule
    实现关键:
    在这里插入图片描述
    BestAvailableRule
    实现关键:
    父类是基于RoundRobinRule来实现的
    在这里插入图片描述

    RetryRule
    实现关键:
    RetryRule只是在底层实际策略上加了一层重试机制,下图的“answer”就是实际的策略,默认使用RoundRobinRule,但是可以替换的。
    在这里插入图片描述

    2.了解ribbon中的自旋锁(cas)
    在这里插入图片描述
    无限循环 + 退出条件

    for (;;) {
        int current = nextServerCyclicCounter.get();
        int next = (current + 1) % modulo;
        if (nextServerCyclicCounter.compareAndSet(current, next))
            return next;
    }
    

    对于 nextServerCyclicCounter.compareAndSet(current, next) 解释;
    这表示我当前拿到的这个current变量在内存中没有被改变过,则可以设置为+1后的值
    官方解释:
    1.取得当前值
    2.计算+1后的值
    3.如果当前值还有效(没有被)的话设置那个+1后的值
    4.如果设置没成功(当前值已经无效了即被别的线程改过了), 再从1开始.

    3.编程好习惯之防御性编程
    假定所有的输入项都是不安全的,对所有不安全的可能加以判断
    例如:RandomRule中的参数判断和线程状态判断
    在这里插入图片描述
    4.负载均衡器LoadBalancer原理解析
    Ribbon中一共用7中负载均衡策略,那么我们在调用的过程中,由谁来调用这些具体的策略呢?
    **答案:**关键就在于Ribbon对RestTemplate的改造。
    关键: @LoadBalancer注解

    在这里插入图片描述
    由@LoadBalancer注解标记RestTemplate,然后Ribbon将带有负载均衡功能的拦截器注入标记好的RestTemplate中,以此来实现负载均衡。

    5.IPing机制
    IPing机制是一种主动机制,他能主动判断当前服务器节点的状态,并决定该节点是否可作为目标节点,只用可用的节点才会作为负载均衡的目标节点。
    三种机制:
    Dummy:默认返回true,即认为所有节点都是可用的
    NIWSDiscoveryPing:借助Eureka服务发现机制获取节点状态,节点状态为UP则认为节点可用
    PingUrl: 主动向服务节点发起HTTP调用,如节点响应,才认为节点可用。
    在与Eureka组件搭配使用时,默认使用NIWSDiscoveryPing机制,以此减少服务节点负担。

    (三)、工作中如何选择负载均衡策略
    Ribbon 一共提供了七种负载均衡策略,默认使用的RoundRobinRule(轮询)策略,那么我们该如如何选择呢?
    提前说一下,如非必要,不用更改负载均衡策略,除非有相应的业务要求或者其他情况。
    1.连接数敏感模型
    当正常负载下,连接数与业务复杂度是非线性相关的接口,可以采用基于可用连接数的负载均衡策略(BestAvailableRule)。通俗的讲就是接口本身处理业务的时间不会因参数的变化而有较大的波动的接口

    2.RT数敏感模型
    当正常负载下,就是接口本身处理业务的时间会因参数的变化而有较大的波动的接口,可以采用基于服务响应时间的负载均衡策略(WeightedResponseTimeRule)

    3.成功率敏感模型
    当正常负载下,业务对于响应时间没有太高的要求,但是对成功率要求很高的系统,比如我曾经历过的报文系统,他对响应时间并没有太高的要求,但要求报文发送一定要成功,这种可以采用重试策略(RetryRule)

    (四)、Ribbon Demo演示
    1.创建ribbon-consumer
    总览:
    在这里插入图片描述

    依赖:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>spring-cloud-demo2</artifactId>
            <groupId>com.lys</groupId>
            <version>1.0.0-SNAPSHOT</version>
            <relativePath>../../pom.xml</relativePath>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>ribbon-consumer</artifactId>
        <packaging>jar</packaging>
        <name>ribbon-consumer</name>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
        </dependencies>
    
    </project>
    

    启动类:

    package com.lys.springcloud;
    
    import org.springframework.boot.WebApplicationType;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    import org.springframework.cloud.client.loadbalancer.LoadBalanced;
    import org.springframework.cloud.netflix.ribbon.RibbonClient;
    import org.springframework.context.annotation.Bean;
    import org.springframework.web.client.RestTemplate;
    
    /**
     * Created with IntelliJ IDEA.
     * User: Administrator
     * Date: 2021/2/4
     * Time: 22:44
     * Description: No Description
     */
    @SpringBootApplication
    @EnableDiscoveryClient
    public class RibbonConsumerApplication {
    
        @Bean  //相当于xml中的bean标签,主要是用于调用当前方法获取到指定对象
        @LoadBalanced
        public RestTemplate getRestTemplate(){
            return new RestTemplate();
        }
    
        public static void main(String[] args) {
            new SpringApplicationBuilder(RibbonConsumerApplication.class)
                    .web(WebApplicationType.SERVLET)
                    .run(args);
        }
    
    }
    
    
    

    用于测试的Controller

    package com.lys.springcloud;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.client.RestTemplate;
    
    /**
     * Created with IntelliJ IDEA.
     * User: Administrator
     * Date: 2021/3/7
     * Time: 22:19
     * Description: No Description
     */
    @RestController
    public class TestController {
    
        @Autowired
        private RestTemplate restTemplate;
    
        @GetMapping("/hello")
        public  String hello() {
            return restTemplate.getForObject("http://eureka-client/hello", String.class);
        }
    
    }
    
    

    2.启动多个应用
    (1)启动注册中心
    (2)启动两个eureka-client(服务节点)
    eureka-client是本次验证负载均衡时需要访问的服务节点,其中需要有接收请求的controller,如果大家想用本例来进行验证,请创建一个eureka-client,并使用不同的端口(除端口外,其他配置尽量保持一致)启动两次,然后再进行访问验证。因为篇幅原因就不演示怎么创建服务节点了。不过在我的其他文章中详细讲述了怎么搭建注册中心和创建服务提供者,详情参见:spring cloud 初体验之服务注册Eureka
    (3)启动本次Demo猪脚——ribbon-Consumer
    在这里插入图片描述
    在注册中心查看各个应用是否注册成功:
    在这里插入图片描述

    3.访问测试
    不断发起调用检查是否具有负载均衡效果
    在这里插入图片描述

    4.将负载均衡策略应用到全局或指定服务
    Ribbon默认使用的是RoundRobinRule(轮询策略)

    • 全局配置
      如何改变默认的负载均衡策略
      在ribbon-consumer项目中创建配置类 RibbonConfiguration,创建完成后依然启动注册中心,启动多个eureka-client,再启动ribbon-consumer不断访问测试,检查设置是否生效。
      RibbonConfiguration.java文件如下:
    package com.lys.springcloud;
    
    import com.netflix.loadbalancer.IRule;
    import com.netflix.loadbalancer.RandomRule;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    /**
     * Created with IntelliJ IDEA.
     * User: Administrator
     * Date: 2021/3/10
     * Time: 23:06
     * Description: No Description
     */
    @Configuration
    public class RibbonConfiguration {
    
        @Bean
        public IRule defaultLBStrategy() {
            //指定默认策略为随机策略,如不指定,系统默认策略是 RoundRobinRule(轮询策略)
            return new RandomRule();
        }
    }
    
    
    • 指定服务配置
      相对于全局配置,指定服务配置优先级更高
      方式一:
      配置文件方式在这里插入图片描述
    #指定服务配置 key格式:需要应用该策略的服务名 + .ribbon.NFLoadBalancerRuleClassName;
    #例如:eureka-client.ribbon.NFLoadBalancerRuleClassName
    eureka-client.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule
    

    方式二:
    注解方式

    package com.lys.springcloud;
    
    import com.netflix.loadbalancer.IRule;
    import com.netflix.loadbalancer.RandomRule;
    import org.springframework.cloud.netflix.ribbon.RibbonClient;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    /**
     * Created with IntelliJ IDEA.
     * User: Administrator
     * Date: 2021/3/10
     * Time: 23:06
     * Description: No Description
     */
    @Configuration
    @RibbonClient(name = "eureka-client", configuration = {com.netflix.loadbalancer.RandomRule.class})
    public class RibbonConfiguration {
    
    //    @Bean
    //    public IRule defaultLBStrategy() {
    //        //指定默认策略为随机策略,如不指定,系统默认策略是 RoundRobinRule(轮询策略)
    //        return new RandomRule();
    //    }
    }
    
    

    使用Ribbon接口TimeOut怎么破?

    现象:
    总有些奇怪的问题发生在程序员的周遭,我们通常称之为”玄学“,也通常甩锅给环境
    实际上,真正的环境问题其实是比较少见的,对于发生在ribbon身上的玄学——接口访问超时,很有可能是Ribbon中的LoadBalancer懒加载导致的,当你的接口方法本身耗时较长,而Ribbon又是在请求时才加载LoadBalancer,此时就极有可能导致接口超时,我们仔细观察log可以发现初始化时间发生在首次超时前。图示:
    在这里插入图片描述
    解决:
    知道原因还不够,怎么破?一手配置搞定
    配置Ribbon中LoadBalancer使用饥饿加载模式
    在这里插入图片描述

    ribbon.eager-load.enabled=true
    ribbon.eager-load.clients=ribbon-consumer
    

    此时我们发现,系统启动后Ribbon中LoadBalancer就直接被加载了。
    在这里插入图片描述

    展开全文
  • Nginx配置负载均衡

    千次阅读 2021-12-17 11:45:13
    1.负载均衡的作用 负载均衡:分摊到多个操作单元上进行执行,和它的英文名称很匹配。就是我们需要一个调度者,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡。 2.Nginx...

    1.负载均衡的作用

    负载均衡:分摊到多个操作单元上进行执行,和它的英文名称很匹配。就是我们需要一个调度者,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡。

    2.Nginx负载均衡的集中方式介绍

    2.1 轮询
    轮询方式是Nginx负载默认的方式,顾名思义,所有请求都按照时间顺序分配到不同的服务上,如果服务Down掉,可以自动剔除,如下配置后轮训130服务和131服务。

    upstream  test {
        server    192.168.199.130:80;
        server    192.168.199.131:80;
    }
    

    2.2 权重
    指定每个服务的权重比例,weight和访问比率成正比,通常用于后端服务机器性能不统一,将性能好的分配权重高来发挥服务器最大性能,如下配置后130服务的访问比率会是131服务的二倍。

    upstream  test {
    	#weigth参数表示权值,权值越高被分配到的几率越大
        #下面表示130有3分之2几率,131有3分之1几率
        server    192.168.199.130:80 weight=2;
        server    192.168.199.131:80 weight=1;
    }
    

    2.3 iphash
    每个请求都根据访问ip的hash结果分配,经过这样的处理,每个访客固定访问一个后端服务,如下配置(ip_hash可以和weight配合使用)。

    upstream  test {
        ip_hash; 
        server    192.168.199.130:80 weight=1;
        server    192.168.199.131:80 weight=2;
    }
    

    2.4 最少连接
    将请求分配到连接数最少的服务上。

    upstream  test {
        least_conn;
        server    192.168.199.130:80 weight=1;
        server    192.168.199.131:80 weight=2;
    }
    

    2.5 fair
    按后端服务器的响应时间来分配请求,响应时间短的优先分配。

    upstream  test {
        server    192.168.199.130:80 weight=1;
        server    192.168.199.130:80 weight=2;
        fair;  
    }
    

    3.Nginx配置
    以轮训为例,如下是nginx.conf完整代码。

    http {
       #负载均衡设置
       upstream  test {
           server    192.168.199.130:80;
           server    192.168.199.131:80;
       }
    
       server {
           listen       80;
           server_name  localhost;
    
           location / {
            #此处名称必须与upstream后面的名称一致
            #请求转向test定义的服务器列表    
            proxy_pass http://test; 
          }
        }
    }
    

    4.注意事项(针对于fastadmin项目的问题)

    4.1 样式图片不加载

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
          expires      30d;
          error_log /dev/null;
          access_log /dev/null;
          #加上这句
          proxy_pass http://test; 
    }
        
    location ~ .*\.(js|css)?$
    {
          expires      12h;
          error_log /dev/null;
          access_log /dev/null; 
          #加上这句
          proxy_pass http://test; 
    }
    

    4.2 访问某个.php文件 显示 File not found.

    注释 网站.conf文件下的以下代码(和问题1是同一个文件夹)
    在这里插入图片描述

    展开全文
  • 解析nginx负载均衡

    2018-09-22 18:11:02
    解析nginx负载均衡,经典
  • 手把手搭建简易负载均衡集群

    千次阅读 2021-10-12 22:10:55
    利用内网穿透和HAProxy实现简易的负载均衡
  • 系统设计基础 负载均衡

    千次阅读 2021-01-25 15:06:05
    二、负载均衡分类软件负载均衡硬件负载均衡DNS负载均衡三、负载均衡算法1. 健康检测(health checks)2. 负载均衡如何处理状态3. 负载均衡器如何选择后端服务器?随机轮询加权轮询IP哈希最小连接数一致性 Hash粘性...
  • NGINX负载均衡+监控

    千次阅读 2022-02-15 10:20:48
    一、配置NGINX运行环境 更新yum源 yum update 安装gcc yum install -y gcc-c++ 安装PCRE pcre-devel yum install -y pcre pcre-devel 安装zlib yum install -y zlib zlib-devel ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 536,930
精华内容 214,772
关键字:

均衡负载

友情链接: WYCODE.zip