部署Tomcat及其负载均衡

简介: 部署Tomcat及其负载均衡

       Tomcat服务器是免费的开放源代码的web应用服务器,属于轻量级应用服务器、在中小型系统和并发量访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。

部署Tomcat

案例环境

实施准备

  • 关闭防火墙
1. [root@localhost ~]# systemctl stop firewalld
2. [root@localhost ~]# ip a
3. 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
4.     link/ether 00:0c:29:9d:34:74 brd ff:ff:ff:ff:ff:ff
5.     inet 192.168.1.10/24 brd 192.168.1.255 scope global ens33
6.       valid_lft forever preferred_lft forever
7.     inet6 fe80::5f65:9c3d:d218:7cea/64 scope link tentative 
8.       valid_lft forever preferred_lft forever

       在安装Tomcat之前必须先安装JDK。JDK的全称是Java Development Kit,是sun佛那个是免费提供的Java语言的软件开发工具包,其中包含Java虚拟机(JVM)。

  • 检查JDK是否安装
1. [root@localhost ~]# java -version
2. openjdk version "1.8.0_102"
3. OpenJDK Runtime Environment (build 1.8.0_102-b14)
4. OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode)

安装配置Tomcat

  • 解压apache-tomcat-8.5.16.tar.gz包。
[root@localhost ~]# tar zxf /media/apache-tomcat-8.5.16.tar.gz -C /usr/src
  • 解压后生成文件夹,移动到/usr/src/下。
[root@localhost ~]# mv /usr/src/apache-tomcat-8.5.16/ /usr/local/tomcat8
  • 启动tomcat
1. [root@localhost ~]# /usr/local/tomcat8/bin/startup.sh 
2. Using CATALINA_BASE:   /usr/local/tomcat8
3. Using CATALINA_HOME:   /usr/local/tomcat8
4. Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
5. Using JRE_HOME:        /usr
6. Using CLASSPATH:       /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
7. Tomcat started. 
8. [root@localhost ~]# netstat -anpt | grep 8080
9. tcp6       0      0 :::8080                 :::*                    LISTEN      42773/java

  • 关闭Tomcat运行命令
[root@localhost ~]# /usr/local/tomcat8/bin/shutdown.sh

Tomcat配置相关说明

Tomcat的主目录为/usr/local/tomcat8/。

1. [root@localhost ~]# ll /usr/local/tomcat8/
2. total 92
3. drwxr-x--- 2 root root  4096 Jul 15 11:19 bin
4. drwx------ 3 root root   254 Jul 15 11:22 conf
5. drwxr-x--- 2 root root  4096 Jul 15 11:19 lib
6. -rw-r----- 1 root root 57092 Jun 22  2017 LICENSE
7. drwxr-x--- 2 root root   197 Jul 15 11:22 logs
8. -rw-r----- 1 root root  1723 Jun 22  2017 NOTICE
9. -rw-r----- 1 root root  7064 Jun 22  2017 RELEASE-NOTES
10. -rw-r----- 1 root root 15946 Jun 22  2017 RUNNING.txt
11. drwxr-x--- 2 root root    30 Jul 15 11:19 temp
12. drwxr-x--- 7 root root    81 Jun 22  2017 webapps
13. drwxr-x--- 3 root root    22 Jul 15 11:22 work
  • 主要目录说明。

bin/:存放windows或linux平台上启动和关闭Tomcat的脚本文件。

conf/:存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xml和web.xml。

lib/:存放Tomcat运行需要的库文件(JARS)。

logs:存放Tomcat执行时的LOG文件。

webapps:Tomcat的主要web发布目录(包括应用程序示例)。

work:存放JSP编译后产生的class文件。

  • 配置文件说明。
1. [root@localhost ~]# ll /usr/local/tomcat8/conf/
2. total 224
3. drwxr-x--- 3 root root     23 Jul 15 11:22 Catalina
4. -rw------- 1 root root  13816 Jun 22  2017 catalina.policy
5. -rw------- 1 root root   7376 Jun 22  2017 catalina.properties
6. -rw------- 1 root root   1338 Jun 22  2017 context.xml
7. -rw------- 1 root root   1149 Jun 22  2017 jaspic-providers.xml
8. -rw------- 1 root root   2358 Jun 22  2017 jaspic-providers.xsd
9. -rw------- 1 root root   3622 Jun 22  2017 logging.properties
10. -rw------- 1 root root   7511 Jun 22  2017 server.xml
11. -rw------- 1 root root   2164 Jun 22  2017 tomcat-users.xml
12. -rw------- 1 root root   2633 Jun 22  2017 tomcat-users.xsd
13. -rw------- 1 root root 168251 Jun 22  2017 web.xml

