nginx+tomcat實現Windows系統下的負載均衡搭建的案例

来源:http://www.cnblogs.com/lishiwei/archive/2017/12/21/8076437.html
-Advertisement-
Play Games

剛入行沒多久就聽過‘負載均衡’的大名,到現在因為工作接觸的少,所以沒什麼太多的認識。但自己又對其非常的好奇,所以前兩天通過查資料,在自己的筆記本上就搭建了一個超簡單的案例(工作中沒有時間,晚上到家了條件又不夠,只能用自己的筆記本將就一下了,重在理解思想。。) 通俗點將,負載均衡就是因為訪問流量太大, ...


  剛入行沒多久就聽過‘負載均衡’的大名,到現在因為工作接觸的少,所以沒什麼太多的認識。但自己又對其非常的好奇,所以前兩天通過查資料,在自己的筆記本上就搭建了一個超簡單的案例(工作中沒有時間,晚上到家了條件又不夠,只能用自己的筆記本將就一下了,重在理解思想。。)

  通俗點將,負載均衡就是因為訪問流量太大,導致項目訪問不流暢、甚至宕掉,所以通過一種分流的方式來緩解這種情況。

  首先,安裝兩個tomcat,可以是同一個複製成兩個,也可以下載兩個不同版本的tomcat,我就是下載了兩個不同版本的。下載地址:https://tomcat.apache.org/download-80.cgi

(這是8.0版本的,隨便找兩個不是特別老的版本的就行)。

  然後啟動兩個tomcat,在啟動前,先更改其中一個的埠號,使得兩個tomcat啟動時不會埠衝突,一個是本身的8080埠,一個是改成了9080埠。配好以後,打開cmd命令視窗,我的tomcat一個放在D:\software\apache-tomcat-8.5.24目錄下,按照如下命令即可啟動,啟動成功會彈出另一個視窗,顯示如下:

 打開瀏覽器,輸入http://localhost:9080/,出現如下界面即tomcat啟動成功。另一個採用同樣的步驟即可。

            圖1:tomcat8                                圖2:tomcat7

  再之後,安裝一個nginx,我裝的是穩定版的nginx,下載地址:http://nginx.org/download/nginx-1.12.2.zip,解壓即可使用

在啟動前,必須要對nginx進行一下配置才可實現負載均衡的功能,打開conf文件夾,下麵有一個nginx.conf文件,配置如下:


#user nobody;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;


events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;

#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';

#access_log logs/access.log main;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

gzip on;

 

#以下四行是新添加的,兩個IP是兩個tomcat的訪問地址,weight表示分給該伺服器的請求比重,兩個都是1,則按照1:1來分配,
upstream netitcast.com{
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:9080 weight=2;
}

server {
listen 80;
server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

 

#一下兩行是進行修改的,http://netitcast.com和上面添加的要保持一致

location / {
proxy_pass http://netitcast.com;
proxy_redirect default;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}


# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;

# location / {
# root html;
# index index.html index.htm;
# }
#}


# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;

# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;

# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;

# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;

# location / {
# root html;
# index index.html index.htm;
# }
#}

}

  還是打開cmd視窗,進入到以上目錄,執行命令:start nginx     即啟動成功,然後輸入網址:http://localhost/index.jsp,不斷的進行訪問,就會發現,上方顯示的圖1和圖2在交互的顯示。因為以上的配置weight是以1:2的比重來分配的,所以9080埠的比重就大一些,訪問到圖一(9080埠)的幾率就比較大,訪問到圖二(8080埠)的幾率比較小,這個概率一個是三分之二,一個是三分之一。

 

  當然,這隻是一個簡單的示例,在生產環境中開發,肯定還要解決許多問題,比如‘會話保持’等,這個以後明白了再來補充。寫這個的目的就是讓自己對負載均衡更加熟悉,希望大家以後一起努力,加油!!!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Vivado是Xilinx(賽靈思)公司出品的開發軟體平臺,適用於Zedboard開發板。本文介紹了Vivado2017.3的在Win10安裝和可能遇到的問題。 ...
  • 數據模型是開發軟體的最重要的部分,因為它們對應用程式有著深遠的影響:不僅是軟體的編寫方式,而且也影響我們如何解決的問題的方式。第二篇讀書筆記,我們聊一聊數據模型的設計。 1.數據模型的分層 作為一個開發者來說,在一個複雜的應用程式中,是存在很多 分層模型 的,但基本思想還是一樣的:每一層都提供了一個 ...
  • 基於cookie做用戶驗證時, 敏感信息不適合放在cookie中. a. Session原理 cookie是保存在用戶瀏覽器端的鍵值對 session是保存在伺服器端的鍵值對 首先生成一個隨機字元串, 並只將隨機字元串通過cookie保存在瀏覽器端 在隨機字元串對應的字典中, 設置相應的字典 1 c ...
  • #函數定義def f(): print('love Q')f()##參數#形參和實參def add(a,b): print(a+b)add(7,5)def print_info(name,age): print('name:%s' % name) print('age:%d' % age)print ...
  • 緩衝區,位元組將從中取出 作為一種數據源:將其與FilterInputStream對象相連以提供有用介面 字元串。底層實現實際使用的是StringBuffer 作為一種數據源:將其與FilterInputStream對象相連以提供有用介面 字元串,表示文件名、文件或FileDescriptor對象 作 ...
  • 1.1 文件處理 1.1.1 打開文件過程 在Python中,打開文件,得到文件句柄並賦值給一個變數,預設打開模式就為r f=open(r'a.txt','w',encoding='utf-8') print(f.writable()) f.write('1111\n') f.write('2222 ...
  • 1、操作日誌 logging.basicConfig:日誌的統一處理器,對日誌的輸出格式和方式做配置日誌級別等級CRITICAL > ERROR > WARNING > INFO > EDBUG level設定級別以及以上級別的才會列印,這裡註意大小寫! 列印日誌信息在控制台或輸出在一個文件示例: ...
  • java學習筆記之面向對象static,final關鍵字 一.static關鍵字 1.概述: static靜態的,被static修飾的成員屬於類,不屬於單個對象,被所有對象所共用,存在靜態區中,靜態的成員優先於對象載入到記憶體中。 2.statc修飾成員的使用方式:(被static修飾的成員變數有預設 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...