部署Tomcat负载均衡

简介: Tomcat介绍Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

一、理论部分

Tomcat介绍

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。


Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。


当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为9.0。


Tomcat各节点介绍

Server节点

Tomcat实例的最顶层元素,对应Tomcat服务器,仅一个。

port:指定监听关闭Tomcat服务器请求的端口。端口用于标记网络上的一个进程,由此一个端口只能唯一的标记一台主机上的一个进程,但是一个进程可以对应多个端口。

shutdown:指定向上述端口发送的命令字符串。


Service节点

监听来自客户端的http请求,一个Server节点可以有多个Service节点。个人认为所谓的多个Service是,服务器开启了多个线程去监听不同端口收到的来自客户端的http请求。

name:指定Service的名字。


Connector节点

主要设置Service的监听端口。

客户端与Service之间的链接,配置客户端与服务端的链接信息。Tomcat默认监听的是8080端口,商业网站对外发布,若想  用户不输入端口,使用http协议的默认端口,这里就必须将其改成80。一个Service节点可以有多个Connector节点。一个端口只能对应一个进程,但是一个进程可以对应多个端口。

port:指定监听客户端请求的端口。

protocol:指定传输协议。

connectionTimeout:指定链接超时时间,毫秒。

redirectPort:指定Service正在处理http请求时收到SSL请求后重定向的端口。


Engine节点

处理监听到的来自客户端的http请求,一个Service节点仅有一个Engine节点。

name:指定Engine的名字。

defaultHost:指定主机缺省时,默认的主机,必须是某个Host结点的name值。

一个完整的http请求网址为:协议://主机:端口/虚拟目录/站点根目录/资源如 http://localhost:8080/aa/examples/index.html。

主机(也可以是虚拟主机或者域名),对应着ip。网络上的一台服务器只有一个ip,但是一个ip可以对应多个逻辑主机,即一个ip可以有多个域名。这多个逻辑主机实际只对应一个真正的物理主机,由此称为虚拟主机。

虚拟目录,暂且认为是真实路径的一个别名,可以没有。


Host节点

主要设置Service的虚拟主机。

配置虚拟主机,一个Engine节点可以有多个Host节点,即多个虚拟主机。

name:指定虚拟主机的名字。该名字可以随便定义,但是必须能被DNS解析到,要对应到指定的ip地址。要定义虚拟主机,先要申请域名。

appBase:指定存放web应用程序的根目录,如webapps,我们的站点根目录都应该放在此目录下。站点实际是一个有着特定结构的文件夹,该文件夹的结构有着自己的特点,如必须有一个WEB—INF子文件夹,该子文件夹又必须有一个web.xml文件。

Tomcat的conf下有个web.xml文件,用于配置web应用的的信息,被服务器上的全部站点共享,这里的改变会影响到所有的站点。通常我们都是配置web应用站点根目录下的web.xml文件,其改变只对该应用起作用。该文件可以用于设置web应用 的默认资源



Context节点

主要设置Service的虚拟目录和默认站点。

配置虚拟目录和默认站点,一个Engin节点可以有多个Context节点,即多个虚拟目录。我们在访问http://locaohost:8080的时候实际访问的是http://locaohost:8080/ROOT/index.jsp。使用http协议,根据localhost定位到主机,根据端口8080定位到主机上的Tomcat服务器Service进程,此时因为用户没有指定站点和资源,则访问conf下的server.xml配置的默认站点和资源。在erver.xml中找不到该配置,是因为ROOT是通过硬编码写好的,但是可以通过配置文件修改成其他的站点。

path:指定web应用程序的虚拟路径,如/aa

docBase:指定web应用程序的实际存放路径,即虚拟目录的实际路径,具体到站点目录

reloadable:若为true,Tomcat会自动检测项目WEB—INF目录下的lib和classes文件夹的内容,若有变化会自动重新加载项目而无需重启服务器。


Logger节点

Tomcat的log信息配置。

className:指定log使用的类名,必须实现org.apache.catalina.Logger接口。

prefix:指定log文件的前缀。

suffix:指定log文件的后缀。

timestamp:若为true,则log文件名中必须加入时间戳。


Value节点

类似Logger。

directory:指定log文件的存放位置。


directory(指定log文件存放的位置):

pattern 有两个值,common方式记录远程主机名或ip地址,用户名,日期,第一行请求的字符串,HTTP响应代码,发送的字节数。combined方式比common方式记录的值更多。


Tomcat目录


|---bin:存放启动和关闭tomcat脚本;

|---conf:存放不同的配置文件(server.xml和web.xml);

|---doc:存放Tomcat文档;

|---lib/japser/common:存放Tomcat运行需要的库文件(JARS);

|---logs:存放Tomcat执行时的LOG文件;

|---src:存放Tomcat的源代码;

|---webapps:Tomcat的主要Web发布目录(包括应用程序示例);

|---work:存放jsp编译后产生的class文件;


二、部署过程

环境准备

image.png

部署tomcat平台

