1. 程式人生 > >部署Tomcat 及 nginx+tomcat負載均衡

部署Tomcat 及 nginx+tomcat負載均衡

make 訪問 應用服務器 示例 用戶 lse use 調試 prefix

案例:部署Tomcat

案例前置知識點
1)、Tomcat簡介:開源項目,屬於Apache軟件基金會,是處理Java代碼的免費產品。
2)、應用場景:Tomcat一款免費的開放源代碼的web應用服務器,屬於輕量級應用服務器,在中小型
系統和並發量不高的場合下普遍舒勇,是開發和調試JSP程序的首選。Tomcat和nginx、Apache一
樣都是處理靜態頁面的,但是其性能遠不如nginx、Apache,所以常常被放到後端被調用使用。

案例環境
————————————————————————————————————————
| 主機| 操作系統 | IP地址 | 主要軟件 |

————————————————————————————————————————
| Tomcat服務器 | centos7.4x86_64 | 192.168.10.40 | apache-tomcat-8.5.16.tar.gz |

案例實施
1、實施準備
修改主機名
[root@localhost ~]# vi /etc/hostname
tomcat
:wq
[root@localhost ~]# reboot
關閉防火墻
[root@tomcat ~]# systemctl stop firewalld
在安裝Tomcat之前必須先安裝JDK。JDK是Java語言的軟件開發工具包,其中包含Java虛擬機(JVM)

,編寫好的Java源碼程序經過編譯可形成Java字節碼,只要安裝了JDK,就可利用JVM解析這些字節
碼文件從而保證Java的跨平臺性。

查看JDK是否安裝-我這裏已經安裝了,如果沒有安裝可以自行下載安裝
[root@tomcat ~]# java -version
openjdk version "1.8.0131"
OpenJDK Runtime Environment (build 1.8.0131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
安裝Tomcat
1、解壓源碼包
[root@tomcat ~]# tar zxvf apache-tomcat-8.5.16.tar.gz

2、將解壓出來的文件夾移動到/usr/local/路徑下,並改名為:tomcat8
[root@tomcat ~]# mv apache-tomcat-8.5.16/ /usr/local/tomcat8
3、啟動和關閉tomcat
[root@tomcat ~]# /usr/local/tomcat8/bin/startup.sh ##啟動(如想關閉tomcat則使用“shutdown.sh”)
Using CATALINABASE: /usr/local/tomcat8
Using CATALINAHOME: /usr/local/tomcat8
Using CATALINATMPDIR: /usr/local/tomcat8/temp
Using JREHOME: /usr
Using CLASSPATH: /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
Tomcat started.
tomcat默認運行在8080端口上,使用netstatus命令查看8080端口監聽狀態
[root@tomcat ~]# netstat -anpt | grep 8080
\tcp6 0 0 :::8080 ::: LISTEN 1501/java
4、打開瀏覽器訪問測試:http://192168.10.40:8080成功打開頁面表示已經啟動成功

Tomcat配置相關說明
Tomcat主目錄為/usr/local/tomcat8/
1、主要目錄說明
[root@tomcat ~]# ls -l /usr/local/tomcat8/
總用量 92
drwxr-x--- 2 root root 4096 10月 4 22:04 bin
drwx------ 3 root root 254 10月 4 22:07 conf
drwxr-x--- 2 root root 4096 10月 4 22:04 lib
drwxr-x--- 2 root root 197 10月 4 22:07 logs
drwxr-x--- 2 root root 30 10月 4 22:04 temp
drwxr-x--- 7 root root 81 6月 22 2017 webapps
drwxr-x--- 3 root root 22 10月 4 22:07 work
|---bin/:存放Windows或Linux平臺上啟動和關閉tomcat的腳本文件
|---conf/:存放tomcat服務器的各種全局配置文件,其中做重要的是server.xml和web.xml.web
|---lib/:存放tomcat運行需要的庫文件(JARS)
|---logs:存放tomcat執行時的LOG文件
|---webapps:tomcat的主要web發布目錄(包括應用程序示例)
|---work:存放JSP編譯後產生的class文件
2、配置文件說明
[root@tomcat ~]# ls -l /usr/local/tomcat8/conf/
總用量 224
drwxr-x--- 3 root root 23 10月 4 22:07 Catalina
-rw------- 1 root root 13816 6月 22 2017 catalina.policy ##權限控制配置文件
-rw------- 1 root root 7376 6月 22 2017 catalina.properties ##tomcat屬性配置文件
-rw------- 1 root root 1338 6月 22 2017 context.xml ##上下文配置文件
-rw------- 1 root root 1149 6月 22 2017 jaspic-providers.xml
-rw------- 1 root root 2358 6月 22 2017 jaspic-providers.xsd
-rw------- 1 root root 3622 6月 22 2017 logging.properties ##日誌log相關配置文件
-rw------- 1 root root 7511 6月 22 2017 server.xml ##主配置文件
-rw------- 1 root root 2164 6月 22 2017 tomcat-users.xml ##管理用戶配置文件(tomcat安裝後提供一個manager-gui的管理界面)
-rw------- 1 root root 2633 6月 22 2017 tomcat-users.xsd
-rw------- 1 root root 168251 6月 22 2017 web.xml ##Tomcat的servlet、servlet-mapping、filter、MIME等相關配置。
Tomcat主配置文件說明
sever.xml為Tomcat的主要配置文件,通過配置該文件,可以修改Tomcat的啟動端口、網站目錄、
虛擬主機、開啟https 等重要功能。
整個sever.xml 由以下結構構成: <Server>、<Sevice>、<Connector/> <Engine>、<Hos>、<Context>、
</Context>、</Host>、</Engine>、</Service>和</Server>.

以下是默認安裝後sever.xml 文件的部分內容,其中<!-- -->內的內容是註釋信息,黑色斜體部分
是我們需要註意和需要經常更改的部分。
見書中--93P

tomcat server組成部分說明
1)、server
server元素代表了整個Catalina的servlet容器
2)、Service
service是這樣一個集合,它由一個或者多個Connector以及一個Ergine(負責處理所有Connector所獲
得的客戶請求)組成。
3)、Connector
一個Connector在某個指定端口上偵聽客戶請求,並將獲得的請求交給Engine來處理,從Ergine處獲得
回應並返回客戶。
4)、Engine
Engine下可以配置多個虛擬主機Virtual Host.每個虛擬主機都有一個域名.
Engine獲得一個請求時,它把該請求匹配到某個Host上,然後把該請求交給該Host來處理.Engine有一
個默認虛擬主機,當請求無法匹配到任何一個Host上的時候,將交給該默認Host來處理。
5)、Host
Host代表一個Vintual Host。即虛擬主機,每個虛擬主機和某個網絡域名Domain Name相匹配。
每個虛擬主機下都可以部署(deploy)一個或者多個Web App,每個Web App對應於一個Context.有一個
Context path。
6)、Context
一個Context對應於一個Web Apiaian一個Web Application由一個或者多個servlet組成

