• Nginx作为负载均衡服务


    Nginx作为负载均衡服务简介

    Nginx负载均衡

    GSLB(全局负载均衡)

     

    调度中心节点:一个全局的调度节点;

    调度节点:一个局部调度节点;

    应用服务中心节点:一个全局的应用服务调度节点;

    应用服务:一个局部应用服务节点;

    调度中心节点管理着调度节点;

    应用服务中心节点管理着应用服务;

    举例:

    第一步:张三请求局部调度节点,局部调度节点则返回服务地址给张三;

    第二步:张三根据局部调度节点返回的服务地址,请求局部应用服务,局部应用服务则返回结果给张三。

    SLB(负载均衡)

     

    调度节点与服务节点处于一个逻辑单元里面,这样对于部分服务的实时性、响应性是非常好的。

    Nginx使用的就是SLB。

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

    四层负载均衡

     

    按照网络OSI模型可以分为四层负载均衡和七层负载均衡;

    四层负载均衡:在OSI模型里面的传输层,传输层能支持到tcp/ip协议,所以只需要转发tcp/ip协议的包,就可以实现负载均衡。

    优势:性能非常好,只需要在最底层应用处理,而不需要进行一些复杂的逻辑,只需要包的转发就行

    七层负载均衡

    七层负载均衡主要是在应用层使用,所以它可以完成很多应用层的协议请求,比如HTTP协议的负载均衡,它可以实现HTTP信息的改写,头信息的改写,应用规则的控制。

    Nginx就是典型的七层负载均衡SLB。

     nginx 作为负载均衡服务配置

    Nginx负载均衡模型图

     

    upstream server就相当于配置的虚拟服务池

    upstream配置语法

    •  Syntax: upstream name { ... }
    •  Default: — 
    •  Context: http

    负载均衡案例配置

    server1.conf

    server {
        listen       8001;
        server_name  localhost;
    
        #charset koi8-r;
    
        location / {
            root   /opt/app/code1;
            index  index.html index.htm;
        }
    }
    

      

    server2.conf

    server {
        listen       8002;
        server_name  localhost;
    
        #charset koi8-r;
    
        location / {
            root   /opt/app/code2;
            index  index.html index.htm;
        }
    
    }
    

      

    server3.conf

    server {
        listen       8003;
        server_name  localhost;
    
        #charset koi8-r;
    
        location / {
            root   /opt/app/code2;
            index  index.html index.htm;
        }
    
    }
    

      

    upstream_test.conf

        upstream imooc {
            server 192.168.1.112:8001;
            server 192.168.1.112:8002;
            server 192.168.1.112:8003;
        }
    
    server {
        listen       80;
        server_name  www.zhangbiao.com;
    
        resolver  8.8.8.8;
    
        location / {
            proxy_pass http://imooc;
            proxy_redirect default;
    
        }
    

      

    刷新一次

    刷新二次

     

    属性三次

     

    Upstream举例

    upstream backend {
        server backend1.example.com weight=5;
        server backend2.example.com:8080;
        server unix:/tmp/backend3;
        
        server backup1.exmple.com:8080 backup;
        server backup2.example.com:8080 backup;
    }
    

    Nginx作为负载均衡服务_backup状态演示

     upstream_test.conf

        upstream imooc {
            server 192.168.1.112:8001 down;
            server 192.168.1.112:8002 backup;
            server 192.168.1.112:8003 max_fails=1 fail_timeout=10s;
        }
    
    
    server {
        listen       80;
        server_name  localhost www.zhangbiao.com;
    
        access_log  /var/log/nginx/test_proxy.access.log  main;
        resolver  8.8.8.8;
    
        location / {
            proxy_pass http://imooc;
            include proxy_params;
        }
    }

    backup 表示备用服务器,平时用不上,一旦其他服务器挂了,就会启用备用服务器。

     Nginx作为负载均衡服务_轮询策略与加权轮询

    调度算法

    weight 加权配置

        upstream imooc {
            server 192.168.1.112:8001;
            server 192.168.1.112:8002;
            server 192.168.1.112:8003 weight=5;
        }
    
    
    server {
        listen       80;
        server_name  localhost www.zhangbiao.com;
    
        access_log  /var/log/nginx/test_proxy.access.log  main;
        resolver  8.8.8.8;
    
        location / {
            proxy_pass http://imooc;
            include proxy_params;
        }
    }
    

      

     7个请求会有5个请求会访问192.168.1.112:8003服务,1个访问192.168.1.112:8001服务,1个访问192.168.1.112:8002服。

    ip_hash配置

        upstream imooc {
            ip_hash;
            server 192.168.1.112:8001;
            server 192.168.1.112:8002;
            server 192.168.1.112:8003;
        }
    
    
    server {
        listen       80;
        server_name  localhost www.zhangbiao.com;
    
        access_log  /var/log/nginx/test_proxy.access.log  main;
        resolver  8.8.8.8;
    
        location / {
            proxy_pass http://imooc;
            include proxy_params;
        }
    

      

    功能:

    • 同一个IP每次都是请求到固定的后端服务器  

    url_hash配置 (一般使用这个)

        upstream imooc {
            hash $request_uri;
            server 192.168.1.112:8001;
            server 192.168.1.112:8002;
            server 192.168.1.112:8003;
        }
    
    
    server {
        listen       80;
        server_name  localhost www.zhangbiao.com;
    
        access_log  /var/log/nginx/test_proxy.access.log  main;
        resolver  8.8.8.8;
    
        location / {
            proxy_pass http://imooc;
            include proxy_params;
        }
    

      

    功能:

    • 按照url的hash 结果来分配请求,这样是的来自同一位置的 IP 访问到固定的后端服务。

    ip1 访问以下请求每次获取的内容都是一样的

    http://192.168.1.112/index.html
    

      

    ip2 访问以下请求每次获取的内容都是一样的

    http://192.168.1.112/index.html
    

      

    ip2 访问以下请求每次获取的内容都是一样的

    http://192.168.1.112/index.html
    

      

  • 相关阅读:
    云计算OpenStack核心组件---keystone身份认证服务(5)
    云计算OpenStack环境搭建(4)
    云计算OpenStack共享组件---Memcache缓存系统(3)
    云计算OpenStack共享组件---信息队列rabbitmq(2)
    【面试题41】和为s的两个数字VS和为s的连续整数序列
    反转单链表
    【面试题40】数组中只出现一次的数字
    【面试题39】二叉树的深度
    【面试题38】数字在排序数组中出现的次数
    最少钱币问题
  • 原文地址:https://www.cnblogs.com/crazymagic/p/11029415.html
Copyright © 2020-2023  润新知