第一步:nginx構建 第二步:Tomcat構建 1.Tomcat基礎點 (1)Tomcat 是基於java開發的web容器,用來發佈java代碼和jsp網頁。 (2)開發人員開發java web網站,使用Tomcat容器發佈和解析,用戶通過瀏覽器實現訪問。 (3)發佈java程式,需要提前配置好J ...
第一步:nginx構建
第二步:Tomcat構建
1.Tomcat基礎點
(1)Tomcat 是基於java開發的web容器,用來發佈java代碼和jsp網頁。
(2)開發人員開發java web網站,使用Tomcat容器發佈和解析,用戶通過瀏覽器實現訪問。
(3)發佈java程式,需要提前配置好JDK環境。
(4)JDK是java開發工具包(SDK)和java程式運行環境(JRE);JDK是java開發的核心組件。
(5)java運行環境(JRE)包括:JVM+JAVA類和庫;
java開發工具包(SDK)包括:JAVAC、JAVA工具
(6)開發人員開發的java程式,是源碼文件,預設不能直接使用;需要經過JACAC(java編譯器),將源碼文件編譯生成java位元組碼文件。
(7)java位元組碼文件,可以放在jre環境中去運行(java運行時的環境Tomcat);通過JVM解析java位元組碼文件,從而提供給CPU或系統調用,用戶可以通過其他渠道訪問。
2.yum安裝java jdk軟體工具包
yum install java-1.8.0* -y
#yum 安裝java jdk 不用配置變數
3.上傳或下載Tomcat;二進位版的tomcat軟體包不用編譯,解壓後可以直接使用
1 rz 2 tar -xzvf tomcat
4.將解壓後的tomcat二進位包移動至/usr/local/tomcat,並拷貝/usr/local/tomcat至/usr/local/tomcat-1;相當於同一臺伺服器有兩個tomcat容器;
1 mv tomcat /usr/local/ 2 cp /usr/local/tomcat /usr/local/tomcat-1
5.啟動tomcat,查看tomcat的埠號;修改tomcat-1埠號,並開啟tomcat-1;
1 cd /usr/local/tomcat/bin 2 ./startup.sh 3 netstat -antp |grep java 4 cd /usr/local/tomcat-1 5 sed -i 's#8080#8081#;s#8005#8006#;s#8009#8010#' conf/server.xml 6 ./bin/startup.sh
6.修改tomcat預設網頁
1 cd /usr/local/tomcat/webapps/ROOT
2 cat >> index.jsp <<eof 3 <html> 4 <body> 5 <h1>tomcat</h1> 6 </body> 7 </html> 8 eof
7.修改tomcat-1預設網頁
1 cd /usr/local/tomcat-1/webapps/ROOT
2 cat >> index.jsp <<eof 3 <html> 4 <body> 5 <h1>tomcat-1</h1> 6 </body> 7 </html> 8 eof
第三步:Nginx動靜分離配置
1.動靜分離簡介
(1)是把靜態請求和動態請求分開,並不是單純的靜態頁面和動態頁面分離。
(2)可以使用Nginx處理靜態頁面,用Tomcat、PHP、Resin、ASP處理動態頁面。
(3)主流方案:純粹的把靜態文件獨立成單獨的功能變數名稱,放在獨立的伺服器上。
(4)其他方案:動態文件跟靜態文件混合在一起發佈,通過Nginx分開。
2.負載均衡簡介
(1)負載:所有來自客戶端的請求叫做負載。
(2)均衡:把所有的網路請求通過代理伺服器,按照一定的演算法轉發到後端伺服器上。
(3)硬體:FS、NetScaler
(4)軟體:LVS、Nginx、HAProxy
3.Nginx負載均衡
(1)Nginx收到請求時會進行判斷,如果是靜態,則自行處理;如果是動態,則轉到後端伺服器處理。
(2)Nginx負載均衡基於upstream模塊(設置在http塊),需要在location塊設置proxy_pass轉發。
(3)upstream塊內參數:server後跟轉發伺服器IP地址加埠號;
down 表示是當前server暫時不參與負載;
weight=number 權重配置;預設1,數字越大權重越大;
max_conns=number 限制代理伺服器同時活動的最大連接數,預設0代表沒限制;
max_fails=number 連接失敗的最大次數;次數到達,返回proxy_next_upstream模塊定義的錯誤;
fail_timeout=number 失敗次數到達後,暫停服務的時間;
backup 備用伺服器,其他所有非backup機器down或者忙碌時,請求backup機器。
4.upstream演算法
(1)輪詢(預設)
每個請求按時間順序逐一分配到不同的後端伺服器;如果後端伺服器down掉,能自動剔除;
即Round Robin ,根據Nginx配置文件中的順序,依次把客戶端的web請求分發到不同的後端伺服器。
(2)ip_hash
每個請求按訪問ip的hash結果分配,每個訪客固定訪問一個後端伺服器,可以解決session的問題。
ip地址的前三段作為參數加入hash函數,保證ip地址前三段相同的用戶經過hash計算分配到相同的後端伺服器。
(3)url_hash
按訪問url的hash結果來分配請求,使每個url定向到同一個後端伺服器,後端伺服器為緩存時比較有效。
(4)weight
指定輪詢機率,weight和訪問比率成正比,用於後端伺服器性能不均的情況。
5.配置upstream塊
upstream http_test { server 192.168.198.111:8080 weight=2 mas_fails=2 fail_timeout=15s; #15s 檢測時間,檢測後端伺服器是否正常,15秒內2次請求處理失敗,就把當前主機剔除。 server 192.168.198.112:8081 weight=1 mas_fails=2 fail_timeout=15s; } #兩個後端機器都不能使用,直接給用戶返回502錯誤。
6.動靜分離location規則添加
location / { proxy_next_upstream http_502 http_504 error timeout invalid_header; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://http_test; } location ~ .*\.(jsp|cgi|shtml)?$ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://http_test; } location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ { root /usr/local/nginx/html; expires 30d; }
7.開啟nginx伺服器防火牆80埠、tomcat伺服器防火牆(8080埠、8081埠、8005埠、8006埠、8009埠、8010埠)
1 firewall-cmd --zone=public --add-port=80/tcp
--add-port=8080/tcp --add-port=8081/tcp
--add-port=8005/tcp --add-port=8006/tcp
--add-port=8009/tcp --add-port=8010/tcp
--permanent 2 firewall-cmd --reload
8.將靜態網頁配置在nginx伺服器/usr/local/nginx/html;動態網頁配置在tomcat伺服器/usr/local/tomcat/webapps/ROOT/*
9.配置完畢,正常訪問nginx伺服器;靜態請求nginx伺服器自行處理,動態請求通過nginx伺服器轉發給tomcat伺服器處理;