建立Java的web站點
1)、在根目錄下建立一個web目錄,並在裏面創建一個webapp1目錄,用於存放網頁文件
[root@tomcat ~]# mkdir -p /web/webapp1
2)、在webapp1目錄下創建一個index.jsp的測試頁面
[root@tomcat ~]# vim /web/webapp1/index.jsp
[root@tomcat ~]# more /web/webapp1/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page </title>
</head>
<body>
<%out.println("Welcom to test site,http://www.Test1.com");%>
</body>
</html>
3)、修改tomcat的server.xml文件
定義一個虛擬主機,並將網站文件路徑只想已經建立/web/webapp1,在host字段添加contest段。
[root@tomcat ~]# vi /usr/local/tomcat8/conf/server.xml ##大約在148行左右
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context docBase="/web/webapp1" path="" reloadable="false" >
</Context>

##docBase="web/webapp1" ##web網頁文檔的基準目錄
##path="" ##設置默認"類"
##reloadable="false" ##設置監視"類"是否有變化
4)、重新啟動tomcat
[root@tomcat ~]# /usr/local/tomcat8/bin/shutdown.sh
[root@tomcat ~]# /usr/local/tomcat8/bin/startup.sh
5)、通過瀏覽器訪問http://192.168.10.40:8080出現以下內容,則表示tomcat已經配置成功,
並且已經能夠運行JSP 了

Welcom to test site,http://www.Test1.com
案例:Nginx+Tomcat負載均衡群集
案例概述
通常情況下一臺tomcat站點由於可能出現單點故障及無法應付過多客戶復雜多樣的請求等問題。
不能單獨應用於生產環境下,所以我們需要一臺更可靠的解決方案來完善web站點架構
nginx是一款非常優秀的http服務器軟件,它能支持高達50000個並發連接的相應,擁有強大的
靜態資源處理能力,運行穩定,並且內存,CPU等資源消耗非常低,目前很多大型網站都應用nginx
服務器作為後端網站程序的反向代理及負載均衡器,來提高整個站點的負載並發處理能力。

