1. Nginx構建Tomcat集羣Demo
通過Nginx的upstream模塊構建三臺Tomcat組成的集羣,首先在nginx.conf文件中添加如下內容:
upstream youpin-server {
server 192.168.1.173:8080;
server 192.168.1.174:8080;
server 192.168.1.175:8080;
}
server {
listen 80;
server_name www.youpin.com;
location / {
proxy_pass http://youpin-server
}
}
- youpin-server是個字符串,隨便命名,但是在location塊中必須得加上前綴http://來實現映射;
- www.youpin.com可以是域名或IP,爲了區分,proxy_pass和server_name 可以不一樣;
2. Nginx的輪訓與加權輪詢
默認情況下,Nginx的輪詢是平均分配的,每一次請求輪流分配給不同的後臺服務器去響應,但是考慮到每個服務器的硬件配置和性能不一樣,我們可以添加weight參數來實現加權輪詢,配置如下:
upstream youpin-server {
server 192.168.1.173:8080 weight=1;
server 192.168.1.174:8080 weight=2;
server 192.168.1.175:8080 weight=5;
}
server {
listen 80;
server_name www.youpin.com;
location / {
proxy_pass http://youpin-server
}
}
- 默認情況下,weight的值爲1,每個服務器的佔比就是三分之一,是平均分配的;
- 上述自定義配置後,173服務器的佔比是1/8,174佔比是2/8,175佔比是 5/8;
3. upstream指令參數
upstream的指令參數如下:
- max_conns:表示服務器最大的併發連接數,默認0,表示不做任何限制;
- down:表示服務器不可用的狀態;
- backup:表示當前服務器時一臺備用機,只有在其他服務器掛掉以後,備用機才能被訪問到;
- max_fails:最大的失敗的次數,如果最大失敗次數到達了,就會認爲當前配置的server掛掉了,Nginx會把它踢掉,後續的請求不會來到這臺服務器;
- fail_timeout:配合max_fails用,表示失敗的時間段,如果max_fails爲2,fail_timeout爲15s,噹噹前服務器失敗2次後,在15s的時間段內不會有任何的請求進來,15s之後恢復正常;
- 配置方法如下圖所示:
4. 使用keepalive提高吞吐量
keepalive可以把短連接轉爲長連接,避免了創建和銷燬連接對資源的損耗,基本配置如下
upstream youpin-server {
server 192.168.1.173:8080 weight=1;
server 192.168.1.174:8080 weight=2;
server 192.168.1.175:8080 weight=5;
keepalive 32;
}
server {
listen 80;
server_name www.youpin.com;
location / {
proxy_pass http://youpin-server;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}