部署Tomcat及其负载均衡

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 部署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服务器网页应是一致的。


相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
6天前
|
弹性计算 监控 负载均衡
|
6天前
|
负载均衡 网络协议 网络安全
SLB-Backend多实例部署配置健康检查
【10月更文挑战第22天】
22 3
|
6天前
|
运维 负载均衡 算法
|
2月前
|
监控 Java 应用服务中间件
部署tomcat部署实战案例
本文是关于Tomcat部署实战案例的教程,包括通过yum和二进制方式部署Tomcat的详细步骤,以及如何监控Tomcat服务。
206 84
部署tomcat部署实战案例
|
7天前
|
存储 缓存 监控
SLB-Backend跨区域/跨数据中心部署
【10月更文挑战第21天】
23 9
|
7天前
|
弹性计算 缓存 监控
SLB-Backend多实例部署
【10月更文挑战第21天】
18 5
|
2月前
|
应用服务中间件 Docker 容器
docker应用部署---Tomcat的部署配置
这篇文章介绍了如何使用Docker部署Tomcat服务器,包括搜索和拉取Tomcat镜像、创建容器并设置端口映射和目录映射,以及如何创建一个HTML页面并使用外部机器访问Tomcat服务器。
docker应用部署---Tomcat的部署配置
|
1月前
|
负载均衡 应用服务中间件 Apache
Tomcat负载均衡原理详解及配置Apache2.2.22+Tomcat7
Tomcat负载均衡原理详解及配置Apache2.2.22+Tomcat7
35 3
|
26天前
|
Java 应用服务中间件 Linux
tomcat学习二:tomcat部署多个项目:不修改端口和修改端口 两种方式详解
这篇文章详细介绍了在Tomcat服务器上部署多个项目的方法,包括不修改端口和修改端口两种方式。
81 0
|
2月前
|
前端开发 Java 应用服务中间件
react自学(6) 部署到tomcat中
react自学(6) 部署到tomcat中