catalina.policy:权限控制配置文件。

catalina.properties:Tomcat属性配置文件。

context.xml:上下文配置文件。

logging.properties:日志log相关配置文件。

server.xml:主配置文件

tomcat-users.xml:manager-gui管理用户配置文件。

web.xml:Tomcat的server、servlet-mapping、filter、MIME等相关配置。

Tomcat主配置文件说明

server.xml为Tomcat的主配置文件,通过配置该文件,可以修改Tomcat的启动端口、网站目录、虚拟主机、开启https等重要功能。整个server.xml由以下结构构成:<Server>、<Service>、<Connector/>、<Engine>、<Host>、<Context>、</Context>、</Host>、</Engine>、</Service>和</Server>。

1. <Server port="8005" shutdown="SHUTDOWN">
2. //Tomcat关闭端口,默认只对本机地址开放,可以在本机通过telnet127.0.0.1 8005访问,对Tomcat进行关闭操作。
3. ......//省略部分内容
4.    <Connector port="8080" protocol="HTTP/1.1"
5.                connectionTimeout="20000"
6.                redirectPort="8443" />
7. //Tomcat启动的默认端口号8080,可以根据需要进行更改。
8. ......//省略部分内容
9.    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
10. //Tomcat启动AJP1.3连接器时默认的端口号,可以根据需要进行更改。
11. ......//省略部分内容

建立Java的web站点

  • 再根据目录建立一个web目录,并在里面建立一个webapp1目录,用于存放网站文件。
1. [root@localhost ~]# mkdir -pv  /web/webapp1
2. mkdir: created directory ‘/web’
3. mkdir: created directory ‘/web/webapp1’
  • 在webapp1目录下建立一个index.jsp的测试页面。
1. [root@localhost ~]# vim /web/webapp1/index.jsp
2. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
3. <html>
4. <head>
5.        <title>JSP  test1  page</title>
6. </head>
7. <body>
8. <% out.println("11111111111111111");%>
9. </body>
10. </html>
  • 修改Tomcat的server.xml文件。

定义一个虚拟主机,并将网站文件路径执行已建立的/web/webapp1,在host端增加context段。

1. [root@localhost ~]# vim /usr/local/tomcat8/conf/server.xml
2. ......//省略部分内容
3. <Host name="localhost"  appBase="webapps"
4.             unpackWARs="true" autoDeploy="true">
5. <Context docBase="/web/webapp1" path="" reloadable="false">         //加入两行配置docBase:web应用的文档基准目录,reloadable设置监视“类”是否变化,path=""设置默认“类”
6. </Context>
  • 关闭Tomcat,在重新启动。
1. [root@localhost ~]# /usr/local/tomcat8/bin/shutdown.sh 
2. [root@localhost ~]# /usr/local/tomcat8/bin/startup.sh
  • 访问浏览器http://127.0.0.1:8080,出现下图所示内容,说明该Tomcat站点已经配置成功,并且已经能够进行JSP了。

部署Nginx+Tmocat负载均衡群集

       Nginx是一款非常优秀的http服务器软件,它能够支持高达50000个并发连接输的响应,拥有强大的静态资源处理能力,运行稳定、并且内存、CPU等系统资源消耗非常低。本次将以Nginx作为负载均衡器,Tomcat作为应用服务器的负载群集的设置方法。

实施准备

       配置基本如Tomcat1 server相同,修改网页信息区分1和2即可。

Tomcat2 server配置

