一、集羣概念前端
(1)、集羣介紹nginx
(2)、爲何要使用集羣算法
二、 負載均衡後端
(3)、nginx負載均衡實戰服務器
a、nginx負載均衡概述併發
Web服務器,直接面向用戶,每每要承載大量併發請求,單臺服務器難以負荷,我使用多臺WEB服務器組成集羣,前端使用Nginx負載均衡,將請求分散的打到咱們的後端服務器集羣中,
實現負載的分發。那麼會大大提高系統的吞吐率、請求性能、高容災
Nginx要實現負載均衡須要用到proxy_pass代理模塊配置負載均衡
Nginx負載均衡與Nginx代理不一樣地方在於ide
Nginx代理僅代理一臺服務器,而Nginx負載均衡則是將客戶端請求代理轉發至一組upstream虛擬服務池性能
Nginx能夠配置代理多臺服務器,當一臺服務器宕機以後,仍能保持系統可用。url
b、upstream配置
在nginx.conf 》 http區域中
upstream slave_pools{ server 192.168.2.10:80; server 192.168.2.12:80; }
在nginx.conf > http 區域 > server區域 > location配置中
添加proxy_pass
location / { proxy_pass http://slave_pools;
include proxy_params; # 須要手動建立 }
proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 60; proxy_buffering on; proxy_buffer_size 32k; proxy_buffers 4 128k;
此時初步負載均衡已經完成,upstream默認按照輪訓方式負載,每一個請求按時間順序逐一分配到後端節點。
c、upstream分配策略
weight權重
upstream slave_pools { server 192.168.2.10:80 weight=5; server 192.168.2.12:80 weight=10;#這個節點訪問比率是大於8000的 }
ip_hash
每一個請求按訪問ip的hash結果分配,這樣每一個訪客固定訪問一個後端服務器 upstream slave_pools { ip_hash; server 192.168.2.10:80; server 192.168.2.12:80; }
backup
在非backup機器繁忙或者宕機時,請求backup機器,所以機器默認壓力最小
upstream slave_pools { server 192.168.2.10 weight=5; server 192.168.2.12; server 192.168.2.13 backup; }
d、nginx負載均衡調度算法
調度算法 概述
輪詢 按時間順序逐一分配到不一樣的後端服務器(默認)
weight 加權輪詢,weight值越大,分配到的訪問概率越高
ip_hash 每一個請求按訪問IP的hash結果分配,這樣來自同一IP的固定訪問一個後端服務器
url_hash 按照訪問URL的hash結果來分配請求,是每一個URL定向到同一個後端服務器
least_conn 最少連接數,那個機器連接數少就分發
1.輪詢(不作配置,默認輪詢)
2.weight權重(優先級)
3.ip_hash配置,根據客戶端ip哈希分配,不能和weight一塊兒用