• Nginx详解十五:Nginx场景实践篇之负载均衡


    负载均衡

    GSLB(全局的负载均衡,往往是以国家为单位,或者以省为单位)

    SLB

     Nginx就是一个典型的SLB模型,

    分为四层负载均衡和七层负载均衡

    七层负载均衡可以处理应用层,如thhp信息,Nginx就是典型的七层负载均衡SLB

    Nginx实现负载均衡的原理

    配置语法

    配置语法:upstream name {...};
    默认状态:-;
    配置方法:http

    在/opt/app/下创建code1、code2、code3目录,并放入3个html

     

     在/etc/nginx/conf.d/下准备好三个conf

    检查配置语法并重载

    nginx -tc /etc/nginx/nginx.conf
    nginx -s reload -c /etc/nginx/nginx.conf

     

    在另一台服务器上配置一个conf

    每次请求都会不一样,且轮流分配(轮询),此时如果有一台机器挂了,如server2挂了,那么则会在server1和server3之间不断轮询,不再访问server2

    upstream举例

    upstream backend{
      server backend1.example.com weight=5;
      server backend1.example.com:8080;
      server unix:/tmp/backen3;

      server backup1.example.com:8080 backup;
      server backup2.example.com:8080 backup;
    }

    后端服务器在负载均衡调度中的状态

    不管如何刷新都只有server3提供服务,即8001和8002不服务

    把访问8003的请求drop掉:iptables -I INPUT -p tcp --dport 8003 -j DROP

    服务端会把请求转到server2上,后面不管怎么刷新,都会访问server2

    清理掉iptable规则再访问:iptables -F

    又变回server3,且一直是server3

    轮询策略与加权轮询

    调度算法

    加权轮询:以下配置为,当有7个请求过来的时候,会有5和请求分配给8002

     

    ip_hash:同一个IP永远只访问一个后端,解决身份验证失效的问题

    不管怎么刷新,都只定位到一台服务器上

    url_hash(1.7.2之后的版本支持):

    配置语法:hash key [consistent];
    默认状态:-;
    配置方法:upstream

    此时不会执行轮询,访问哪一个url,hash绑定到一个后端服务后,就永远只访问那一台机器

  • 相关阅读:
    Linux下使用Nexus搭建Maven私服
    使用Nexus搭建Maven内部服务器
    windows Maven3.0 服务器配置搭建
    Linux中more和less命令用法
    Jmeter使用入门
    【转载】 DeepMind发表Nature子刊新论文:连接多巴胺与元强化学习的新方法
    【转载】 十图详解tensorflow数据读取机制(附代码)
    【转载】 tensorflow中 tf.train.slice_input_producer 和 tf.train.batch 函数
    (待续) https://zhuanlan.zhihu.com/p/27629294
    ( 待续 ) https://zhuanlan.zhihu.com/p/57864886
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/10514042.html
Copyright © 2020-2023  润新知