A. nginx在做負載均衡時如何配置
1、下面的架構就是我們今天的演示結構,後端有兩台伺服器,分別是node1和node2,前端是一台web伺服器,然後在web伺服器上做負載均衡,將前端的訪問流量導到後端的兩個節點伺服器上。三個伺服器的IP地址分別是:web:192.168.1.210node1:192.168.1.211node2:192.168.1.212
2、按照這樣的架構,在後端的node1和node2節點上分配配置好需要訪問的網站,然後為了方便測試,我們將兩個網站的主頁分別改成下面的內容。便於區分訪問的節點。
3、後端兩個節點配置好以後,我們再來配置web伺服器里的負載均衡配置,首先使用默認配置,先打開/etc/nginx/nginx.conf配置文件,在http區塊里添加upstream塊內容,及配置了兩個後端伺服器,後端負載均衡集群的名稱是backend,記下這個名稱。
4、然後再打開/etc/nginx/conf.d/default.conf這個配置文件,在server區塊里,把location裡面的內容改成圖中所示內容。即將所有訪問192.168.1.210的流量代理到後端的backend集群里。
5、配置文件配置好以後,使用nginx-t命令測試一下配置文件,保證配置文件是ok狀態,然後執行nginx命令啟動nginx伺服器。
6、啟動後在瀏覽器上輸入前端web伺服器的ip地址192.168.1.210,然後可以看到第一次是node1響應的,然後刷新一下以後,又變成了node2響應的。就這樣實現了負載均衡的效果。由兩個伺服器分別響應,是因為默認的負載均衡演算法是輪詢演算法,即兩個節點輪流來。
7、然後我們還可以嘗試一下加權輪詢演算法,即給不同的節點配置不同的權重,權重高一點的伺服器,響應的多一些,權重第一點的響應少一些。加權輪詢演算法配置,在後端伺服器後面加上權重值weight即可。配置好以後,執行nginx-t命令檢測配置文件,確認無誤後,執行nginx-sreload命令重新載入配置文件。
8、通過加權輪詢的方式,我們無法通過手動一次次點擊,最後來統計次數。但是我們可以使用自動化工具來統計。使用的工具是一款叫做httpd-tools的軟體,安裝好以後,提供了一個ab命令
9、然後我們來執行ab命令進行測試,常用的格式是:ab-n1000-c50http://localhost這個命令是在210伺服器上執行的。表示一共執行1000次訪問,每次發送50個請求。
10、然後我們登錄到後端的node1伺服器上,打開nginx的訪問日誌,從中可以看到ab命令測試的訪問信息里,訪問來源都是ApacheBench,因此可以通過可以來源來統計nginx響應的次數。命令是:grepApacheBenchaccess.log|wcnode1和node2節點上的統計結果分別是714和286,如下面圖中所示,雖然沒有達到5:2的權重比例,但是也非常接近了。說明這個配置生效了。
B. 開源Nginx可視化配置工具,快速搞定Nginx配置難題
《開源精選》是我們分享Github、Gitee等開源社區中優質項目的欄目,包括技術、學習、實用與各種有趣的內容。本期推薦的是一個Nginx界面配置工具——nginxWebUI。
nginxWebUI是一款圖形化管理nginx配置的工具, 可以使用網頁來快速配置nginx的各項功能, 包括http協議轉發、tcp協議轉發、反向代理、負載均衡、靜態html伺服器、ssl證書自動申請、續簽、配置等,配置好後可一建生成nginx.conf文件, 同時可控制nginx使用此文件進行啟動與重載,完成對nginx的圖形化控制閉環。
本項目是基於solon的web系統,資料庫使用h2, 因此伺服器上不需要安裝任何資料庫。
本系統通過Let's encrypt申請證書,使用acme.sh腳本進行自動化申請和續簽,開啟續簽的證書將在每天凌晨2點進行續簽,只有超過60天的證書才會進行續簽,只支持在linux下簽發證書。
添加tcp/ip轉發配置支持時, 一些低版本的nginx可能需要重新編譯,通過添加–with-stream參數指定安裝stream模塊才能使用,但在ubuntu 18.04下,官方軟體庫中的nginx已經帶有stream模塊,不需要重新編譯。本系統如果配置了tcp轉發項的話,會自動引入ngx_stream_mole.so的配置項,如果沒有開啟則不引入,最大限度優化ngnix配置文件。
打開 http://ip:8080 進入主頁。
登錄頁面,第一次打開會要求初始化管理員賬號。
進入系統後,可在管理員管理裡面添加修改管理員賬號。
在http參數配置中可以配置nginx的http項目,進行http轉發,默認會給出幾個常用配置,其他需要的配置可自由增刪改查,可以勾選開啟日誌跟蹤,生成日誌文件。
在TCP參數配置中可以配置nginx的steam項目參數,進行tcp轉發。
在反向代理中可配置nginx的反向代理即server項功能,可開啟ssl功能,可以直接從網頁上上傳pem文件和key文件,或者使用系統內申請的證書,可以直接開啟http轉跳https功能,也可開啟http2協議。
在負載均衡中可配置nginx的負載均衡即upstream項功能,在反向代理管理中可選擇代理目標為配置好的負載均衡。
在證書管理中可添加證書,並進行簽發和續簽,開啟定時續簽後,系統會自動續簽即將過期的證書。
備份文件管理,這里可以看到nginx.cnf的備份 歷史 版本,nginx出現錯誤時可以選擇回滾到某一個 歷史 版本。
最終生成conf文件,可在此進行進一步手動修改,確認修改無誤後,可覆蓋本機conf文件,並進行校驗和重啟,可以選擇生成單一nginx.conf文件還是按域名將各個配置文件分開放在conf.d下。
遠程伺服器管理,如果有多台nginx伺服器,可以都部署上nginxWebUI,然後登錄其中一台,在遠程管理中添加其他伺服器的ip和用戶名密碼,就可以在一台機器上管理所有的nginx伺服器了。
提供一鍵同步功能,可以將某一台伺服器的數據配置和證書文件同步到其他伺服器中。
本系統提供http介面調用,只要開 http://xxx.xxx.xxx.xxx:8080/doc.html 即可查看smat-doc介面頁面。
介面調用需要在header中添加token,其中token的獲取需要在管理員管理中,打開用戶的介面調用許可權,然後通過用戶名密碼調用獲取token介面,才能得到token,然後在knife4j的文檔管理中設置全局token。
jar安裝說明:
以Ubuntu操作系統為例:
1 安裝java運行環境和nginx
Ubuntu:
Centos:
Windows:
2 下載最新版發行包jar
有新版本只需要修改路徑中的版本即可。
3 啟動程序
docker安裝說明
本項目製作了docker鏡像,同時包含nginx和nginxWebUI在內,一體化管理與運行nginx。
1 安裝docker容器環境
ubuntu:
centos:
2 下載鏡像
3 啟動容器
—END—
開源協議:MulanPSL-1.0
開源地址:https://github.com/cym1102/nginxWebUI
C. Nginx多台伺服器實現負載均衡
Nginx負載均衡伺服器: IP:192.168.0.4(Nginx-Server)
Web伺服器列表:
Web1: 192.168.0.5(Nginx-Node1/Nginx-Web1)
Web2:192.168.0.7(Nginx-Node2/Nginx-Web2)
實簡困讓現目的:用戶訪問Nginx-Server時,通過Nginx負載均衡到Web1和Web2伺服器。
配置注釋如下:尺槐
創建文件夾准備存放配置文件
啟動負載均衡伺服器192.168.0.4(Nginx-Server)
創建文件夾用於存放web頁面
編輯內容如下:
啟動192.168.0.5(Nginx-Node1/Nginx-Web1)
創建文件夾用於存放web頁面
編輯攔局內容如下:
啟動192.168.0.7(Nginx-Node2/Nginx-Web2)