在理解反向代理和負載均衡概念以前咱們首先要明白的是集羣的概念,簡單來講集羣就是幹相同事情的服務器,如web集羣、數據庫集羣、存儲集羣等,集羣有兩個主要做用一是提升網站處理用戶請求的能力二是提升網站運行的穩定性,通常來講集羣可分爲高可用集羣(HA)和負載均衡集羣(LB)而負載均衡集羣能夠用F五、A10等硬件設備來實現,也能夠用LVS(四成)、nginx(七層、1.9以後支持四層)等軟件來實現html
負載均衡簡單來講就是對用戶的請求進行調度管理和壓力分擔nginx
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 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
①.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地址信息;後端
[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便可服務器
在瀏覽器上輸入域名刷新測試結構app