使用 Tomcat + Nginx 實現負載均衡

語言: CN / TW / HK

1

Tomcat 簡介

  • Tomcat 是一個免費的開源的 Serlvet 容器,它是 Apache 基金會的 Jakarta 專案中的一個核心專案;

  • 由 Apache,Sun 和其它一些公司及個人共同開發而成。

  • 與傳統的桌面應用程式不同,Tomcat 中的應用程式是一個 WAR(Web Archive)檔案。

  • WAR 是 Sun 提出的一種 Web 應用程式格式,與 JAR 類似,也是許多檔案的一個壓縮包。

2

安裝 Tomcat 服務

準備工作:

主機名 作業系統 IP地址
Tomcat-A CentOS  7.x 192.168.1.1

1.安裝配置 Tomcat

1)安裝 JDK:下載地址(需要建立 Oracle 賬號)

[root@Tomcat-A ~]# ls anaconda-ks.cfg apache-tomcat-8.5.16.tar.gz jdk-8u91-linux-x64.tar.gz [root@Tomcat-A ~]# tar zxf jdk-8u91-linux-x64.tar.gz [root@Tomcat-A ~]# mv jdk1.8.0_91/ /usr/local/java [root@Tomcat-A ~]# cat <<END >> /etc/profile export JAVA_HOME=/usr/local/java export PATH=$PATH:/usr/local/java/bin END [root@Tomcat-A ~]# source /etc/profile [root@Tomcat-A ~]# java -version# 檢視 Java 版本號

2)安裝 Tomcat 軟體:

[root@Tomcat-A ~]# wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.16/bin/apache-tomcat-8.5.16.tar.gz
[root@Tomcat-A ~]# tar zxf apache-tomcat-8.5.16.tar.gz
[root@Tomcat-A ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat8
[root@Tomcat-A ~]# /usr/local/tomcat8/bin/startup.sh # 啟動 Tomcat
[root@Tomcat-A ~]# netstat -anpt | grep 8080 # Tomcat 的工作埠
[root@Tomcat-A ~]# netstat -anpt | grep java # 檢視 Java 埠號

註解:

  • 8005埠:用 shutdown.sh 關閉 Tomcat 的時候需要用到的埠號,如果此埠沒啟動,Tomcat 不能用 shutdown 命令關閉。

  • 8009埠:是 Tomcat 負責和其他的 HTTP 伺服器建立連線的埠,如 Nginx 和 Apache 互通時使用。(AJP/1.3 協議)

  • 8080埠:HTTP 訪問時使用的埠。(HTTP/1.1 協議)

2.驗證

3.配置 Java 的 Web 目錄

[root@Tomcat-A ~]# mkdir -p /web/tomcat [root@Tomcat-A ~]# echo "192.168.1.1:Tomcat-A" > /web/tomcat/index.jsp

4.修改 Tomcat 主配置檔案

[root@Tomcat-A ~]# vim /usr/local/tomcat8/conf/server.xml 在148-151行新增: <Context docBase="/web/tomcat" path="" reloadable="false"> </Context> 

註解:

  • unpackWARs="true":配置自動識別 war 包。

  • autoDeploy="true":開啟自動部署。

  • Context docBase="/web/tomcat":網頁根目錄。

  • path="":設定網頁;相當於是 Nginx 中的 Location。

  • reloadble="false":不會自動重新載入 Web 應用,配置為 true 則會根據檔案被改動後自動重新載入。

重啟 Tomcat 服務

[root@Tomcat-A ~]# /usr/local/tomcat8/bin/shutdown.sh
[root@Tomcat-A ~]
# /usr/local/tomcat8/bin/startup.sh

驗證:

3

負載均衡

準備工作:

主機名 作業系統 IP地址
Tomcat-A CentOS  7.x 192.168.1.1
Tomcat-B CentOS  7.x 192.168.1.2
Nginx-Server CentOS  7.x 192.168.1.3

注意:

  • Tomcat-A 可以用上面配置;

  • Tomcat-B 跟 Tomcat-A 步驟一樣,但頁面要區分開,方便測試;

1.部署 Nginx 伺服器

1)安裝 Nginx 服務

[root@Nginx-Server ~]# yum -y install pcre-devel zlib-devel popt-devel openssl-devel openssl
[root@Nginx-Server ~]# wget http://www.nginx.org/download/nginx-1.18.0.tar.gz
[root@Nginx-Server ~]# ls
anaconda-ks.cfg nginx-1.18.0.tar.gz
[root@Nginx-Server ~]# tar zxf nginx-1.18.0.tar.gz -C /usr/src/
[root@Nginx-Server ~]# cd /usr/src/nginx-1.18.0/
[root@Nginx-Server nginx-1.18.0]# useradd -M -s /sbin/nologin nginx
[root@Nginx-Server nginx-1.18.0]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install
[root@Nginx-Server nginx-1.18.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

2)配置 Nginx 主配置檔案

[root@Nginx-Server ~]# vim /usr/local/nginx/conf/nginx.conf
32 行增加:
upstream tomcat_server {
server 192.168.1.1:8080 weight=1;
server 192.168.1.2:8080 weight=1;
}
49 行新增:
proxy_pass http://tomcat_server;

[root@Nginx-Server ~]# nginx -t# 檢查 Nginx 配置檔案是否正確
[root@Nginx-Server ~]# nginx# 啟用 Nginx 服務
[root@Nginx-Server ~]# ps aux | grep nginx# 檢視 Nginx 服務程序
[root@Nginx-Server ~]# netstat -anpt | grep nginx# 檢視 Nginx 埠號和程序號

2.驗證

使用瀏覽器訪問 Nginx 伺服器 IP 地址:

不斷重新整理頁面,觀察頁面變化:

使用指令碼檢視效果:

[root@Nginx-Server ~]# for i in $(seq 10);do curl http://192.168.1.3;done

來源:blog.csdn.net/weixin_46902396/article/details/122574996