一、爲什麼用nginx和tomcat搭建羣集?
-
傳統模型下,一個項目部署在一臺tomcat上,這個時候,假如 tomcat 因爲服務器資源不夠,突然掛機了,出現單點故障,那麼整個項目就無法使用,給客戶造成的損失可想而知!!
-
Tomcat 不能單獨應用於生產環境下,我們需要一套更可靠的解決方案來完善web站點架構。
-
Nginx 能夠支持高達50000個併發連接數的響應,擁有強大的靜態資源處理能力,運行穩定,並且內存、CPU等系統資源消耗非常低。
-
目前很多大型網站都應用 Nginx 服務器作爲後端網站程序的反向代理以及負載均衡器,來提升整個站點的負載併發能力。
-
我們可以部署 Nginx + tomcat 服務羣集,就可以避免單臺服務如果掛機,依然能保證服務正常使用。
-
當我們把項目 war 包部署到三臺服務器上時,即使服務器A、服務器B都掛了,依然能夠通過服務器C訪問項目資源!
二、部署環境
服務類型 | IP地址 | 軟件包 |
---|---|---|
Nginx服務器 | 192.168.100.128 | nginx-1.12.2.tar.gz |
Tomcat01服務器 | 192.168.100.131 | jdk-8u91-linux-x64.tar.gz 、apache-tomcat-8.5.16.tar.gz |
Tomcat02服務器 | 192.168.100.132 | jdk-8u91-linux-x64.tar.gz 、apache-tomcat-8.5.16.tar.gz |
客戶端 | 192.168.100.10 |
- 部署拓撲圖:
三、部署過程
3.1、Tomcat1 部署
//關閉防火牆
systemctl stop firewalld
setenforce 0
//解壓jdk環境包
tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
//添加JAVA環境變量
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
source /etc/profile //加載使環境變量生效
//解壓tomcat軟件包
tar zxvf apache-tomcat-8.5.16.tar.gz -C /usr/local/
//把文件夾改名,方便使用
cd /usr/local/
mv apache-tomcat-8.5.16 tomcat
//創建軟鏈接,方便服務管理
ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/
//在tomcat1中創建web站點
cd /usr/local
mkdir -p /web/webapp1
cd /web/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>
3.2、Tomcat2 部署
//關閉防火牆
systemctl stop firewalld
setenforce 0
//解壓jdk環境包
tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
//添加JAVA環境變量
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
source /etc/profile //加載使環境變量生效
//解壓tomcat軟件包
tar zxvf apache-tomcat-8.5.16.tar.gz -C /usr/local/
//把文件夾改名,方便使用
cd /usr/local/
mv apache-tomcat-8.5.16 tomcat
//創建軟鏈接,方便服務管理
ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/
//在tomcat2中創建web站點,此處站點路徑要與tomcat1一致。
mkdir -p /web/webapp1
cd /web/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段
vim /usr/local/tomcat/conf/server.xml
<Host nane="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true" >
//添加以下行
<Context docBase="/web/webapp1" path="" reloadable="false">
</Context>
3.3、nginx服務器部署
//關閉防火牆
systemctl stop firewalld
setenforce 0
//安裝依賴包
yum -y install gcc gcc-c++ make pcre-devel zlib-devel
//解壓安裝包到/opt/目錄下。
tar zxvf nginx-1.12.2.tar.gz -C /opt/
//創建nginx用戶
useradd -M -s /sbin/nologin nginx
//配置編譯安裝
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
//創建軟鏈接,優化服務
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 192.168.220.168:8080 weight=1;
server 192.168.220.136:8080 weight=1;
}
server{
listen 80;
location / {
root html;
index index.html index.htm;
proxy_pass http://tomcatserver;
#反向代理到設置的tomcat服務器地址池裏
}
nginx -t
//檢測是否成功//
nginx //啓動
netstat -natp | grep 80
3.4、驗證
在瀏覽器輸入nginx的IP地址,觀察是否將請求代理到tomcat服務器,刷新頁面可以哦看到tomcat服務器通過nginx調度實現輪流工作。