部署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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
负载均衡 物联网 测试技术
部署硬件负载均衡时,如何评估设备的处理能力?
部署硬件负载均衡时,如何评估设备的处理能力?
728 130
|
运维 负载均衡 监控
部署硬件负载均衡和软件负载均衡时,分别需要考虑哪些因素?
部署硬件负载均衡和软件负载均衡时,分别需要考虑哪些因素?
513 127
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
565 41
|
9月前
|
Java jenkins 应用服务中间件
结合Jenkins与Tomcat,实施Maven项目的自动构建和部署流程。
任何项目构建和部署的自动化流程,总离不开对各个环节精细把控与密切配合。涉及到源代码管理、构建工具、持续集成服务器以及最终的运行时环境的协调。通过上述简洁实用的步骤,可以实现Maven项目从源代码到运行状态的无缝过渡,进而提升软件开发的效率与质量。
465 0
|
12月前
|
开发框架 Java 关系型数据库
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
737 17
|
12月前
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
444 18
|
负载均衡 前端开发 应用服务中间件
Tomcat的负载均衡和动静分离(与nginx联动)
总的来说,负载均衡和动静分离是提高Web应用性能的两个重要手段。通过合理的配置和使用,我们可以让Web应用更好地服务于用户。
378 21
|
运维 负载均衡 算法
部署硬件负载均衡设备时要注意哪些问题?
部署硬件负载均衡设备时要注意哪些问题?
355 57
|
负载均衡 Java 应用服务中间件
Tomcat与Nginx的负载均衡与动静分离技巧
总的来说,Tomcat和Nginx各有各的优点,在负载均衡和动静分离这两方面它们都有很好的应用。灵活使用这两个工具能够让Web应用具有更好的扩展性和用户体验。
369 14
|
开发框架 关系型数据库 Java
Linux操作系统中JDK、Tomcat、MySQL的完整安装流程以及J2EE后端接口的部署
然后Tomcat会自动将其解压成一个名为ROOT的文件夹。重启Tomcat,让新“植物”适应新环境。访问http://localhost:8080/yourproject看到你的项目页面,说明“植物”种植成功。
330 10

相关实验场景

更多