Nginx反向代理負載均衡

一、反向代理和負載均衡的概念

在理解反向代理和負載均衡概念之前我們首先要明白的是集羣的概念,簡單來說集羣就是幹相同事情的服務器,如web集羣、數據庫集羣、存儲集羣等,集羣有兩個主要作用一是提高網站處理用戶請求的能力二是提高網站運行的穩定性,一般來說集羣可分爲高可用集羣(HA)和負載均衡集羣(LB)而負載均衡集羣可以用F5、A10等硬件設備來實現,也可以用LVS(四成)、nginx(七層、1.9之後支持四層)等軟件來實現

  • 負載均衡簡單來說就是對用戶的請求進行調度管理和壓力分擔

  • 反向代理簡單來說就是接收用戶請求代替用戶向後端訪問

    二、配置反向代理負載均衡服務

    (一)、環境規劃

hostname server type Ip addr
WEB01 web 10.0.0.7
WEB02 web 10.0.0.8
WEB03 web 10.0.0.9
LB01 LB 10.0.0.5

(二)、模塊說明

1、upstream 模塊

  • 常用功能
    ①. 定義後端可調度節點信息放在http區塊
    例子:
    upstream jiang {
    server 10.0.0.7:80;
    server 10.0.0.8:80;
    server 10.0.0.9:80;
    }
    ②. 實現權重值負載訪問功能-weight
    upstream jiang {
    server 10.0.0.7:80 weight=3;
    server 10.0.0.8:80 weight=1;
    server 10.0.0.9:80 weigth=1;
    }
    ③. 定義後端訪問的失敗次數-max_fails

upstream jiang {
server 10.0.0.7:80 max_fails=3;
server 10.0.0.8:80 max_fails=3;
server 10.0.0.9:80 max_fails=3;
}

④. 定義後端失敗重試的間隔-fail_timeout
upstream jiag {
server 10.0.0.7:80 max_fails=3 fail_timeout=10s;
server 10.0.0.8:80 max_fails=3;
server 10.0.0.9:80 max_fails=3;
}

說明:在嘗試多次失敗後在指定超時時間過去之後,會再給相應節點一次機會
⑤. 定義後端服務的熱備節點-backup(負載節點服務器都掛了,使用備份)
upstream jiang {
server 10.0.0.7:80 max_fails=3 fail_timeout=10s;
server 10.0.0.8:80 max_fails=3;
server 10.0.0.9:80 max_fails=3 backup;
}

模塊調度算法
①. 定義輪詢調度算法-rr-默認調度算法
採用平均分配原則
②. 定義權重調度算法-wrr
能者多勞
③. 定義靜態調度算法-ip_hash
用一個hash值記錄訪問的記錄,下次客戶端再去訪問的時候還是會把請求分配給上一次的服務器,訪問用戶反覆登陸;
upstream jiang {
ip_hash;
server 10.0.0.7:80 max_fails=3 fail_timeout=10s;
server 10.0.0.8:80 max_fails=3;
server 10.0.0.9:80 max_fails=3 ;
}
④. 定義最小的連接數-least_conn
看誰比較閒就把請求分配給誰
upstream oldboy {
least_conn;
server 10.0.0.7:80 max_fails=3 fail_timeout=10s;
server 10.0.0.8:80 max_fails=3;
server 10.0.0.9:80 max_fails=3 ;
}

2、 ngx_http_proxy_module模塊

①.proxy_pass 把客戶段的請求拋送給upstream模塊中的相應的地址池
location / {
proxy_pass http://jiang;
}
②.修改反向代理到後端請求頭信息-proxy_set_header
location / {
proxy_pass http://oldboy;
proxy_set_header host $host;
}
proxy_set_header X-Forwarded-For $remote_addr;---讓後端服務日誌裏寫入真正客戶端的IP地址信息;

(三)、部署實現

1、按照規劃部署好相應的環境,並創建好相應的虛擬主機(暫時忽略)

2、配置nginx反向代理負載均衡

[root@lb01 conf]# vim nginx.conf

worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream jiang {
server 10.0.0.7:80;
server 10.0.0.8:80;
server 10.0.0.9:80;
}
server {
listen 80;
server_name blog.etiantian.org;
root html;
index index.html index.htm;
location / {
proxy_pass http://jiang;
}
}
}
檢查語法重啓nginx即可

3、訪問測試

在瀏覽器上輸入域名刷新測試結構
Nginx反向代理負載均衡
Nginx反向代理負載均衡
Nginx反向代理負載均衡

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章