1. 程式人生 > >使用nginx實現負載均衡(Docker版本)

使用nginx實現負載均衡(Docker版本)

現在服務都要處理高併發的問題,如果將服務部署在一臺伺服器上,當很多人同時訪問可能會使伺服器記憶體過高而導致系統崩潰,所以就需要使用負載均衡來減輕伺服器的負擔。通過修改nginx配置可以實現負載均衡。
nginx文件連結:http://www.nginx.cn/doc/

舉個例子:
在這裡插入圖片描述
如圖所示,有多個使用者訪問同一網站,中間伺服器(x.x.x.x)並不會做任何業務邏輯的處理,它只負責轉發到後面三個伺服器,讓後面的伺服器做業務邏輯處理,這就是負載均衡。其實所謂的幾層幾層的負載均衡並不像神經網路那樣有一層一層的神經元,所謂四層負載均衡是指在傳輸層(osi協議的第四層)根據ip和埠號來做負載均衡,七層負載均衡是指在應用層(osi協議的第七層)根據不同的瀏覽器或者不同的語言等等做負載均衡。nginx做的負載均衡是四層負載均衡。

下面我使用Docker來模擬負載均衡(用虛擬機器開多臺機器也可以,但太耗記憶體):
1.下載Docker
Docker下載連結地址(根據作業系統下載各個版本,我是mac):https://www.docker.com/get-started
2.下載映象
Docker下載安裝完成之後開啟終端下載映象
Docker映象地址:https://hub.docker.com/explore
Docker映象很豐富,可以根據自己的需求下載不同的映象
映象下載命令

docker pull nginx

下載完成後通過 docker images來檢視映象
3.生成容器
Docker通過映象生成容器,就像把類例項化
生成容器命令(mac 版本 其他版本命令請自行搜尋)

docker run -p 80 --name  容器名字 -t -i nginx /bin/bash

執行完成後會直接進入容器內部
當然也可以通過attach命令進入容器
上面是隨機分配埠繫結本機80埠 也可以指定埠繫結 例如:12345:80
再執行一次命令生成兩個容器
通過 docker ps -a檢視容器id、執行狀態及繫結埠號
4.複製程式碼到容器
將你的網站複製到容器內部

docker cp 目錄或檔案 容器id:目錄
例如:docker cp index.html 48cf24251211:/data

5.修改nginx配置
修改兩個容器內部的nginx配置並執行nginx,確保兩個容器的網站都能執行
在你的本機安裝nginx(注意不是在容器裡)
找到nginx.conf檔案
修改nginx配置將你的兩個容器繫結的ip和埠號寫入配置 文件連結:

http://www.nginx.cn/doc/standard/httpupstream.html
修改完成後執行nginx,如果你想自己編寫nginx.conf,執行時加上你的nginx.conf 的路徑
5.訪問網站
訪問本機網站會自動跳轉到另外兩個容器所繫結的埠,至於訪問策略在nginx文件中有提到。