1.1安装JDK

   [root@localhost ~]# tar xvf jdk-7u65-linux-x64.gz
   [root@localhost ~]# mv jdk1.7.0_65/ /usr/local/java

1.2建立java.sh  

 [root@localhost ~]# vim /etc/profile.d/java.sh
                      export JAVA_HOME=/usr/local/java
                      export PATH=$JAVA_HOME/bin:$PATH
   [root@localhost ~]# source /etc/profile.d/java.sh
   [root@localhost ~]# java –version                                  //检测java版本
   [root@localhost ~]# java version "1.7.0_65"
                       Java(TM) SE Runtime Environment (build 1.7.0_65-b17)
                       Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)

2.安装tomcat

    [root@localhost ~]# tar xvf  apache-tomcat-7.0.54.tar.gz
    [root@localhost ~]# mv apache-tomcat-7.0.54 /usr/local/tomcat
    [root@localhost ~]# /usr/local/tomcat/bin/startup.sh     //启动Tomcat程序

3.搭建成功实例

访问:http://127.0.0.1:8080image.png

搭建nginx+tomcat负载均衡集群

1.建立java的web站点(在Tomcat服务器上,每台做一个页面)  

[root@localhost ~]# mkdir -p /web/webapp1
[root@localhost ~]# 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("Welcom to test site,http://www.test1.com");%>
                    </body>
                    </html>

2.修改主配置文件

  [root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
                      <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">   //存在
                      <Context docBase="/web/webapp1" path="" reloadable="false" >   //写入
                       </Context>             //写入

3.Nginx配置实现负载均衡

实现准备yum源,需要下载依赖软件

3.1编译安装nginx

  [root@localhost ~]# yum -y install pcre-devel zlib-devel openssl-devel
  [root@localhost ~]# groupadd www
  [root@localhost ~]# useradd -g www  www -s /bin/false
  [root@localhost ~]# tar xvf nginx-1.6.0.tar.gz
  [root@localhost ~]# cd nginx-1.6.0
  [root@localhost ~]# ./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 && make && make install
  [root@localhost ~]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin

3.2修改nginx配置文件

  [root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
                      ·····
                      #gzip  on;
                      upstream tomcat_server {
                      server 192.168.1.100:8080 weight=1;
                      server 192.168.1.101:8080 weight=1;
                    }
                   server {
                   listen       80;
                   server_name  localhost;
                   #charset koi8-r;
                   #access_log  logs/host.access.log  main;
                   location / {
                   root   html;
                   index  index.html index.htm;
                   proxy_pass http://tomcat_server;
                  }

3.3启动nginx

[root@localhost ~]# nginx

4.测试

访问:http://nginx服务器IP不加端口,不停刷新image.png

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
3月前
|
JavaScript Java 应用服务中间件
centos部署vue项目(java,tomcat环境的搭建)
centos部署vue项目(java,tomcat环境的搭建)
51 0
|
1月前
|
移动开发 Java 应用服务中间件
tomcat第1章 tomcat介绍、安装、部署项目
tomcat第1章 tomcat介绍、安装、部署项目
|
15天前
|
XML Java 应用服务中间件
Tomcat_servlet部署、编译、配置、打包
Tomcat_servlet部署、编译、配置、打包
19 0
|
9天前
|
存储 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包名。
|
22天前
|
Java 应用服务中间件 Linux
在阿里云服务器上部署Tomcat详细图文详解
本文介绍了在阿里云服务器上安装和配置JDK和Tomcat的步骤。首先,需要注册阿里云账号并进行实名认证,然后购买并设置服务器。接着,通过File Zilla连接服务器,创建Java和Tomcat的安装目录,并将JDK和Tomcat的tar.gz文件上传到服务器,解压并重命名。之后,配置JDK的环境变量,将catalina.sh复制到/etc/init.d/目录下,并修改相关配置。最后,启动Tomcat并配置安全组规则,确保可以通过公网访问。
|
25天前
|
Web App开发 Java 应用服务中间件
【Java Web】在 IDEA 中部署 Tomcat
【Java Web】在 IDEA 中部署 Tomcat
|
25天前
|
Java 关系型数据库 应用服务中间件
Tomcat详解(五)——jforum论坛部署实战
Tomcat详解(五)——jforum论坛部署实战
17 2
|
27天前
|
Java 应用服务中间件 Linux
阿里云服务器部署多个tomcat
阿里云服务器部署多个tomcat
|
2月前
|
Java 应用服务中间件
解决tomcat启动报错:无法在web.xml或使用此应用程序部署的jar文件中解析绝对的url [http:java.sun.com/jsp/jstl/core]
解决tomcat启动报错:无法在web.xml或使用此应用程序部署的jar文件中解析绝对的url [http:java.sun.com/jsp/jstl/core]
243 1
|
4月前
|
安全 Java 应用服务中间件
本地部署Tomcat开源服务器并结合内网穿透远程访问
本地部署Tomcat开源服务器并结合内网穿透远程访问
44 0