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

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM