tomcat

应用场景
Tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,应用在中小型系统和并发访问用户不是很多的场合,是开发和调试jsp页面的首选,Tomcat也可处理静态的HTML页面但是能力不及Apache或Nginx,所以Tomcat通常作为一个servlet和JSP容器,单独运行在后端。

安装前准备:

在安装Tomcat之前必须先安装JDK,JDK全称是 Java Development Kit,是SUN公司免费提供的java语言的软件开发工具包,其中包含Java虚拟机(JVM),编写好的java源程序经过编译可生产java字节码,只要安装了JDK,就可以利用JVM解释这些字节码文件,从而保证了Java的跨平台性。

在平台兼容性方面,JDK作为解释字节码文件并根据此调用操作系统的API实现对应功能的java虚拟机,与操作系统位数密切相关,因此存在不同类型的版本,Tomcat也具有上述特征,所以需要预先下载好JDK和Tomcat

JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html
tomcat下载地址:http://tomcat.apache.org

[root@tomcat1 ~]# ifconfig |sed -n 2p
inet addr:192.168.200.200 Bcast:192.168.200.255 Mask:255.255.255.0
[root@tomcat1 ~]# lsb_release -a
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description: CentOS release 6.5 (Final)
Release: 6.5
Codename: Final

[root@tomcat1 ~]# service iptables stop
[root@tomcat1 ~]# setenforce 0

安装JDK,配置JAVA环境

将jdk-7u65-linux-x64.tar.gz解压
[root@tomcat1 ~]# tar xf jdk-7u65-linux-x64.tar.gz

解压后会生成jdk1.7.0_65文件夹,将文件夹移动到/usr/local下并重命名为java
[root@tomcat1 ~]# mv jdk1.7.0_65/ /usr/local/java

在/etc/profile.d/ 下建立java.sh脚本
[root@tomcat1 ~]# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/java #设置java跟目录
export PATH=$PATH:$JAVA_HOME/bin #在PATH环境变量中添加java跟目录的bin子目录

将java.sh 脚本导入到环境变量,使其生效
[root@tomcat1 ~]# source /etc/profile.d/java.sh

运行 java -version 或者 javac -version 命令查看java版本
[root@tomcat1 ~]# java -version
java version "1.7.0_45"
OpenJDK Runtime Environment (rhel-2.4.3.3.el6-x86_64 u45-b15)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)
[root@tomcat1 ~]# javac -version
javac 1.7.0_45

 

安装配置Tomcat
解压apache-tomcat-7.0.54.tar.gz 包
[root@tomcat1 ~]# tar xf apache-tomcat-7.0.54.tar.gz

解压后生成apache-tomcat-7.0.54文件夹,将该文件夹移动到/usr/local下,并改名为tomcat7
[root@tomcat1 ~]# mv apache-tomcat-7.0.54 /usr/local/tomcat7

