目錄
前言
一、Nginx+Tomcat
二、配置Nginx服務器
三、部署Tomcat應用服務器
總結
前言
介紹Tomcat及Nginx+Tomcat負載均衡集群,Tomcat的應用場景,然后重點介紹Tomcat的安裝配置,Nginx+Tomcat負載均衡集案列是應用于生產環境的一套可靠的Web站點解決方案,
一、Nginx+Tomcat
通常情況下,一個Tomcat站點由于可能出現單點故障及無法應付過多客戶復雜多樣的請求等問題,不能單獨應用于生產環境下,所以我們需要一套更可靠的解決方案來完善Web站點架構,
Nginx是一款非常優秀的http服務器軟體,它能夠支持高達50000個并發連接數的相應,擁有強大的靜態資源的處理能力,運行穩定,并且記憶體、CPU等系統資源消耗非常低,目前很多大型網站都應用Nginx服務器為后端網站程式的反向代理及負載均衡器,來提升整個站點的負載并發能力,
部署環境
| 主機 | 作業系統 | IP地址 | 主要軟體 |
| Nginx服務器 | CentOS 7.4 x86_64 | 192.168.196.146 | nginx-1.12.2.tar.gz |
| Tomcat服務器1 | CentOS 7.4 x86_64 | 192.168.196.147 | ①apache-tomcat-9.0.16.tar.gz / ②jdk-8u201-linux-x64.rpm |
| Tomcat服務器2 | CentOS 7.4 x86_64 | 192.168.196.153 | ①apache-tomcat-9.0.16.tar.gz / ② jdk-8u201-linux-x64.rpm |
二、配置Nginx服務器
1.關閉防火墻相關服務
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# vim /etc/resolv.conf
nameserver 114.114.114.114
2.安裝依賴包
[root@localhost ~]# yum install -y gcc gcc-c++ pcre-devel zlib-devel make
3.編譯安裝Nginx
[root@localhost ~]# tar zxvf nginx-1.12.2.tar.gz -C /opt/
[root@localhost ~]# cd /opt/nginx-1.12.2/
[root@localhost nginx-1.12.2]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
[root@localhost nginx-1.12.2]# make && make install
[root@localhost nginx-1.12.2]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
[root@localhost ~]# useradd -M -s /sbin/nologin nginx
4.添加Nginx系統服務
[root@localhost ~]# vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[root@localhost ~]# chmod 754 /lib/systemd/system/nginx.service #賦權,除了root以外的用戶都不能修改
[root@localhost ~]# systemctl start nginx.service
[root@localhost ~]# systemctl enable nginx.service
5.網頁測驗

三、部署Tomcat應用服務器
1.實施準備
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld.service
[root@localhost ~]# setenforce 0
2.安裝JDK,配置Java環境
[root@localhost ~]# rpm -ivh jdk-8u201-linux-x64.rpm
3.設定JDK環境
[root@localhost ~]# vim /etc/profile
...
#插入三行內容
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
[root@localhost ~]# source /etc/profile
4.安裝配置Tomcat
[root@localhost ~]# tar zxvf apache-tomcat-9.0.16.tar.gz -C /opt/
[root@localhost ~]# cd /opt/
[root@localhost opt]# mv apache-tomcat-9.0.16/ /usr/local/tomcat
5. 優化管理
[root@localhost ~]# ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
[root@localhost ~]# ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/
6.啟動服務startup.sh


Tomcat1的配置
1.創建一個測驗目錄
[root@localhost ~]# mkdir /usr/local/tomcat/webapps/test
2.動態頁面的配置
[root@localhost ~]# vim /usr/local/tomcat/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page </title>
</head>
<body>
<% out.println("動態頁面 1,http://www.test1.com");%>
</body>
</html>
[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
...
<Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" /> #大約160行插入
...
[root@localhost ~]# shutdown.sh
[root@localhost ~]# startup.sh
Tomcat2配置
1.創建一個測驗目錄
[root@localhost ~]# mkdir /usr/local/tomcat/webapps/test
2.動態頁面的配置
[root@localhost ~]# vim /usr/local/tomcat/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test2 page </title>
</head>
<body>
<% out.println("動態頁面 2,http://www.test2.com");%>
</body>
</html>
[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
...
<Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" /> #大約160行插入
...
[root@localhost ~]# shutdown.sh
[root@localhost ~]# startup.sh
3.nginx準備靜態頁面
[root@localhost ~]# echo '<html><body><h1>靜態界面...</h1></body></html>' > /usr/local/nginx/html/index.html
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
...
upstream tomcat_server {
server 192.168.192.147:8080 weight=1;
server 192.168.192.153:8080 weight=1;
}
location ~ .*\.jsp$ { #把nginx接收到的客戶端的ip地址賦值給跳轉到tomcat請求中的源ip;識別客戶的真實ip,并且賦值與跳轉
proxy_pass http://tomcat_server;
proxy_set_header HOST $host; ##設定后端的web服務器接收到的請求訪問的主機名(域名或ip、埠),默認host的值為proxy_pass直連設定的主機名
proxy_set_header X-Real-IP $remote_addr; #把$remote_addr復制給X-Real-IP(自定義),來回去源IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #在nginx最為代理服務器時,設定的IP串列,會把經過的及其ip,代理及其ip都記錄下來
}
...
[root@localhost ~]#systemctl restart nginx.service
4.網頁測驗效果



總結
可將兩個或多個Tomcat server 放到 Nginx 的 upstream 中組成一個負載均衡集群,然后通過 proxy_pass 這種 Web 代理的方式在 location 中設定集群站點,然后再通過 weight 值來分別對 Tomcat server 進行權重的設定,
在生產環境中,Tomcat server 的硬體配置可能不盡相同,可以通過修改相應服務器的 weight 值,對配置較高或配置較低的服務器的訪問請求進行分配控制
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/327939.html
標籤:其他
上一篇:什么是IGMP協議?
下一篇:安信可 ESP32-S3 模組上驅動攝像頭 OV2640,實作遠程拍照并 HTTP 傳輸到阿里云物件存盤OSS,并顯示在微信小程式上。(深度好文,全部開源)
