溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Nginx中怎么實(shí)現(xiàn)集群和負(fù)載均衡

發(fā)布時(shí)間:2021-06-18 18:29:39 來(lái)源:億速云 閱讀:186 作者:Leah 欄目:大數(shù)據(jù)

本篇文章給大家分享的是有關(guān)Nginx中怎么實(shí)現(xiàn)集群和負(fù)載均衡,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

Nginx的集群和負(fù)載均衡

Nginx中怎么實(shí)現(xiàn)集群和負(fù)載均衡

負(fù)載均衡配置案例1

設(shè)置上游服務(wù)器:

# 設(shè)置上游服務(wù)器:
upstream imgserver{
#weight權(quán)重	maxfails錯(cuò)誤次數(shù) fail_timeout超時(shí)時(shí)間.down 表示單前的server暫時(shí)不參與負(fù)載.其它所有的非backup機(jī)器down或者忙的時(shí)候,請(qǐng)求backup機(jī)器.  在upstream里設(shè)置ip_hash,就可以針對(duì)同一個(gè)C類地址段中的客戶端選擇同一個(gè)后端服務(wù)器可以解決session問題. Sticky基于cookie的負(fù)載均衡.
ip_hash; # 建議不要和Sticky同時(shí)使用;
Sticky; #建議不要和ip_hash同時(shí)使用;
server 192.168.1.100:80; weight:2 max_fails=2 fail_timeout=30s;
server 192.168.1.101:80; weight:2 max_fails=2 fail_timeout=30s;
server 127.0.0.1:7070 backup;
server 127.0.0.1:9090 down; 
}

下游調(diào)用

# 下游調(diào)用:
location ~ \.(jpg|jpeg|png|gif) {
#轉(zhuǎn)發(fā)到上游服務(wù)器的地址池
proxy_pass imgserver;
# 將用戶的IP信息同時(shí)帶過去,要不然,后端服務(wù)器獲得的IP地址將是代理服務(wù)器的IP;
proxy_set_header X-Forwarded-For $remote_addr;
}

負(fù)載均衡案例2,通過ip_hash

ubuntu 下負(fù)載均衡搭建
1準(zhǔn)備條件 服務(wù)器最少3臺(tái)

修改配置文件:
cd /etc/nginx/conf.d/



1.添加一個(gè)配置文件
	upstream a.com {
  		server  服務(wù)器IP:端口;
 		server  127.0.0.1:80;
  		server  127.0.0.1:8080;
	}

2 配置虛擬主機(jī)

vim /etc/nginx/sites-available/default

server{
    listen 80;
    server_name a.com;
    location / {
	proxy_pass         http://自己配置;(轉(zhuǎn)發(fā)到哪里)
    }

ln -s /etc/nginx/sites-available/{nidepaizhi}  /etc/nginx/sites-enabled/

//檢查配置文件是否有錯(cuò)
nginx -t 
//重啟服務(wù)器
nginx -s reload

3其他參數(shù)配置
	擴(kuò)展:

	1.輪詢(默認(rèn)方式)

	每個(gè)請(qǐng)求按時(shí)間順序逐一分配到后端服務(wù)器,如果后端服務(wù)器down掉,能自動(dòng)剔除

	2 weight

	指定輪詢幾率,weight和訪問比率成正比,用于后端服務(wù)器性能不均的情況。
	 upstream bakend {
    	 server 服務(wù)器IP:端口 概率值;
    	 server 127.0.0.1:80 weight=10;
 	}
	3 ip_hash

每個(gè)請(qǐng)求按訪問ip的hash結(jié)果分配,

	這樣每個(gè)訪客固定訪問一個(gè)后端服務(wù)器,可以解決session的問題

	upstream resinserver{

     		ip_hash;
  
   		server 192.168.159.10:8080;
   
  		server 192.168.159.11:8080;

	}

4 

 location / {
        proxy_pass         http://a.com;   #這個(gè)地址一定是上面定義的負(fù)載均衡的名字
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }

均衡策略:

我之前所常用的策略:
基于cookie值區(qū)別用戶做負(fù)載均衡.(在cookie儲(chǔ)存sessionID,通過sessionID進(jìn)行判斷)
通過redis直接使用redis保存用戶的的登錄信息進(jìn)行判斷.
nginx可以根據(jù)客戶端IP進(jìn)行負(fù)載均衡,在upstream里設(shè)置ip_hash,就可以針對(duì)同一個(gè)C類地址段中的客戶端選擇同一個(gè)后端服務(wù)器,除非那個(gè)后端服務(wù)器宕了才會(huì)換一個(gè),可以解決session問題.。
Sticky基于cookie的負(fù)載均衡.

我現(xiàn)在的均衡策略:
就是不配Sticky或ip_hash直接用按權(quán)重輪訓(xùn)就行了, session同步什么的都不用擔(dān)心.現(xiàn)在都把session存在Redis中了.

百度轉(zhuǎn)載的五種均衡分配方式: nginx可以根據(jù)客戶端IP進(jìn)行負(fù)載均衡,在upstream里設(shè)置ip_hash,就可以針對(duì)同一個(gè)C類地址段中的客戶端選擇同一個(gè)后端服務(wù)器,除非那個(gè)后端服務(wù)器宕了才會(huì)換一個(gè)。 nginx的upstream目前支持的5種方式的分配

1、輪詢(默認(rèn))
每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器down掉,能自動(dòng)剔除。 
upstream backserver { 
server 192.168.0.14; 
server 192.168.0.15; 
} 

2、指定權(quán)重
指定輪詢幾率,weight和訪問比率成正比,用于后端服務(wù)器性能不均的情況。 
upstream backserver { 
server 192.168.0.14 weight=10; 
server 192.168.0.15 weight=10; 
} 

3、IP綁定 ip_hash
每個(gè)請(qǐng)求按訪問ip的hash結(jié)果分配,這樣每個(gè)訪客固定訪問一個(gè)后端服務(wù)器,可以解決session的問題。 
upstream backserver { 
ip_hash; 
server 192.168.0.14:88; 
server 192.168.0.15:80; 
} 

4、fair(第三方)
按后端服務(wù)器的響應(yīng)時(shí)間來(lái)分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配。 
upstream backserver { 
server server1; 
server server2; 
fair; 
} 

5、url_hash(第三方)
按訪問url的hash結(jié)果來(lái)分配請(qǐng)求,使每個(gè)url定向到同一個(gè)后端服務(wù)器,后端服務(wù)器為緩存時(shí)比較有效。 
upstream backserver { 
server squid1:3128; 
server squid2:3128; 
hash $request_uri; 
hash_method crc32; 
} 

在需要使用負(fù)載均衡的server中增加 

proxy_pass http://backserver/; #轉(zhuǎn)發(fā)到哪里去
upstream backserver{ 
ip_hash; 
server 127.0.0.1:9090 down; (down 表示單前的server暫時(shí)不參與負(fù)載) 
server 127.0.0.1:8080 weight=2; (weight 默認(rèn)為1.weight越大,負(fù)載的權(quán)重就越大) 
server 127.0.0.1:6060; 
server 127.0.0.1:7070 backup; (其它所有的非backup機(jī)器down或者忙的時(shí)候,請(qǐng)求backup機(jī)器) 
} 

max_fails :允許請(qǐng)求失敗的次數(shù)默認(rèn)為1.當(dāng)超過最大次數(shù)時(shí),返回proxy_next_upstream 模塊定義的錯(cuò)誤 

fail_timeout:max_fails次失敗后,暫停的時(shí)間

以上就是Nginx中怎么實(shí)現(xiàn)集群和負(fù)載均衡,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI