Nginx 配置實例-配置負載均衡
0. 實例效果
1. 兩個 tomcat 的安裝(可選)
這裏的兩個 tomcat,實際是爲了模擬後端真實服務器,既然是默認後端服務器,當然也可以選用其他服務器軟件,所以這一步爲可選操作。
1.1 tomcat8081 的安裝
1.1.1 tomcat8081 安裝包的裝備
# 解壓 tomcat 安裝包
tar zxvf apache-tomcat-7.0.70.tar.gz
# 複製 tomcat 安裝文件到 /usr/local/tomcat8081 目錄
cp -vr apache-tomcat-7.0.70 /usr/local/tomcat8081
1.1.2 tomcat8081 配置文件的修改
因爲這裏不是使用 tomcat 的默認端口進行安裝,所以需修改 tomcat 的部分端口,修改 server.xml 文件,修改部分如下:
1.1.3 驗證
/usr/local/tomcat8081/bin/startup.sh # 啓動 8081 端口的 tomcat
/usr/local/tomcat8081/bin/shutdown.sh # 停止 8081 端口的 tomcat
ps aux | grep tomcat # 查看 tomcat 進程狀態
tomcat8081 啓動後,瀏覽器訪問 tomcat8081 所在主機 IP 及對應端口,顯示頁面如下:
1.1.4 相關目錄及文件的創建
在 /usr/local/tomca8081/webapps/ 目錄下創建 edu 目錄
mkdir -v /usr/local/tomcat8081/webapps/edu
在 edu 目錄下創建文件 a.html,並填寫如下內容:
<h1>edu-----8081 !!!</h1>
瀏覽器訪問 http://192.168.25.120:8081/edu/a.html,顯示頁面如下:
1.2 tomcat8082 的安裝
1.2.1 tomcat8082 安裝包的裝備
# 解壓 tomcat 安裝包
tar zxvf apache-tomcat-7.0.70.tar.gz
# 複製 tomcat 安裝文件到 /usr/local/tomcat8082 目錄
cp -vr apache-tomcat-7.0.70 /usr/local/tomcat8082
1.2.2 tomcat8082 配置文件的修改
因爲這裏不是使用 tomcat 的默認端口進行安裝,所以需修改 tomcat 的部分端口,修改 server.xml 文件,修改部分如下:
1.2.3 驗證
/usr/local/tomcat8082/bin/startup.sh # 啓動 8082 端口的 tomcat
/usr/local/tomcat8082/bin/shutdown.sh # 停止 8082 端口的 tomcat
ps aux | grep tomcat # 查看 tomcat 進程狀態
tomcat8082 啓動後,瀏覽器訪問 tomcat8082 所在主機 IP 及對應端口,此處爲 192.168.25.120:8082,顯示頁面如下:
1.2.4 相關目錄及文件的創建
在 /usr/local/tomca8082/webapps/ 目錄下創建 edu 目錄
mkdir -v /usr/local/tomcat8082/webapps/edu
在 vod 目錄下創建文件 a.html,並填寫如下內容:
<h1>edu-----8082 !!!</h1>
瀏覽器訪問 http://192.168.25.120:8082/edu/a.html,顯示頁面如下:
2. nginx 的安裝
2.1 安裝 pcre 依賴
su - root // 切換到 root 用戶
tar zxvf pcre-8.37.tar.gz // 解壓 pcre 安裝包
cd pcre-8.37 // 進入 pcre-8.37 目錄
./configure // 配置 pcre-8.37
make && make install // 編譯安裝 pcre-8.37
pcre-config --version // pcre 安裝成功後,查看其版本號
2.2 安裝其他依賴
su - root // 切換到 root 用戶
// 安裝其他依賴
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
2.3 Nginx 的安裝
su - root // 切換到 root 用戶
tar zxvf nginx-1.12.2.tar.gz // 解壓 nginx-1.12.2.tar.gz 安裝包
cd nginx-1.12.2 // 進入 nginx-1.12.2 目錄
./configure // 配置 nginx-1.12.2
make && make install // 編譯安裝 nginx-1.12.2
2.4 驗證
/usr/local/nginx/sbin/nginx // 啓動 nginx
/usr/local/nginx/sbin/nginx -s stop // 停止 nginx
ps -ef | grep nginx // 查看 nginx 進程狀態
啓動 nginx 之後,瀏覽器訪問 nginx 所在主機的 IP 即端口,此處爲 192.168.25.120:80(80爲默認短褲,訪問時可省略),顯示頁面如下:
3. nginx 負載均衡的配置
3.1 負載均衡方式 1——輪詢(默認)
輪詢:每個請求按時間順序逐一分配給後端服務器,如果後端服務器 down 掉,則自動將其剔除;
使用輪詢的負載均衡方式,修改 nginx 的配置文件如下:
瀏覽器訪問 http://192.168.25.120/edu/a.html,顯示頁面如下:
刷新,顯示頁面如下:
可以看到使用默認的輪詢方式進行負載均衡,瀏覽器請求被平均分配給後端的 8081、8082 兩個服務器進行處理。
3.2 負載均衡方式 2——weight
weight:權重,默認值 1,根據權重設置分配請求的機率,權重值越大,分配到的請求越多。
使用權重的負載均衡方式,修改 nginx 的配置文件如下:
瀏覽器訪問 http://192.168.25.120/edu/a.html,顯示頁面如下:
再次刷新,顯示頁面如下:
刷新,顯示頁面如下:
可以看到使用 weight 的輪詢方式進行負載均衡,瀏覽器發送 3 個請求,有 2 個被分配給 8082 的服務器(機率 2/3),有一個被分配給 8081 的服務器(機率 1/3)。
3.3 負載均衡方式 3——ip_hash
ip_hash:哈希,每個請求按訪問 IP 的哈希結果進行分配,這樣每個訪客固定請求一個後端服務器,可以解決 session 的問題。
使用 ip_hash 的負載均衡方式,修改 nginx 的配置文件如下:
瀏覽器訪問 http://192.168.25.120/edu/a.html,顯示頁面如下:
刷新,顯示頁面如下:
可以看到使用 ip_hash 的輪詢方式進行負載均衡,無論刷新多少次,請求始終被分配給 8081 服務器。
3.4 負載均衡方式 4——fair
fair:根據頁面大小、加載時間長短智能的進行負載均衡。
nginx-upstream-fair-master fair模塊源碼
參考資料
《尚硅谷Nginx教程》11-nginx配置實例(負載均衡)
nginx-upstream-fair-master fair模塊源碼