通過Nginx實現負載均衡

2022-01-11 08:37:57 字數 1986 閱讀 2836

如何解決呢?

辦法一:更換伺服器,換台牛逼點的唄,4核換8核,8核換16核,16核....額,那這樣是不是很貴啊? 這是肯定的,所以呢

辦法二:不換伺服器,加伺服器,多弄幾天價廉的伺服器,這也是一種解決辦法。將請求分散到不同的伺服器上,這樣一來,壓力平攤了,多好。 老闆說:這個好,這個好。

針對辦法二,最關鍵的一點就是如何將請求分散到不同的伺服器上,這需要一種演算法,最最簡單的可以弄個隨機演算法,我之前在分布式儲存中提到過:

var list = db.imageserverinfo.where(c=>c.state==1

).tolist();

int servercount =list.count();

random r = new

random();

int i =r.next();

int j = i%r;

//獲取狀態為1(normal)的伺服器總數,隨機數去對其取餘。得到的就是我們的隨機索引,於是就可通過list[j]去獲取serverid,然後再去獲取serverip

但上面這段**有下面幾個問題:

1、語言限制,如果是前端請求,得寫段同樣的js**。

2、演算法太low,效率低。

那麼有沒有乙個通用的玩意兒可以實現這個呢。答案就是我們的nginx——反向**伺服器

請求流程:

我們不直接請求我們的服務位址,而是請求nginx位址,由nginx作為乙個中轉站,將請求經過處理後傳送到服務位址。這個處理就是經過nginx的演算法然後將請求導向到確定的某個服務位址,也就是上面說到的具體某台伺服器位址。

找到裡面server這個節點:設定預設埠的,我這裡設定成了82,因為80這麼好的埠,不能給它

控制台命令開啟nginx服務

或者直接雙擊nginx.exe開啟也可。

瀏覽器輸入:localhost:82,即可看到我們的nginx開啟成功

然後剩下就是配置的事情了,新增節點 取名為 zjgistdt.com,#為注釋,所以我們這裡就兩個服務位址。即對應我們的兩台伺服器位址

upstream zjgistdt.com
然後在server節點處進行關聯:

server 

location /

}

至此,你請求nginx伺服器即轉向zjgistdt.com定義的伺服器列表。

配置完成...簡單**。

部署nginx的這台機子ip為:192.168.0.30,而我們設定的埠號為82,

所以一切基於192.168.0.30:82/.....的請求都將轉向我們真實的兩台伺服器位址。

至此,所謂的負載均衡也就」完事兒「了,當然,我們的nginx能做的遠不止於此,如nginx直接返回靜態資源等等,就是你有需要再去拓展的東西,操作都是配置節點即可。

拓展:其實nginx算是一種節約成本的方式,如果有錢可以部署多個nginx,然後用企業級的負載均衡伺服器來在nginx上再加一層。如f5負載均衡器

負載均衡是一種技術,指通過某種演算法實現負載分擔的方法。通俗的講就是統一分配請求的裝置,負載均衡會統一接收全部請求,然後按照設定好的演算法將這些請求分配給這個負載均衡組中的所有成員,以此來實現請求(負載)的均衡分配。

f5是負載均衡產品的乙個品牌,其地位類似於諾基亞在手機品牌中的位置。除了f5以外,radware、array、a10、cisco、深信服和華夏創新都是負載均衡的牌子,因為f5在這類產品中影響最大,所以經常說f5負載均衡。

Nginx實現負載均衡

負載均衡 建立在現有網路結構之上,它提供了一種廉價有效透明的方法擴充套件網路裝置和伺服器的頻寬 增加吞吐量 加強網路資料處理能力 提高網路的靈活性和可用性。負載均衡,英文名稱為load balance,其意思就是分攤到多個操作單元上進行執行,例如web伺服器 ftp伺服器 企業關鍵應用伺服器和其它關...

nginx實現負載均衡

目錄結構 conf 配置目錄 html 靜態頁面目錄 logs 日誌目錄 sbin 主程式 nginx支援的負載均衡方式 輪詢 預設 每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能自動剔除。weight 指定輪詢機率,weight和訪問比率成正比,用於後端伺服器效能不均的...

nginx實現負載均衡

初步設想 1個前端伺服器 n個應用伺服器,實現不宕機發布。前提 後端應用共享session,可以考慮redis實現。初步實驗 nginx 2個tomcat執行測試 先準備乙個nginx,nginx.conf檔案內容如下 然後準備2個tomcat 設定埠分別為8084 8086。在root資料夾下面各...