Web服務器,直接面向用戶,每每要承載大量併發請求,單臺服務器難以負荷,我使用多臺WEB服務器組成集羣,前端使用Nginx負載均衡,將請求分散的打到咱們的後端服務器集羣中,
實現負載的分發。那麼會大大提高系統的吞吐率、請求性能、高容災
Nginx要實現負載均衡須要用到proxy_pass代理模塊配置html
Nginx負載均衡與Nginx代理不一樣地方在於前端
Nginx代理僅代理一臺服務器,而Nginx負載均衡則是將客戶端請求代理轉發至一組upstream虛擬服務池node
Nginx能夠配置代理多臺服務器,當一臺服務器宕機以後,仍能保持系統可用。linux
1 . 關閉防火牆 nginx
iptables -F sed -i 's/enforcing/disabled/' /etc/selinux/config systemctl stop firewalld systemctl disable firewalld
2 . 準備服務器 web
nginx1 192.168.13.121 # 做爲nginx負載均衡器 只要我訪問這個負載均衡器,查看頁面的結果,究竟是來自於 nginx2 192.168.13.24 # web服務,提供一個頁面 nginx3 192.168.13.79 # web服務,提供一個頁面
3 . 配置服務器 算法
先配置兩個nginx web頁面 django
192.168.13.24 : # 準備一個 index.html 寫入 你好,我是192.168.13.24機器 vim /opt/nginx112/conf/nginx.conf #先查看 vim /opt/nginx112/html/index.html # 編輯頁面 192.168.13.79 : # 準備一個 index.html 寫入 老了老弟,我是192.168.13.79 vim /opt/nginx112/conf/nginx.conf #先查看 vim /opt/nginx112/html/index.html # 編輯頁面
而後啓動兩個nginx web服務器 vim
[root@localhost opt]# nginx
配置nginx負載均衡器 192.168.13.121機器上 windows
# 修改配置 nginx.conf [root@localhost opt]# vim /opt/nginx112/conf/nginx.conf 在http裏面.server{} 上面 寫入以下內容 : upstream s15webserver { #負載均衡池 ip_hash; server 192.168.13.79 ; server 192.168.13.24 ; } # 而後在虛擬主機中添加 反向代理配置,將用戶的請求,直接轉發給 負載均衡池中的服務器 server { listen 80; #當個人請求來自於 192.168.13.121時,走這>個虛擬主機 server_name 192.168.13.121; #charset koi8-r; #access_log logs/host.access.log main; #核心配置,就在這,一條proxy_psss參數便可 location / { proxy_pass http://s15webserver; #負載均衡池 #root html; #index index.html index.htm; }
負載均衡池解釋 :
定義一個負載均衡池,負載均衡的算法有 調度算法 概述 輪詢 #按時間順序逐一分配到不一樣的後端服務器(默認) weight #加權輪詢,weight值越大,分配到的訪問概率越高 ip_hash #每一個請求按訪問IP的hash結果分配,這樣來自同一IP的固定訪問一個後端服務器 url_hash #按照訪問URL的hash結果來分配請求,是每一個URL定向到同一個後端服務器 least_conn #最少連接數,那個機器連接數少就分發 1.輪詢(不作配置,默認輪詢) 2.weight權重(優先級) 3.ip_hash配置,根據客戶端ip哈希分配,不能和weight一塊兒
例 :
weight權重
upstream django { server 10.0.0.10:8000 weight=5; server 10.0.0.11:9000 weight=10;#這個節點訪問比率是大於8000的 }
ip_hash
每一個請求按訪問ip的hash結果分配,這樣每一個訪客固定訪問一個後端服務器 upstream django { ip_hash; server 10.0.0.10:8000; server 10.0.0.11:9000; }
backup
在非backup機器繁忙或者宕機的時候,請求backup機器,所以機器默認壓力最小
upstream django { server 10.0.0.10:8000 weight=5; server 10.0.0.11:9000; server node.oldboy.com:8080 backup; }
啓動負載均衡器的nginx 服務
[root@localhost opt]# nginx
在客戶端windows中測試訪問,負載均衡器 192.168.13.121 ,反覆刷新 , 查看請求分發的結果