<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Nginx是一款高效能的Http和反向代理伺服器,也是一個IMAP/POP3/SMTP伺服器(電子郵件代理),最早開發這個產品的目的之一也是作為郵件代理伺服器。因它的穩定性、豐富的功能集、範例組態檔和低系統資源的消耗及其高並行效能強而廣泛應用於各種生產部署之中。而且nginx是基於事件驅動模型(epoll)實現的I/O多路複用,並通過非同步、非阻塞的方式處理請求。在高連線並行的情況下,Nginx是Apache伺服器不錯的替代品。而我們為什麼要選擇Nginx呢?
這就是為什麼要選擇Nginx的原因。而且Nginx的功能特點還不止這些,上面只是簡單列舉了幾點常見功能。
在我們實際生產中,一臺伺服器的處理能力、儲存空間是有限的, 不要企圖去換更強大的伺服器,對大型網站而言,不管多麼強大的伺服器,都滿足不了網站持續增長的業務需求。這種情況下,更恰當的做法是增加一臺伺服器來分擔原有伺服器的存取及儲存壓力。實際上這就是我們所謂的負載均衡,Nginx作為負載均衡伺服器,它通過反向代理來對後端多臺伺服器負載均衡。首先來說一下Nginx負載均衡策略及負載均衡演演算法。
upstream 這個模組是寫一組被代理的伺服器地址(即定義的後端伺服器列表中選取一臺伺服器接受使用者的請求 ),然後設定負載均衡的演演算法。 來看一下最基本的負載均衡範例:
upstream test { server 10.20.151.114:80; server 10.20.151.115:80; } server { .... location / { proxy_pass http://test; --請求轉向 test 定義的伺服器列表 }
(1)輪詢
最基本的設定方法,上面的例子就是輪詢的方式,它是upstream模組預設的負載均衡預設策略。每個請求會按時間順序逐一分配到不同的後端伺服器。
upstream test { server 10.20.151.114:80; weight=1; server 10.20.151.115:80; weight=2; }
(2)ip_hash
每個請求按存取IP的hash結果分配,同一個IP使用者端固定存取一個後端伺服器。可以保證來自同一ip的請求被打到固定的機器上,可以解決session問題。
upstream test { ip_hash; --同一個IP使用者端固定存取一個後端伺服器 server 10.20.151.114:80; weight=1; server 10.20.151.115:80; weight=2; }
(3)url_hash
按存取url的hash結果來分配請求,使每個url定向到同一個後端伺服器。一旦快取住了資源,再此收到請求,就可以從快取中讀取。
upstream test { hash $request_uri; --實現每個url定向到同一個後端伺服器 server 10.20.151.114:80; weight=1; server 10.20.151.115:80; weight=2; }
(4)least_conn
把請求轉發給連線數較少的後端伺服器。輪詢演演算法是把請求平均的轉發給各個後端,使它們的負載大致相同;但是,有些請求佔用的時間很長,會導致其所在的後端負載較高。這種情況下,least_conn這種方式就可以達到更好的負載均衡效果。
upstream test { least_conn; --把請求轉發給連線數較少的後端伺服器 server 10.20.151.114:80; weight=1; server 10.20.151.115:80; weight=2; }
(5)weight
權重方式,在輪詢策略的基礎上指定輪詢的機率。
upstream test { server 10.20.151.114:80; weight=1; server 10.20.151.115:80; weight=2; --輪詢的機率相對上一條要大 }
(6)fair
此種演演算法可以依據頁面大小和載入時間長短智慧地進行負載均衡,也就是根據後端伺服器的響應時間來分配請求,響應時間短的優先分配。
upstream test { server 10.20.151.114:80; weight=1; server 10.20.151.115:80; weight=2; fair; --實現響應時間短的優先分配 }
nginx負載均衡設定狀態引數
- down:表示當前的server暫時不參與負載均衡。
- backup:預留的備份機器。當其他所有的非backup機器出現故障或者忙的時候,才會請求backup機器,因此這臺機器的壓力最輕。
- max_fails:允許請求失敗的次數,預設為1。當超過最大次數時,返回proxy_next_upstream 模組定義的錯誤。
- fail_timeout:在經歷了max_fails次失敗後,暫停服務的時間單位秒。max_fails可以和fail_timeout一起使用。
Nginx可分為二層、三層、四層、七層負載均衡。 所謂的二層就是基於MAC地址的負載均衡, 三層就是基於IP地址的負載均衡,四層就是基於IP+埠的負載均衡,七層就是基於URL等應用層資訊的負載均衡。因篇幅較長這裡不再做具體的介紹,有興趣的可自行百度。這裡以七層負載均衡來做範例。
環境準備:準備3臺Nginx伺服器,一臺作為負載均衡伺服器,其它兩臺作為後端伺服器。
10.20.151.240 ----proxy_server(負載均衡伺服器)
10.20.151.112 ----server1(後端伺服器1)
10.20.151.113 ----server2(後端伺服器2)
(1)負載均衡伺服器設定
vim /etc/nginx/nginx.conf --設定主組態檔 vim /etc/nginx/conf.d/test.conf --設定子組態檔
(2)後端伺服器設定
vim /usr/local/nginx/conf/nginx.conf --修改組態檔 vim /usr/local/nginx/html/index.html --新增測試資料
(3)負載均衡測試
在瀏覽器端存取http://10.20.151.240/,在實際生產中,這兩個頁面返回的結果是一樣的,這裡是為了測試效果,所以返回了不同的內容。而為什麼重新整理後又會返回不同結果呢?那是因為負載均衡預設的均衡策略(或演演算法)是輪詢,所以每重新整理一次就會從不同的後端伺服器返回不同的請求結果,減輕單個後端伺服器的存取量,提升使用者端的存取效率,從而達到負載均衡的效果。
當我新增權重(weight)時
再次存取http://10.20.151.240/
加權重和沒加權重有什麼區別呢?在實際生產中,我們一般會將設定較高的伺服器的權重設定高一點,其實就是使用者端在存取時,權重較高的伺服器會被多次請求,這樣能減輕設定較低的伺服器的請求量,從而更好的實現負載均衡。
當我新增backup狀態引數時
再次存取http://10.20.151.240/
此時我故意停掉第一臺後端伺服器,繼續存取http://10.20.151.240/
當我給113這臺後端伺服器新增backup後,它就會作為熱備伺服器,新增的主要目的就是當我其他後端伺服器都宕機的情況下,我的熱備伺服器還能繼續提供同樣的服務(注意:在其他後端伺服器還未宕機之前,該熱備伺服器是不工作的)。因此負載均衡不僅能達到各個後端伺服器負載的均衡,同時通過設定相關轉態引數還能保證使用者端請求時不造成伺服器宕機的情況,保證了後端伺服器的穩定性。其他狀態引數這裡我不再做演示(因為設定方式都一樣)。
通過上述簡單案例不難看出負載均衡的重要性,不管是大中小型企業,都會用到負載均衡,尤其是某些大型購物網站,如果不做負載均衡,估計剛上線幾分鐘後端伺服器就會被使用者端的請求給弄癱瘓了。因此Nginx負載均衡實現的就是後端伺服器的平均分攤使用者端的存取壓力,同時藉助Nginx的高並行、高效能、高可靠性等特點,對我們的實際生產提供了最大化服務和效能保障。
到此這篇關於Nginx實現負載均衡的專案實踐的文章就介紹到這了,更多相關Nginx 負載均衡內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45