天天看點

負載均衡與動靜分離(nginx+Tomcat)環境準備

這裡寫目錄标題

  • 環境準備
    • 1、關閉防火牆、關閉核心防護
    • 2、檢視JDK是否安裝
    • 3、安裝Tomcat1(192.168.100.22)
    • 4、安裝Tomcat2(192.168.100.23)
    • 5、配置Nginx伺服器(192.168.100.21)

環境準備

三台虛拟機

Tomcat 2台

nginx 1台

1、關閉防火牆、關閉核心防護

[[email protected] ~]# systemctl stop firewalld
 [[email protected] ~]# setenforce 0
           

2、檢視JDK是否安裝

[[email protected] ~]# java -version 
           

如果未安裝需要下載下傳安裝包

yum -y install java-1.8.0-openjdk

tar xf jdk-8u144-linux-x64.tar.gz ##### 解壓安裝包

cp -rv jdk1.8.0_144/ /usr/local/java #####複制檔案到/usr/local/java

vi /etc/profile                                             #####編輯環境變量
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export PATH=$PATH:/usr/local/java/bin
export CLASSPATH=./:/usr/local/java/lib:/usr/local/java/jre/lib
source /etc/profile                                     #####讓剛才編輯的環境變量生效
java -version                                              #####檢查java版本
           

3、安裝Tomcat1(192.168.100.22)

●解壓 apache-tomcat-8.5.16.tar.gz 包

[[email protected] ~]# tar xf apache-tomcat-8.5.16.tar.gz
           

●解壓後生成 apache-tomcat-8.5.16 檔案夾,将該檔案夾移動到/usr/local/下

[[email protected] ~]# mv apache-tomcat-8.5.16/ /usr/local/tomcat8
           

●啟動 tomcat

[[email protected] ~]# cd /opt
[[email protected] opt]# tar xzvf apache-tomcat-8.5.23.tar.gz                      #####解壓
[[email protected] opt]# cp -r apache-tomcat-8.5.23 /usr/local/tomcat8     #####将源代碼複制到/usr/local/tomcat8
ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup                        #####建立軟連接配接tomcatup      
ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown               #####建立軟連接配接tomcatdown  
[[email protected] opt]# tomcatup                                                                 ######啟動tomcat
Using CATALINA_BASE:   /usr/local/tomcat8
Using CATALINA_HOME:   /usr/local/tomcat8
Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
Tomcat started.
[[email protected] opt]# netstat -anpt | grep 8080                                   #####檢測是否啟動,8080端口是否工作正常
tcp6       0      0 :::8080                 :::*                    LISTEN      68238/java   

           

●建立 Java 的 Web 站點

在根目錄下建立一個 web 目錄,并在裡面建立一個 webapp1 目錄,用于存放網站檔案

[[email protected] ~]# mkdir -pv /web/webapp1
           

●在webapp1 目錄下建立一個 index.jsp 的測試頁面

[[email protected] ~]# vim /web/webapp1/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.51xit.com");%>
	</body>
	<body>
 		<div>靜态頁面的圖檔 1</div><br><img src="logo.jpg">
	</body>
</html>
           

●修改 Tomcat 的 server.xml 檔案。定義一個虛拟主機,并将網站檔案路徑指向已經建立的/web/webapp1,在 host 加 context 段

[[email protected] ~]# vim /usr/local/tomcat8/conf/server.xml
<Host name="localhost" appBase="webapps"
	unpackWARs="true" autoDeploy="true">
<Context docBase="/web/webapp1" path="" reloadable="false" >
</Context> 

###docBase:web 應用的文檔基準目錄 
###reloadable 設定監視"類"是否變化 
###path="" 設定預設"類"

           

●關閉 Tomcat,再重新啟動

[[email protected] ~]# /usr/local/tomcat8/bin/shutdown.sh
[[email protected] ~]# /usr/local/tomcat8/bin/startup.sh
           

通過浏覽器通路 http://192.168.100.22:8080/

顯示“靜态頁面的圖檔 1”文字,并沒有出現 logo.jpg 圖檔,原因是由于靜态圖檔暫時沒 配,是以加載不出來

4、安裝Tomcat2(192.168.100.23)

與Tomcat安裝配置一樣,隻需要改一下vim /web/webapp1/index.jsp裡面的靜态和動态頁面圖檔便于區分就行

5、配置Nginx伺服器(192.168.100.21)

在 Nginx 伺服器 192.168.100.21上安裝 Nginx,反向代理到兩個 Tomcat 站點,并實作 負載均衡

1、關閉防火牆

2、安裝相關軟體包

[[email protected] ~]# yum -y install pcre-devel zlib-devel openssl-devel gcc-c++
           

■解壓并安裝 Nginx

[[email protected] ~]# groupadd www
[[email protected] ~]# useradd -g www www -s /bin/false
[[email protected] opt]# tar xzvf nginx-1.15.9.tar.gz
[[email protected] opt]# cd nginx-1.15.9/
[[email protected] nginx-1.15.9]# ./configure --prefix=/usr/local/nginx --user=www --group=www --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module

           

