需求
nginx 作為負載均衡服務器,用戶請求先到達 nginx,再由 nginx 根據負載配置將請求分發至 tomcat 服務器
- tomcat 服務器一:192.168.127.130:8080
- tomcat 服務器二:192.168.127.130:8081
- tomcat 服務器三:192.168.127.130:8082
- nginx 代理服務器:192.168.127.130
什么是反向代理
反向代理可以防止外網對內網服務器的惡性攻擊、快取以減少服務器的壓力和訪問安全控制之外,還可以進行負載均衡,將用戶請求分配給多個服務器
負載均衡
負載均衡是一種用于優化資源利用率,最大化吞吐量,減少延遲和確保容錯配置的常用技術,可以將 nginx 用作非常有效的 HTTP 負載平衡器,以將流量分配到多個應用程式服務器,并使用 nginx 改善 Web 應用程式的性能,可伸縮性和可靠性,
部署 Tomcat 集群
創建 docker-compose.yml,定義 tomcat 服務集群,分別對外映射埠 8080,8081 和 8082
version: '3'
services:
tomcat1:
image: tomcat
container_name: tomcat1
ports:
- 8080:8080
tomcat2:
image: tomcat
container_name: tomcat2
ports:
- 8081:8080
tomcat3:
image: tomcat
container_name: tomcat3
ports:
- 8082:8080
啟動容器
$ docker-compose up -d
Nginx 自帶支持的負載均衡機制
默認(輪詢):對應用程式服務器的請求以輪詢方式分發:
upstream tomcatServers {
server 192.168.127.130:8080;
server 192.168.127.130:8081;
server 192.168.127.130:8082;
}
minimum_conn(最少連接):將下一個請求分配給活動連接數量最少的服務器:
upstream tomcatServers {
minimum_conn;
server 192.168.127.130:8080;
server 192.168.127.130:8081;
server 192.168.127.130:8082;
}
ip-hash(會話持久性):—哈希函式用于確定應為下一個固定請求選擇哪個服務器(基于客戶端的IP地址),解決 session 的問題
upstream tomcatServers {
ip_hash;
server 192.168.127.130:8080;
server 192.168.127.130:8081;
server 192.168.127.130:8082;
}
負載均衡設備的相關配置說明
- weight:默認值為 1,值越大,負載的權重就越大
- down:表示當前的 server 暫時不參與負載
- max_fails:允許請求失敗的次數默認為 1 當超過最大次數時,回傳
proxy_next_upstream模塊定義的錯誤 - fail_timeout:觸發
max_fails后暫停的時間,過了這段時間,重新探測故障服務器是否可用 - backup:其它所有的非
backup機器down或者忙的時候,請求backup機器,所以這臺機器壓力會最輕
配置 Nginx
創建 docker-compose.yml,掛載 nginx.conf 檔案,并對外映射埠 80
version: '3.1'
services:
nginx:
restart: always
image: nginx
container_name: nginx
ports:
- 80:81
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
在 docker-compose.yml 同目錄下創建 nginx.conf 檔案,配置反向代理及負載均衡
user nginx;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 服務器集群,weight是權重的意思,權重越大,分配的概率越大
upstream tomcatServers {
minimum_conn;
server 192.168.127.130:8080 weight = 10;
server 192.168.127.130:8081 weight = 10;
server 192.168.127.130:8082 weight = 10;
}
server {
listen 81;
location / {
# 配置反向代理地址
proxy_pass http://tomcatServers;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
啟動容器
$ docker-compose up -d
訪問 http://192.168.127.130
- 文章作者:彭超
- 本文首發于個人博客:https://antoniopeng.com/2019/09/30/nginx/Nginx%E5%AE%9E%E7%8E%B0%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%E5%8F%8A%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E9%85%8D%E7%BD%AE/
- 著作權宣告:本博客所有文章除特別宣告外,均采用 CC BY-NC-SA 4.0 許可協議,轉載請注明來自 彭超 | Blog!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/77795.html
標籤:其他
