Nginx反向代理負載均衡

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

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

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

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

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

    (一)、環境規劃

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

(二)、模塊說明

一、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;
}web

④. 定義後端失敗重試的間隔-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 ;
}vim

二、 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地址信息;後端

(三)、部署實現

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

二、配置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便可服務器

三、訪問測試

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

相關文章
相關標籤/搜索