//–user=,–group= 指定運作的使用者群組

//–with-file-aio 啟用檔案修改支援

//–with-http_stub_status_module 啟用狀态統計

//–with-http_gzip_static_module 啟用 gzip 靜态壓縮

//–with-http_flv_module 啟用 flv 子產品,提供尋求記憶體使用基于時間的偏移量檔案

//–with-http_ssl_module 啟用 SSL 子產品

[[email protected] nginx-1.12.0]# make && make install 
[[email protected] nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[[email protected] nginx-1.12.0]# ls -l /usr/local/sbin/nginx
lrwxrwxrwx 1 root root 30 10 月 16 16:50 /usr/local/sbin/nginx -> /usr/local/nginx/sbin/nginx
           

■檢查配置檔案

與 Apache 的主程式 httpd 類似, Nginx 的主程式也提供了“-t”選項用來對配置檔案進行

檢查, 以便找出不當或錯誤的配置。 配置檔案 nginx.conf 預設位于安裝目錄下的 conf/子目

錄中。 若要檢查位于其他位置的配置檔案, 可使用“-c”選項來指定路徑

[[email protected] ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
           

■啟動、 停止 Nginx

killall -1 nginx ####安全重新開機

killall -3 nginx ###停止服務

如果出現: -bash: killall: command not found

就yum -y install psmisc

[[email protected] ~]# nginx                                ####啟動
[[email protected] ~]# netstat -anpt | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
7180/nginx: master
[[email protected] ~]# yum -y install elinks
[[email protected] ~]# elinks http://localhost       #####使用 elinks 浏覽器      ####顯示“Welcome to nginx!”頁面,表明 Nginx 服務已經正常運作
           

■添加 Nginx 系統服務

[[email protected] ~]# 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
ExecReload=/usr/bin/kill -s HUP $MAINPID
ExecStop=/usr/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
           

[Unit]

Description=nginx ####描述

After=network.target ####描述服務類别

[Service]

Type=forking ####背景運作形式

PIDFile=/usr/local/nginx/logs/nginx.pid ####PID 檔案位置

ExecStart=/usr/local/nginx/sbin/nginx ####啟動服務

ExecReload=/usr/bin/kill -s HUP $MAINPID ####根據 PID 重載配置

ExecStop=/usr/bin/kill -s QUIT $MAINPID ####根據 PID 終止程序

PrivateTmp=true

[Install]

WantedBy=multi-user.target

[[email protected] ~]# chmod 754 /lib/systemd/system/nginx.service
[[email protected] ~]# systemctl enable nginx.service
           

■重新開機系統

systemctl start nginx.service
systemctl stop nginx.service
systemctl reload nginx.service
systemctl restart nginx.service
systemctl status nginx.service

           

■配置 nginx.conf

在 http {…} 中加入以下代碼,設定負載均衡的伺服器清單,weight 參數表示權重, 權重越高,

被配置設定到的機率越大。為了使測試效果比較明顯,我們把權重設定為一樣

[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf 
 upstream tomcat_921:8080 weight=1;
	server 172.16.16.173:8080 weight=1;
}	
           

■編輯 Nginx 靜态頁面檔案

vim /usr/local/nginx/html/index.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8"> 
<title>靜态頁面</title>
<style>
	body {
		width: 35em;
		margin: 0 auto;
		font-family: Tahoma, Verdana, Arial, sans-serif;
	}
</style>
</head>
<body>
<h1>靜态頁面</h1>
<p>這是個靜态頁面</p>
</body>
</html>

           

■添加動靜分離規則

在 http {…} - server{…}中加入 location ~ .*.jsp${…}動态請求條件規則以及靜态圖檔請求規則

location ~ .*.jsp$ {		###動态頁面正則
	proxy_set_header HOST $host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header Client-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_pass http://tomcat_server;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { 		###靜态圖檔正則
	root /usr/local/nginx/html/img;
	expires 30d;
	}

location / {
	root html;
	index index.html index.htm;
	}

           

■啟動服務

nginx -t #測試 Nginx 配置檔案是否正确

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf #啟動 Nginx 服務

ps aux | grep nginx #檢視 Nginx 服務程序

■測試效果 下面是測試步驟

(1)測試靜态頁面效果 打開浏覽器通路 http://192.168.100.21/,可以看到通路到 nginx 靜态頁面,

(2)測試負載均衡效果 打開浏覽器通路 http://192.168.100.21/index.jsp。 不斷重新整理浏覽器測試,

可以看到由于權重相同,頁面會反複在以下兩個頁面來回切換。 第一次通路,出現 test1 的測試頁面,

并且能正常加載 nginx 上的靜态頁面圖檔,重新整理後,第二次通路,出現 test2 的測試頁面,

示。,就說明負載均衡群集搭建成功,已經可以 在兩個 Tomcat server 站點進行切換了

繼續閱讀