部署Tomcat负载均衡「建议收藏」

部署Tomcat负载均衡「建议收藏」一、理论部分Tomcat介绍Tomcat是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现,Tomcat5支持最新的Servlet2.4和JSP2.0规范…

大家好,又见面了,我是你们的朋友全栈君。

重新对tomcat进行了梳理,并发布了新的文章,文章链接:https://blog.csdn.net/weixin_44953658/article/details/105896186

一、理论部分

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文件;

二、部署过程

环境准备

            操作系统              IP地址               部署服务
centos7.6 192.168.81.210 Tomcat
centos7.6 192.168.81.220 Tomcat
centos7.6 192.168.81.230 NGINX

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

部署Tomcat负载均衡「建议收藏」

搭建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不加端口,不停刷新

部署Tomcat负载均衡「建议收藏」

部署Tomcat负载均衡「建议收藏」

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144601.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • UAT环境[通俗易懂]

    UAT环境[通俗易懂]公司上班,会给你数据库账号,SVN等一系列配置。在企业级软件的测试过程中,经常会划分为三个阶段——单元测试,SIT和UAT,如果开发人员足够,通常还会在SIT之前引入代码审查机制(CodeReview)来保证软件符合客户需求且流程正确。下面简单介绍一下SIT和UAT的基本情况。SIT(SystemIntegrationTesting)系统集成测试,也叫做集成测试,是软件测试的一个术语,…

    2022年9月30日
  • android开发笔记之 Android代码混淆打包

    android开发笔记之 Android代码混淆打包大家应该都听过代码混淆吧,如果大家有去反编译过别人的APK的话,应该会看到好多包名和类名是a,b.c….之类的的吧,这里就提到了一个概念:混淆。那就让我们了解下这个东西吧作用:为了防止自己的劳动成果被别人窃取,混淆代码能有效防止被反编译缺省情况下,proguard会混淆所有代码,但是下面几种情况是不能改变java元素的名称,否则就会这样就会导致程序出错。一,我们用到反射的地方。

    2022年5月30日
  • 国内一些服务器网站不用备案教程[通俗易懂]

    关于免备案这个问题,我首先说明一下,我不是在提倡大家域名不要备案,这只是一项技术并不是用来给大家滥用的,希望大家能够明白!众所周知,要想使用国内服务器或者主机是是必须要通过工信局的ICP备案的,但是也有的伙伴怕麻烦或者通过不了,这里我教下大家这个使用CDN做到免备案,其实要做到绕过国内服务器域名备案的方法目前小编知道的有两种,一种是利用反向代理、一种就是利用CDN,当然了,你有更多方法愿意分享出来的,可以在评论下方提出。今天,我们就着重讲利用CDN绕备案吧首先,我们要准备好工具,网站、服务器

    2022年4月8日
  • Auto Layout 使用心得(六)—— 制造炫酷的下拉刷新动画

    Auto Layout 使用心得(六)—— 制造炫酷的下拉刷新动画

    2021年9月6日
  • SVN 配置ip访问[通俗易懂]

    SVN 配置ip访问[通俗易懂]之前为了对visualsvnserver服务器进行IP访问控制配置,参考了http://blog.sina.com.cn/s/blog_6dc4dbed0100zass.html介绍的办法解决了这个问题最近svnserver准备升级到V3.7.1版本,发现之前的办法不好使了,启动就直接报错:invalidcommand’Order’,度娘了一把,原来是Apache版本变化导致的.最新…

    2022年9月13日
  • 什么是覆盖索引_数据库为什么一定要覆盖索引

    什么是覆盖索引_数据库为什么一定要覆盖索引在了解覆盖索引之前我们先大概了解一下什么是聚集索引(主键索引)和辅助索引(二级索引)聚集索引(主键索引):聚集索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的即为整张表的记录数据。聚集索引的叶子节点称为数据页,聚集索引的这个特性决定了索引组织表中的数据也是索引的一部分。辅助索引(二级索引):非主键索引,叶子节点=键值+书签。Innodb存储引擎的书签就是相应行数据的主键索引值。…

    2022年8月30日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号