部署Tomcat负载均衡

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 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

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
2月前
|
弹性计算 监控 负载均衡
|
2月前
|
负载均衡 网络协议 网络安全
SLB-Backend多实例部署配置健康检查
【10月更文挑战第22天】
78 3
|
2月前
|
运维 负载均衡 算法
|
23天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
111 26
|
2月前
|
弹性计算 监控 负载均衡
slb部署使用路径规则进行更细粒度控制
slb部署使用路径规则进行更细粒度控制
26 7
|
2月前
|
域名解析 监控 负载均衡
slb部署虚拟主机(Virtual Hosts)
slb部署虚拟主机(Virtual Hosts)
31 5
|
2月前
|
负载均衡 网络协议 安全
slb多站点或多域名部署
slb多站点或多域名部署
38 4
|
2月前
|
存储 缓存 监控
SLB-Backend跨区域/跨数据中心部署
【10月更文挑战第21天】
42 9
|
2月前
|
弹性计算 缓存 监控
SLB-Backend多实例部署
【10月更文挑战第21天】
45 5
|
3月前
|
Java 应用服务中间件 Linux
tomcat学习二:tomcat部署多个项目:不修改端口和修改端口 两种方式详解
这篇文章详细介绍了在Tomcat服务器上部署多个项目的方法,包括不修改端口和修改端口两种方式。
182 0