一、理论部分
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
搭建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负载均衡内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论