案例環境
----------------------------------------------------------------------------------------------------------
| 主機 | 操作系統 | IP地址 | 主要軟件 |
-----------------------------------------------------------------------------------------------------------
|前端Nginx服務器 | centos7.4x86_64 | 192.168.10.20 | nginx-1.12.0.tar.gz |
-----------------------------------------------------------------------------------------------------------
|後端Tomcat服務器1| centos7.4x86_64 | 192.168.10.40 | apache-tomcat-8.5.16.tar.gz |
-----------------------------------------------------------------------------------------------------------
|後端Tomcat服務器2| centos7.4x86_64 | 192.168.10.50 | apache-tomcat-8.5.16.tar.gz |
-----------------------------------------------------------------------------------------------------------

案例實施
1、Tomcat2 server配置
Tomcat2 server配置方法基本相同於Tomcat1,
1)關閉防火墻
2)確認是否安裝JDK,Java版本與tomcat1 server保持一致
3)安裝配置tomcat,版本與Tomcat1 server保持一致
4)創建/web/webapp1目錄,修改tomcat配置文件server.xml,將網站文件目錄更改到
/web/webapp1/路徑下。
5)在/web/webapp1/路徑下建立index.jsp,為了區別將測試也變index.jsp的內容稍加修改
[root@tomcat ~]# vim /web/webapp1/index.jsp
[root@tomcat ~]# more /web/webapp1/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test2 page </title>
</head>
<body>
<%out.println("Welcom to test site,http://www.Test2.com");%>
</body>
</html>
6)啟動tomcat,瀏覽器訪問Tomcat2 server,測試http://192.168.10.50:8080

2、nginx服務器配置
在nginx服務器192.168.10.20上安裝nginx,反向代理兩個tomcat站點,並實現負載均衡
1)關閉防火墻
2)安裝相應的軟件包
[root@localhost ~]# yum install -y pcre-devel zlib-devel openssl-devel
3)解壓並安裝nginx
[root@localhost ~]# groupadd www
[root@localhost ~]# useradd -g www www -s /bin/false
[root@localhost ~]# tar zxvf nginx-1.12.0.tar.gz
[root@localhost ~]# cd nginx-1.12.0/
[root@localhost nginx-1.12.0]# ./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 --with-http_ssl_module
--prefix=/usr/local/nginx ##指定安裝路徑
--user=www --group=www ##指定運行的用戶和組
--with-file-aio ##啟用文件修改支持
--with-http_stub_status_module ##啟用狀態統計
--with-http_gzip_static_module ##啟用gzip靜態壓縮
--with-http_flv_module ##啟用flv模塊,提供尋求內存使用基於時間的偏移量文件
--with-http_ssl_module ##啟用ssl模塊
[root@localhost nginx-1.12.0]# make && make install
3)配置nginx.conf
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
1、在http{....}中加入以下代碼,設定負載均衡的服務器列表,weight參數表示權重,
權重越高被分配的概率就越大,為了使測試效果比較明顯,這裏吧權重設置為一樣
大概在33行下面加上就可以
34 upstream tomcat_server {
35 server 192.168.10.40:8080 weight=1;
36 server 192.168.10.50:8080 weight=1;
37 }
2、在http{....}-server{....}-location / {....}中加入一行"proxy_pass http://tomcat_server;"
大概在47行下面
47 location / {
48 root html;
49 index index.html index.htm;
50 proxy_pass http://tomcat_server;
51 }
4)測試nginx配置文件是否正確
[root@localhost ~]# /usr/local/nginx/sbin/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

5)啟動nginx服務
[root@localhost ~]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

6)查看nginx服務進程
[root@localhost nginx-1.12.0]# ps aux | grep nginx
root 6511 0.0 0.1 45896 1128 ? Ss 02:15 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
www 6512 0.0 0.1 48420 1984 ? S 02:15 0:00 nginx: worker process
root 6522 0.0 0.0 112676 984 pts/0 R+ 02:16 0:00 grep --color=auto nginx

7)查看端口號及PID進程號
[root@localhost nginx-1.12.0]# netstat -anpt | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 6511/nginx: master

3、測試負載均衡效果
1)打開瀏覽器訪問:http://192.168.10.20
2)不斷刷新頁面,查看頁面變化,頁面內容交替顯示,則說明負載均衡集群搭建成功。

部署Tomcat 及 nginx+tomcat負載均衡