- 負載均衡是網絡基礎架構的一個非常關鍵的組成部分,有了負載均衡,我們可以把應用伺服器部署多台,避免了服務當機,也增強了服務的性能及可用性。
- 負載均衡的算法有很多 ,這裡隻是簡單提下,
- **輪詢**:從第一個請求的伺服器開始,按循序往後依次選擇
- **權重輪詢**:每台伺服器負載能力不一樣,能力弱點的,可以為其配置設定較小的權重,降低其系統壓力,能力強的可以加大其權重,權重輪詢可以很好處理這些。nginx的負載均衡預設算法是權重輪詢算法。
- **随機算法**:從伺服器中随機選擇一個處理請求
- **最小連接配接**:選擇連接配接數最小、壓力最小的伺服器,來處理請求
- **散列**:根據請求源的IP的散列(hash)來選擇請求的伺服器。該算法很好的規避了多節點web項目中的session同步問題。
- 負載均衡的方式也分為軟/硬體,方式也很多,接下來我們來講nginx怎麼配置負載均衡,前幾篇已經寫了nginx的安裝以及https的配置,有需要可以浏覽下。
## 1、準備服務
- 我放了兩個tomcat在伺服器上,端口分别改為8085、8086
- 首先确認服務正常
## 2、修改nginx配置
- 進入/etc/nginx/conf.d
- upstream子產品,将使nginx跨越單機的限制,完成網絡資料的接收、處理和轉發。
- demo:
upstream test{
ip_hash;
server 127.0.0.1:8081weight=1;
server 127.0.0.1:8082 down;
server 127.0.0.1:8083 backup;
server 127.0.0.1:8084 weight=2;
}
-ip_hash:對請求的IP進行hash後的結果進行配置設定,這樣每個使用者固定請求同一個伺服器
- down: 表示單前的服務臨時不參與負載.
- backup: 其他全部的非backup機器down或者忙的時候,請求backup機器,這台機器壓力會最輕
- 權重輪詢:weight表示權重的意思,數字越大,權重越高。上面配置,8084是8081的權重的兩倍,就是三次請求,8084處理兩次,8081處理一次
- 我們這樣配置來測試:
vi upstream.conf
upstream tomcat {
server 127.0.0.1:8085;
server 127.0.0.1:8086;
}
vi https.www.flighting.top.conf
# HTTPS redirect
server {
listen 443 ssl;
server_name www.flighting.top;
# SSL
ssl_certificate /etc/nginx/crt/test.crt;
ssl_certificate_key /etc/nginx/crt/test.key;
# security
#include conf.d/include/security.conf;
# logging
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log warn;
# reverse proxy
location / {
proxy_pass http://tomcat;
#include conf.d/include/proxy.conf;
}
# additional config
#include conf.d/include/general.conf;
}
}
- 啟動nginx,通路https://47.101.201.179
## 3、測試負載均衡
- 首先我們把8085的服務停止
- 通路http://47.101.201.179:8085/
- 通路https://47.101.201.179,服務仍是好着的
- 我們再把8086的服務停止
- 通路http://47.101.201.179:8086/
- 通路https://47.101.201.179,服務當機
- 啟動8085的服務,再通路https://47.101.201.179
- 至此負載均衡測試成功,關于ip_hash、weight大家有興趣可以自己寫個頁面測試看,在此不多說
- 下一篇博文,寫寫我最近的一個項目中用到的,DMZ區怎麼來做nginx的叢集