1. [root@localhost ~]# systemctl stop firewalld
2. [root@localhost ~]# java -version
3. openjdk version "1.8.0_102"
4. OpenJDK Runtime Environment (build 1.8.0_102-b14)
5. OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode)
6. [root@localhost ~]# eject
7. [root@localhost ~]# mount /dev/cdrom /media
8. mount: /dev/sr0 写保护,将以只读方式挂载
9. [root@localhost ~]# tar zxf /media/apache-tomcat-8.5.16.tar.gz -C /usr/src
10. [root@localhost ~]# mv /usr/src/apache-tomcat-8.5.16/ /usr/local/tomcat8
11. [root@localhost ~]# /usr/local/tomcat8/bin/startup.sh 
12. Using CATALINA_BASE:   /usr/local/tomcat8
13. Using CATALINA_HOME:   /usr/local/tomcat8
14. Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
15. Using JRE_HOME:        /usr
16. Using CLASSPATH:       /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
17. Tomcat started.
18. [root@localhost ~]# netstat -anpt | grep 8080
19. tcp6       0      0 :::8080                 :::*                    LISTEN      10597/java          
20. [root@localhost ~]# mkdir -pv /web/webapp1
21. mkdir: 已创建目录 "/web"
22. mkdir: 已创建目录 "/web/webapp1"
23. [root@localhost ~]# scp root@192.168.1.10:/web/webapp1/index.jsp /web/webapp1/              //配置基本相同,从Tomcat1传过来即可
24. The authenticity of host '192.168.1.10 (192.168.1.10)' can't be established.
25. ECDSA key fingerprint is 68:df:0f:ac:c7:75:df:02:88:7d:36:6a:1a:ae:27:23.
26. Are you sure you want to continue connecting (yes/no)? yes
27. Warning: Permanently added '192.168.1.10' (ECDSA) to the list of known hosts.
28. root@192.168.1.10's password: 
29. index.jsp                                     100%  191     0.2KB/s   00:00    
30. [root@localhost ~]# vim /web/webapp1/index.jsp
31. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
32. <html>
33. 
34. <head>
35.        <title>JSP  test1  page</title>
36. </head>
37. 
38. <body>
39. <% out.println("2222222222");%>                        //网页内容改为222或区分Tomcat1和2的内容即可
40. </body>
41. </html>
42. [root@localhost ~]# scp root@192.168.1.10:/usr/local/tomcat8/conf/server.xml /usr/local/tomcat8/conf/server.xml 
43. root@192.168.1.10's password: 
44. server.xml                                    100% 7581     7.4KB/s   00:00     //配置文件从Tomcat1直接覆盖过来
45. [root@localhost ~]# /usr/local/tomcat8/bin/shutdown.sh
46. [root@localhost ~]# /usr/local/tomcat8/bin/startup.sh

Nginx服务器配置

  • 在Nginx服务器上安装Nginx,反向代理Tomcat站点,并实现负载均衡。
