群集06-Nginx+Tomcat负载均衡群集
一、Tomcat介绍
Tomcat是一个免费的开源Web应用服务器,属于轻量级应用服务器软件,是Apache软件基金会的一项核心项目。
在中小型系统和并发访问用户不是很多的场合下,被普遍使用,是开发和调试JSP程序的首选。Tomcat处理静态HTML的能力不Apache或Nginx,通常作为一个Servlet和JSP容器单独运行在后端。
二、Tomcat配置文件说明
1、tomcat的各目录说明
tomcat主目录为/usr/local/tomcat7
bin/ 存放Windows或Linux平台上启动和关闭tomcat的脚本文件
conf/ tomcat服务器的各种全局配置文件,其中最重要的是server.cml和web.xml
lib/ 存放tomcat运行所需的库文件
logs/ 存放tomcat执行时的log文件
webapps/ tomcat的主要web发布目录
work/ 存放jsp编译后生成的class文件
2、tomcat的各配置文件说明
catalina.policy 权限控制配置文件
catalina.properties Tomcat的属性配置文件
context.xml 上下文配置文件
logging.properties 日志log相关配置文件
server.xml 主配置文件
Tomcat-users.xml manager-gui管理用户配置文件
web.xml tomcat的servlet、servlet-mapping、filter、MIME等相关配置
3、Tomcat主配置文件解读
server.xml为Tomcat的主配置文件,可配置Tomcat的启动端口、网站目录、虚拟主机、开启https等重要功能。
server:元素代表了整个servlet容器
service:由一个或多个Connector、一个Engine组成,负责处理Connector获得的客户请求
Connector:一个Connector在某个指定端口上帧听客户请求,并将获得的请求交给Engine来处理,从Engine处获得回应并返回客户
Engine:可以配置多个虚拟主机Virtual Host,每个虚拟主机都有一个域名
Context:一个Context对应一个Web Application
三、部署Nginx+Tomcat负载均衡群集
实验环境:
Nginx负载均衡:192.168.1.51/24 nginx
Tomcat1:192.168.1.52/24 apache-tomcat jdk
Tomcat2:192.168.1.53/24 apache-tomcat jdk
配置第一台Tomcat
1、关闭iptables防火墙、selinux机制,略
2、安装JDK,配置Java环境
[root@tomcat1 ~]# tar xf jdk-7u65-linux-x64.gz
[root@tomcat1 ~]# mv jdk1.7.0_65/ /usr/local/java
[root@tomcat1 ~]# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/java //设置Java根目录
export PATH=$PATH:$JAVA_HOME/bin //在PATH环境变量中添加JAVA根目录下的子目录
[root@tomcat1 ~]# source /etc/profile.d/java.sh
[root@tomcat1 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/java/bin
[root@tomcat1 ~]# java -version
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)
3、安装配置Tomcat
[root@tomcat1 ~]# tar xf apache-tomcat-7.0.54.tar.gz
[root@tomcat1 ~]# mv apache-tomcat-7.0.54 /usr/local/tomcat7
[root@tomcat1 ~]# /usr/local/tomcat7/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat7
Using CATALINA_HOME: /usr/local/tomcat7
Using CATALINA_TMPDIR: /usr/local/tomcat7/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat7/bin/bootstrap.jar:/usr/local/tomcat7/bin/tomcat-juli.jar
Tomcat started.
[root@tomcat1 ~]# netstat -anpt |grep 8080
tcp 0 0 :::8080 :::* LISTEN 1134/java
如果关闭tomcat的话,可以执行下面命令:
[root@tomcat1 ~]# /usr/local/tomcat7/bin/shutdown.sh
4、建立Java的Web站点
[root@tomcat1 ~]# mkdir -p /web/webapp1
[root@tomcat1 ~]# vim /web/webapp1/index.jsp
out.println("Welcome to test1 site,http://www.test1.com");%>
修改tomcat的server.xml文件,定义一个虚拟主机
[root@tomcat1 ~]# cd /usr/local/tomcat7/conf/
[root@tomcat1 conf]# cp -p server.xml server.xml.origin
[root@tomcat1 conf]# vim server.xml
124 appBase="webapps"
125 unpackWARs="true" autoDeploy="true">
126
127
docBase:web应用的文档基准目录
reloadable:设置监视类是否变化
[root@tomcat1 ~]# /usr/local/tomcat7/bin/shutdown.sh
[root@tomcat1 ~]# /usr/local/tomcat7/bin/startup.sh
测试:
5、Tomcat2配置与Tomcat1相同,测试页中的内容的1都改为2
[root@tomcat2 ~]# mkdir -p /web/webapp2
[root@tomcat2 ~]# vim /web/webapp2/index.jsp
out.println("Welcome to test2 site,http://www.test2.com");%>
server.xml配置文件内容:
124 appBase="webapps"
125 unpackWARs="true" autoDeploy="true">
126
127
[root@tomcat2 ~]# /usr/local/tomcat7/bin/shutdown.sh
[root@tomcat2 ~]# /usr/local/tomcat7/bin/startup.sh
测试:
6、Nginx负载均衡
(1)关闭iptables防火墙,selinux机制,略
(2)编译安装nginx
[root@nginx ~]# yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
[root@nginx ~]# tar xf nginx-1.6.0.tar.gz -C /usr/src/
[root@nginx ~]# useradd -M -s /sbin/nologin nginx
[root@nginx ~]# cd /usr/src/nginx-1.6.0/
[root@nginx nginx-1.6.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_ssl_module && make && make install
(3)修改配置文件nginx.conf
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
user nginx nginx;
worker_processes 2;
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid logs/nginx.pid;
events {
use epoll;
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream tomcat_server {
server 192.168.1.52:8080 weight=1;
server 192.168.1.53:8080 weight=1;
}
server {
listen 80;
server_name localhost;
charset utf-8;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://tomcat_server; //与前面设置upstream的名字相同
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
[root@nginx ~]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@nginx ~]# /usr/local/nginx/sbin/nginx
[root@nginx ~]# netstat -anpt |grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4461/nginx
测试:
课外补充:server.xml 主配置文件详解
server.xml是Tomcat的主配置文件,主要完成如下两个目标:
提供Tomcat组件的初始配置;
说明Tomcat的结构,含义,使得Tomcat通过实例化组件完成起动及构建自身。
观察server.xml,可以发现其中有如下的一些元素。
(1)Server元素:
Server元素是server.xml文件的最高级别的元素, Server元素描述一个Tomcat服务器,一般来说用户不用关心这个元素。一个Server元素一般会包括Logger和ContextManager两个元素
Logger:Logger元素定义了一个日志对象,一个日志对象包含有如下属性:
1) name:表示这个日志对象的名称。
2) path:表示这个日志对象包含的日志内容要输出到哪一个日志文件。
3) verbosityLevel:表示这个日志文件记录的日志的级别。
一般来说,Logger对象是对Java Servlet、JSP和Tomcat运行期事件的记录
ContextManager:ContextManager定义了一组ContextInterceptors(ContextManager的事件监听器) , RequestInterceptors(的事件监听器)、Contexts(Web应用程序的上下文目录)和它们的Connectors(连接器)的结构和配置。ContextManager包含如下一些属性:
1) debug:记录日志记录调试信息的等级。
2) home:webapps /、conf /、logs /和所有Context的根目录信息。这个属性的作用是从一个不同于TOMCAT _ HOME的目录启动Tomcat。
3) workDir:Tomcat工作目录。
ContextInterceptor 和RequestInterceptors两者都是监听ContextManager的特定事件的拦截器。ContextInterceptor监听Tomcat的启动和结束事件信息。而RequestInterceptors监听用户对服务器发出的请求信息。一般用户无需关心这些拦截器,对于开发人员需要了解这就是全局性的操作得以实现的方法
(2)Connector元素:
Connector(连接器)元素描述了一个到用户的连接,不管是直接由Tomcat到用户的浏览器还是通过一个Web服务器。Tomcat的工作进程和由不同的用户建立的连接传来的读/写信息和请求/答复信息都是由连接器对象管理的。对连接器对象的配置中应当包含管理类、TCP/IP端口等内容。
(3)Context元素:
每一个Context都描述了一个Tomcat的Web应用程序的目录。这个对象包含以下属性:
1)docBase。这是Context的目录。可以是绝对目录也可以是基于ContextManage的根目录的相对目录。
2)path。这是Context在Web服务时的虚拟目录位置和目录名。
3)debug。日志记录的调试信息记录等级。
4)reloadable。这是为了方便Servlet的开发人员而设置的,当这个属性开关打开的时候,Tomcat将检查Servlet是否被更新而决定是否自动重新载入它
本文来源:http://www.benet.wang/%E6%9C%8D%E5%8A%A1%E6%90%AD%E5%BB%BA/121.html