启动Tomcat
[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.

Tomcat 默认运行在8080端口

[root@tomcat1 ~]# netstat -anpt |grep :8080
tcp 0 0 :::8080 :::* LISTEN 3318/java


浏览器访问测试 http://192.168.200.200:8080


关闭Tomcat
[root@tomcat1 ~]# /usr/local/tomcat7/bin/shutdown.sh

 


Tomcat 配置相关说明

/usr/local/tomcat7 主目录
bin 存放windows或linux平台上启动或关闭的Tomcat的脚本文件
conf 存放Tomcat的各种全局配置文件,其中最主要的是server.xml和web.xml
lib 存放Tomcat运行需要的库文件(JARS)
logs 存放Tomcat执行时的LOG文件
webapps Tomcat的主要Web发布目录(包括应用程序事例)
work 存放jsp编译后产生的class文件


[root@tomcat1 ~]# ls /usr/local/tomcat7/conf/
catalina.policy 权限控制配置文件
catalina.properties Tomcat属性配置文件
context.xml 上下文配置文件
logging.properties 日志log相关配置文件
server.xml 主配置文件
tomcat-users.xml manager-gui管理用户配置文件(Tomcat安装后生成的管理界面,该文件可开启访问)
web.xml Tomcat的servlet,servlet-mapping,filter,MIME等相关配置

server.xml 主要配置文件,可修改启动端口,设置网站根目录,虚拟主机,开启https等功能。

server.xml的结构构成
<Server>
<Service>
<Connector />
<Engine>
<Host>
<Context> </Context>
</Host>
</Engine>
</Service>
</Server>

<!-- --> 内的内容是注视信息

 


Server
Server元素代表了整个Catalina的Servlet容器

Service
Service是这样一个集合;它由一个或多个Connector组成,以及一个Engine,负责处理所有Connector所获得的客户请求。

Connector
一个Connector在某个指定端口上侦听客户请求,并将获得的请求交给Engine来处理,从Engine处获得回应并返回客户。

TomcatEngine有两个典型的Connector,一个直接侦听来自browser的http请求,一个侦听来自其他webserver的请求
Coyote Http/1.1 Connector在端口8009处侦听来自其他wenserver(Apache)的servlet/jsp代理请求。

Engine
Engine下可以配置多个虚拟主机Virtual Host,每个虚拟主机都有一个域名
当Engine获得一个请求时,它把该请求匹配到某一个Host上,然后把该请求交给该Host来处理,
Engine有一个默认的虚拟主机,当请求无法匹配到任何一个Host上的时候,将交给该默认Host来处理

Host
代表一个Virtual Host,虚拟主机,每个虚拟主机和某个网络域名Domain Name相匹配
每个虚拟主机下都可以部署(deploy)一个或者多个Web app,每个web app 对应一个Context,有一个Context path。

当Host获得一个请求时,将把该请求匹配到某个Context上,然后把该请求交给该Context来处理,匹配的方法是最长匹配,所以一个path==“”的Context将成为该Host的默认Context匹配。

Context
一个Context对应一个 Web application,一个 Web application由一个或者多个Servlet组成。

 

建立java的web站点

首先在根目录下建立一个web目录,并在里面建立一个webapp1目录,用于存放网站文件

[root@tomcat1 ~]# mkdir -pv /web/webapp1
mkdir: 已创建目录 "/web"
mkdir: 已创建目录 "/web/webapp1"

在webapp1目录下建立一个index.jsp的测试页面
[root@tomcat1 ~]# vim /web/webapp1/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test page</title>
</head>
<body>
<% out.println("Welcome to test site,http://www.test1.com");%>
</body>
</html>

修改Tomcat的server.xml文件

定义一个虚拟主机,并将网站文件路径指向已经建立的/web/webapp1,在host段增加context段

[root@tomcat1 ~]# cp /usr/local/tomcat7/conf/server.xml{,.bak}
[root@tomcat1 ~]# vim /usr/local/tomcat7/conf/server.xml

124 <Host name="localhost" appBase="webapps"
125 unpackWARs="true" autoDeploy="true">
126 <Context docBase="/web/webapp1" path="" reloadable="flase" >
127 </Context>

docBase="/web/webapp1" web应用的文档基准目录
path="" 设置默认"类"
reloadable="flase" 设置监视"类"是否变化

关闭tomcat,在重新启动
[root@tomcat1 ~]# /usr/local/tomcat7/bin/shutdown.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

[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.

浏览器访问测试 http://192.168.200.200:8080

 


Nginx+Tomcat 负载均衡集群

一台Tomcat站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等问题,不能单独应用于生产环境下,所以需要一套可靠的解决方案来完善web站点架构

Nginx 是一款非常优秀的http服务器软件,他能够支持高达50000个并发连接数的响应,拥有强大的静态资源处理能力,运行稳定,并且内存,CPU等系统资源消耗非常低,目前很多大型网站都用Nginx服务器做后端网站程序的反向代理及负载均衡器,来提升整个站点的负载并发能力。

 

Nginx 服务器 Centos 6.5 x86_64 192.168.200.254 nginx
Tomcat服务器1 Centos 6.5 x86_64 192.168.200.200 jdk tomcat
Tomcat服务器2 Centos 6.5 x86_64 192.168.200.201 jdk tomcat

Tomcat 2 配置方法基本与Tomcat 1 相同
关闭防火墙,selinux
安装JDK,配置Java环境,版本与Tomcat 1 保持一致
安装Tomcat,版本与Tomcat 1 保持一致
建立一个web目录,并在里面建立一个webapp1目录,用于存放网站文件
在webapp1目录下建立一个index.jsp的测试页面
[root@tomcat2 ~]# vim /web/webapp1/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test2 page</title>
</head>
<body>
<% out.println("Welcome to test site,http://www.test2.com");%>
</body>
</html>

[root@tomcat2 ~]# /usr/local/tomcat7/bin/shutdown.sh
[root@tomcat2 ~]# /usr/local/tomcat7/bin/startup.sh

浏览器访问测试 http://192.168.200.201:8080

 

Nginx 服务器配置
[root@nginx ~]# service iptables stop
[root@nginx ~]# setenforce 0
[root@nginx ~]# mount /dev/cdrom /mnt/
[root@nginx ~]# cd /etc/yum.repos.d/
[root@nginx yum.repos.d]# mkdir bak
[root@nginx yum.repos.d]# mv *.repo bak
[root@nginx yum.repos.d]# vim yum.repo
[base]
name=Centos
baseurl=file:///mnt
gpgcheck=0


[root@nginx ~]# yum -y install pcre-devel zlib-devel openssl-devel lrzsz

[root@nginx ~]# groupadd www
[root@nginx ~]# useradd -g www www -s /sbin/nologin
[root@nginx ~]# tar xf nginx-1.6.2.tar.gz
[root@nginx ~]# cd nginx-1.6.2
[root@nginx nginx-1.6.2]# ./configure --prefix=/usr/local/nginx --user=www --group=www --with-file-aio --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module && make && make install


--prefix=/usr/local/nginx 指定安装目录
--user=www --group=www 指定运行的用户和组
--with-file-aio 启用文件修改支持
--with-http_stub_status_module 启用状态统计
--with-http_ssl_module 启用ssl模块
--with-http_flv_module 启用flv模块,提供寻求内存使用基于时间的偏移量文件
--with-http_gzip_static_module 启用gzip静态压缩

[root@nginx nginx-1.6.2]# make && make install

配置nginx.conf
[root@nginx nginx-1.6.2]# cp /usr/local/nginx/conf/nginx.conf{,.bak}
[root@nginx nginx-1.6.2]# vim /usr/local/nginx/conf/nginx.conf
----------------------------------------------------------------------------------
user www;
worker_processes 1;
error_log logs/error.log;
pid logs/nginx.pid;

events {
worker_connections 10240;
}

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;
keepalive_timeout 65;
upstream tomcat_server {
server 192.168.200.200:8080 weight=1;
server 192.168.200.201:8080 weight=1;
}

server {
listen 80;
server_name localhost;

location / {
root html;
index index.html index.htm;
proxy_pass http://tomcat_server;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
----------------------------------------------------------------------------------

[root@nginx nginx-1.6.2]# /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 nginx-1.6.2]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
[root@nginx nginx-1.6.2]# netstat -anpt |grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7184/nginx

[root@nginx nginx-1.6.2]# ps aux |grep nginx
root 7184 0.0 0.2 45000 1052 ? Ss 01:18 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
www 7185 0.0 1.1 49256 5452 ? S 01:18 0:00 nginx: worker process
root 7193 0.0 0.1 103256 848 pts/1 S+ 01:18 0:00 grep nginx


客户端测试:
打开浏览器访问: http://192.168.200.254
不断刷新可看到由于权重相同,页面会反复切换

 

 


原文:http://nginx.org/en/docs/http/load_balancing.html 本文依照自己的理解翻译

在多个应用程序间提供负载均衡是一种常用的提高资源利用率的技术,提高服务器的吞吐量,减少延迟,确保应用程序容错。Nginx可以做为一个高效的http负载均衡器来将负载分发到多个应用程序上以提高性能,它也是一种可靠地,可伸缩的web应用程序服务器。

nginx 负载均衡的类别

轮询 应用程序轮流来响应请求
最少连接 请求被分配到活动连接最少的服务器上
ip-hash 通过一个hash函数决定哪个服务器来响应用户的请求(依据客户端的请求ip)

下面是最简单的负载均衡的配置

http {
upstream server-pool {
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}

server {
listen 80;

location / {
proxy_pass http://server-pool;
}
}
}

上面这个配置中3个相同的应用程序的服务器srv1-srv3,默认的负载均衡方式是轮询,所用的请求通过反向代理给了server-pool组,nginx通过负载均衡来分发这些请求到三个服务

上。

在nginx中HTTP, HTTPS, FastCGI, uwsgi, SCGI, and memcached. 的负载均衡都是通过反向代理实现的。

要配置https的负载均衡只需要将http协议改https就可以了,其他配置不变。

要实现FastCGI, uwsgi, SCGI, or memcached的负载均衡可以分别使用 fastcgi_pass, uwsgi_pass, scgi_pass, and memcached_pass指令。

另一种负载均衡方式是least-connected,在“请求需要更长的时间来完成”的场景下采用least-connected方式可以更公平的将负载分配到多个机器上面。使用least-connected,nginx不会将请求分发到繁忙的机器上面,而且将新的请求分发的较清闲的机器上面。

可以在 upstream {}模块中配置least_conn;指令来激活least-connected负载模式。

upstream server-pool {
least_conn;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}

轮询和least-connected这两种负载均衡方式会将新的请求分发到不同的机器上,很难保证每个客户端会固定访问某一个服务器。

如果需要某个客户端只访问访问固定的一个服务器可以通过ip-hash负载均衡方式实现。

使用ip-hash时,客户端的ip作为一个散列的Key来决定服务器组中哪个服务器来响应请求,这种方式可以保证每个客户端每次访问的都是同一个服务器。

客户通过ip_hash指令来配置ip_hash负载均衡方式

upstream server-pool {
ip_hash;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}

权重的负载均衡方式,在轮询的基础上为每个服务器配置权重可以保证某个服务器尽可能处理多的请求

upstream server-pool {
server srv1.example.com weight=3;
server srv2.example.com;
server srv3.example.com;
}

上面的配置中,如果有5个请求,有3个会分配到serv1上,有1个会分配到srv2上,有一个会分配到srv3上。如果不指定weight,默认是平的的。

负载均衡包含服务器的健康检查,如果某个请求被分配到了一个服务器上,服务器无法响应,那么nginx会标记它失败了,在短时间内,nginx是不会将之后的请求分配给标记失败的服务器。max_fails指令可以设置最大失败次数,默认是1,需要先设置了fail_timeout才行。fail_timeout指定响应时间超过多少秒就将服务器标记为失败。服务器标记失败后,nginx会使用几个客户端请求优雅地探测服务器,如果探测成功,则服务器标记成功。

 


memcache session ID shared

[root@localhost ~]# tar xf libevent-2.0.15-stable.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/libevent-2.0.15-stable/
[root@localhost libevent-2.0.15-stable]# ./configure && make && make install

[root@localhost libevent-2.0.15-stable]# echo "/usr/local/lib" > /etc/ld.so.conf.d/libevent.conf
[root@localhost libevent-2.0.15-stable]# ldconfig
[root@localhost libevent-2.0.15-stable]# ldconfig -v |grep --color libevent
libevent_openssl-2.0.so.5 -> libevent_openssl.so
libevent_extra-2.0.so.5 -> libevent_extra.so
libevent_core-2.0.so.5 -> libevent_core.so
libevent-2.0.so.5 -> libevent.so
libevent_pthreads-2.0.so.5 -> libevent_pthreads.so
libevent-1.4.so.2 -> libevent-1.4.so.2.1.3
libevent_extra-1.4.so.2 -> libevent_extra-1.4.so.2.1.3
libevent_core-1.4.so.2 -> libevent_core-1.4.so.2.1.3


[root@localhost ~]# tar xf memcached-1.4.5.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/memcached-1.4.5/
[root@localhost memcached-1.4.5]# ./configure && make && make install
[root@localhost memcached-1.4.5]# /usr/local/bin/memcached -h

转载于:https://www.cnblogs.com/lihanbingboke/p/5534229.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值