1. [root@localhost ~]# systemctl stop firewalld
2. [root@localhost ~]# rm -rf /etc/yum.repos.d/*
3. [root@localhost ~]# vim /etc/yum.repos.d/yum.repo
4. [yum]
5. name=a
6. baseurl=file:///media
7. gpgcheck=0
8. [root@localhost ~]# mount /dev/cdrom /media
9. mount: /dev/sr0 is write-protected, mounting read-only
10. [root@localhost ~]# yum -y install pcre-devel zlib-devel openssl-devel          //挂载系统盘安装相关软件包
11. [root@localhost ~]# groupadd nginx
12. [root@localhost ~]# useradd -g nginx nginx -s /bin/false
13. [root@localhost ~]# eject
14. [root@localhost ~]# mount /dev/cdrom /media                                     //挂在Nginx光盘
15. mount: /dev/sr0 is write-protected, mounting read-only
16. [root@localhost ~]# tar zxf /media/nginx-1.12.0.tar.gz -C /usr/src
17. [root@localhost ~]# cd /usr/src/nginx-1.12.0/
18. [root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module
19. [root@localhost nginx-1.12.0]# make && make install
  • 配置nginx.conf

把Nginx的默认站点通过proxy_pass方法代理到了设定好的tom负载均衡服务器组上。

1. 
2.     #gzip  on;
3. upstream tom {                                                          //添加以下四行配置权重设置相同为1
4.         server 192.168.1.10:8080 weight=1;
5.         server 192.168.1.20:8080 weight=1;
6.         }
7.     server {
8.         listen       80;
9.         server_name  localhost;
10. 
11.         #charset koi8-r;
12. 
13.         #access_log  logs/host.access.log  main;
14. 
15.        location / {
16.             root   html;
17.            index  index.html index.htm;
18.         proxy_pass      http://tom;                                         //添加proxy_pass段代理tom
19.         }
20. ......省略部分内容
21. }
  • 测试nginx配置文件并启动
1. [root@localhost ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/          //创建软连接
2. [root@localhost ~]#  nginx -t                                                   //检查语法
3. nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
4. nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
5. [root@localhost ~]# nginx                                                       //启动nginx
6. [root@localhost ~]# ps aux | grep nginx
7. root      13994  0.0  0.0  20492   620 ?        Ss   16:31   0:00 nginx: master process nginx
8. nginx     13998  0.0  0.0  23024  1392 ?        S    16:31   0:00 nginx: worker process
9. root      14008  0.0  0.0 112648   960 pts/0    R+   16:31   0:00 grep --color=auto nginx
10. [root@localhost ~]# netstat -anpt | grep nginx
11. tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      13994/nginx: master

测试负载均衡效果

       客户机打开浏览器访问Nginx服务器http://192.168.1.30/。不断刷新浏览器测试,可以看到权重相同,页面会反复在以下两个页面来会切换。这说明负载均衡群集搭建成功,已经可以在两个Tomcat Server站点进行切换了。需要注意的是,实际生产环境中,多台Tomcat服务器网页应是一致的。


相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
6天前
|
负载均衡 网络协议 算法
LVS 负载均衡部署的三种模式 与搭建dr模式具体步骤
LVS 负载均衡部署的三种模式 与搭建dr模式具体步骤
|
22天前
|
XML Java 应用服务中间件
Tomcat_servlet部署、编译、配置、打包
Tomcat_servlet部署、编译、配置、打包
29 0
|
6天前
|
Kubernetes 负载均衡 应用服务中间件
k8s 二进制安装 优化架构之 部署负载均衡,加入master02
k8s 二进制安装 优化架构之 部署负载均衡,加入master02
|
6天前
|
负载均衡 网络协议
NAT模式 LVS负载均衡部署
NAT模式 LVS负载均衡部署
|
11天前
|
网络协议 Linux C语言
Intel HDSLB 高性能四层负载均衡器 — 基本原理和部署配置
本篇主要介绍了 Intel HDSLB 的基本运行原理和部署配置的方式,希望能够帮助读者们顺利的把 HDSLB-DPVS 项目 “玩” 起来。
74 9
Intel HDSLB 高性能四层负载均衡器 — 基本原理和部署配置
|
13天前
|
Java 应用服务中间件 Apache
Tomcat的基本使用,如何用Maven创建Web项目、开发完成部署的Web项目
Tomcat的基本使用,如何用Maven创建Web项目、开发完成部署的Web项目
30 1
|
17天前
|
负载均衡 前端开发 应用服务中间件
Nginx+Tomcat负载均衡配置_nginx做tomcat的负载均衡成功,但tomcat的css文件400
Nginx+Tomcat负载均衡配置_nginx做tomcat的负载均衡成功,但tomcat的css文件400
|
17天前
|
负载均衡 前端开发 应用服务中间件
Nginx+Tomcat负载均衡配置_nginx做tomcat的负载均衡成功,但tomcat的css文件400(2)
Nginx+Tomcat负载均衡配置_nginx做tomcat的负载均衡成功,但tomcat的css文件400(2)
|
22天前
|
应用服务中间件
jeecgboot开发环境服务启动刷新没问题,部署到tomcat,F5刷新或者浏览器刷新,会出现404
jeecgboot开发环境服务启动刷新没问题,部署到tomcat,F5刷新或者浏览器刷新,会出现404
12 0
|
22天前
|
存储 Java 应用服务中间件
Springboot项目打war包部署到外置tomcat容器【详解版】
该文介绍了将Spring Boot应用改为war包并在外部Tomcat中部署的步骤:1) 修改pom.xml打包方式为war;2) 排除内置Tomcat依赖;3) 创建`ServletInitializer`类继承`SpringBootServletInitializer`;4) build部分需指定`finalName`;5) 使用`mvn clean package`打包,将war包放入外部Tomcat的webapps目录,通过startup脚本启动Tomcat并访问应用。注意,应用访问路径和静态资源引用需包含war包名。