Nginx作为负载均衡服务

一曲冷凌霜 提交于 2020-01-31 06:46:51

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

  

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!