Nginx+Tomcat部署負載均衡
一、為什麼用nginx和tomcat搭建群集?
-
傳統模型下,一個專案部署在一臺tomcat上,這個時候,假如 tomcat 因為伺服器資源不夠,突然掛機了,出現單點故障,那麼整個專案就無法使用,給客戶造成的損失可想而知!!
-
Tomcat 不能單獨應用於生產環境下,我們需要一套更可靠的解決方案來完善web站點架構。
-
Nginx 能夠支援高達50000個併發連線數的響應,擁有強大的靜態資源處理能力,執行穩定,並且記憶體、CPU等系統資源消耗非常低。
-
目前很多大型網站都應用 Nginx 伺服器作為後端網站程式的反向代理以及負載均衡器,來提升整個站點的負載併發能力。
-
我們可以部署 Nginx + tomcat 服務群集,就可以避免單臺服務如果掛機,依然能保證服務正常使用。
-
當我們把專案 war 包部署到三臺伺服器上時,即使伺服器A、伺服器B都掛了,依然能夠通過伺服器C訪問專案資源!
二、部署環境
服務型別 | IP地址 | 軟體包 |
---|---|---|
Nginx伺服器 | 10.0.0.10 | nginx-1.12.2.tar.gz |
Tomcat01伺服器 | 10.0.0.20 | jdk-8u91-linux-x64.tar.gz 、apache-tomcat-8.5.16.tar.gz |
Tomcat02伺服器 | 10.0.0.30 | jdk-8u91-linux-x64.tar.gz 、apache-tomcat-8.5.16.tar.gz |
客戶端 | 10.0.0.60 |
- 部署拓撲圖:
三、部署過程
3.1、Tomcat1 部署
#關閉防火牆
[root@server2 ~]# systemctl stop firewalld.service
[root@server2 ~]# setenforce 0
#解壓jdk環境包
[root@server2 ~]# tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
#新增JAVA環境變數
[root@server2 ~]# vim /etc/profile
#在末尾處新增以下程式碼
export JAVA_HOME=/usr/local/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
[root@server2 ~]# source /etc/profile #載入使環境變數生效
#解壓tomcat軟體包
[root@server2 ~]# tar zxvf apache-tomcat-8.5.16.tar.gz -C /usr/local/
#把資料夾改名,方便使用
[root@server2 ~]# cd /usr/local/
[root@server2 local]# mv apache-tomcat-8.5.16/ tomcat
#建立軟連結,方便服務管理
[root@server2 ~]# ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
[root@server2 ~]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/
#在tomcat1中建立web站點
[root@server2 local]# mkdir -p /web/webapp1
[root@server2 local]# cd /web/webapp1/
[root@server2 webapp1]# vim index.jsp
#寫入以下內容
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>
</head>
<body>
<% out.println("Welcome TEST01 Web");%>
</body>
</html>
#修改Tomcat的server.xml檔案,定義一個虛擬主機,並且將網站檔案路徑指向已經建立
的/web/webapp1,在host段增加context段
vim /usr/local/tomcat/conf/server.xml
<Host nane="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true" >
#新增以下行
<Context docBase="/web/webapp1" path="" reloadable="false">
</Context>
[root@server2 ~]# startup.sh #啟動
3.2、Tomcat2 部署
#關閉防火牆
[root@server3 ~]# systemctl stop firewalld.service
[root@server3 ~]# setenforce 0
0
#解壓jdk環境包
[root@server3 ~]# tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
#新增JAVA環境變數
[root@server3 ~]# vim /etc/profile
#在末尾處新增以下程式碼
export JAVA_HOME=/usr/local/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
[root@server3 ~]# source /etc/profile #載入使環境變數生效
#解壓tomcat軟體包
[root@server3 ~]# tar zxvf apache-tomcat-8.5.16.tar.gz -C /usr/local/
#把資料夾改名,方便使用
[root@server3 ~]# cd /usr/local/
[root@server3 local]# mv apache-tomcat-8.5.16/ tomcat
#建立軟連結,方便服務管理
[root@server3 local]# ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
[root@server3 local]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/
#在tomcat2中建立web站點,此處站點路徑要與tomcat1一致。
[root@server3 local]# mkdir -p /web/webapp1
[root@server3 local]# cd /web/webapp1
#網頁內容要設定不同的,便於驗證部署群集的結果
[root@server3 webapp1]# vim index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test2 page</title>
</head>
<body>
<% out.println("Welcome TEST02 Web");%>
</body>
</html>
#修改Tomcat的server.xml檔案,定義一個虛擬主機,並且將網站檔案路徑指向已經建立
的/web/webapp1,在host段增加context段
[root@server3 webapp1]# vim /usr/local/tomcat/conf/server.xml
<Host nane="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true" >
#新增以下行
<Context docBase="/web/webapp1" path="" reloadable="false">
</Context>
[root@server3 ~]# startup.sh #啟動
3.3、nginx伺服器部署
#關閉防火牆
[root@server1 ~]# systemctl stop firewalld.service
[root@server1 ~]# setenforce 0
#安裝依賴包
[root@server1 ~]# yum -y install gcc gcc-c++ pcre-devel make zlib-devel
#解壓安裝包到/opt/目錄下。
[root@server1 ~]# tar zxvf nginx-1.12.2.tar.gz -C /opt/
#建立nginx使用者
[root@server1 ~]# useradd -M -s /sbin/nologin nginx
#配置編譯安裝
[root@server1 ~]# cd /opt/nginx-1.12.2/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_flv_module
make && make install
#建立軟連結,優化服務
[root@server1 nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
#修改配置檔案
vim /usr/local/nginx/conf/nginx.conf
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
#使用upstream函式,配置tomcat伺服器地址池
upstream tomcatserver {
server 10.0.0.20:8080 weight=1;
server 10.0.0.30:8080 weight=1;
}
server{
listen 80;
location / {
root html;
index index.html index.htm;
proxy_pass http://tomcatserver;
#反向代理到設定的tomcat伺服器地址池裡
}
[root@server1 ~]# nginx -t
#檢測是否成功//
[root@server1 ~]# nginx #啟動
[root@server1 ~]# netstat -anpt | grep 80
3.4、驗證
在瀏覽器輸入nginx的IP地址,觀察是否將請求代理到tomcat伺服器,重新整理頁面可以哦看到tomcat伺服器通過nginx排程實現輪流工作。
相關文章
- nginx+tomcat實現負載均衡NginxTomcat負載
- Nginx+Tomcat負載均衡,動靜分離群集部署解析NginxTomcat負載
- Nginx+Tomcat實現負載均衡、動靜分離叢集部署NginxTomcat負載
- Linux環境搭建Nginx+Tomcat負載均衡叢集LinuxNginxTomcat負載
- LVS負載均衡群集概念、NAT模式LVS負載均衡實戰部署負載模式
- 使用Redis儲存Nginx+Tomcat負載均衡叢集的SessionRedisNginxTomcat負載Session
- 帶你瞭解Nginx+Tomcat負載均衡,動靜分離群集NginxTomcat負載
- Kuberntes部署MetalLB負載均衡器負載
- 負載均衡是什麼?怎麼理解負載均衡的部署方式和工作原理負載
- gRPC負載均衡(自定義負載均衡策略)RPC負載
- gRPC負載均衡(客戶端負載均衡)RPC負載客戶端
- 負載均衡負載
- nginx部署基於http負載均衡器NginxHTTP負載
- Nginx反向代理負載均衡的容器化部署Nginx負載
- IP負載均衡負載
- WebSocket負載均衡Web負載
- nginx負載均衡Nginx負載
- NGINX 負載均衡Nginx負載
- 【Nginx】負載均衡Nginx負載
- 負載均衡---ribbon負載
- LoadBalancer負載均衡負載
- LVS 負載均衡負載
- 負載均衡技術(一)———負載均衡技術介紹負載
- 解密負載均衡技術和負載均衡演算法解密負載演算法
- 負載均衡技術(二)———常用負載均衡服務介紹負載
- 【知識分享】四層負載均衡和七層負載均衡負載
- docker初體驗:docker部署nginx負載均衡叢集DockerNginx負載
- Nginx負載均衡模式Nginx負載模式
- 漫談負載均衡負載
- 負載均衡簡介負載
- golang grpc 負載均衡GolangRPC負載
- gRPC的負載均衡RPC負載
- 負載均衡詳解負載
- 負載均衡知多少?負載
- Linux LVS 負載均衡Linux負載
- 淺談負載均衡負載
- 負載均衡叢集負載
- 負載均衡補充負載