部署Tomcat 及 nginx+tomcat负载均衡
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了部署Tomcat 及 nginx+tomcat负载均衡相关的知识,希望对你有一定的参考价值。
案例:部署Tomcat
案例前置知识点
1)、Tomcat简介:开源项目,属于Apache软件基金会,是处理Java代码的免费产品。
2)、应用场景:Tomcat一款免费的开放源代码的web应用服务器,属于轻量级应用服务器,在中小型
系统和并发量不高的场合下普遍舒勇,是开发和调试JSP程序的首选。Tomcat和nginx、Apache一
样都是处理静态页面的,但是其性能远不如nginx、Apache,所以常常被放到后端被调用使用。
案例环境
————————————————————————————————————————
| 主机| 操作系统 | IP地址 | 主要软件 |
————————————————————————————————————————
| Tomcat服务器 | centos7.4x86_64 | 192.168.10.40 | apache-tomcat-8.5.16.tar.gz |
案例实施
1、实施准备
修改主机名
[[email protected] ~]# vi /etc/hostname
tomcat
:wq
[[email protected] ~]# reboot
关闭防火墙
[[email protected] ~]# systemctl stop firewalld
在安装Tomcat之前必须先安装JDK。JDK是Java语言的软件开发工具包,其中包含Java虚拟机(JVM)
,编写好的Java源码程序经过编译可形成Java字节码,只要安装了JDK,就可利用JVM解析这些字节
码文件从而保证Java的跨平台性。
查看JDK是否安装-我这里已经安装了,如果没有安装可以自行下载安装
[[email protected] ~]# java -version
openjdk version "1.8.0131"
OpenJDK Runtime Environment (build 1.8.0131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
安装Tomcat
1、解压源码包
[[email protected] ~]# tar zxvf apache-tomcat-8.5.16.tar.gz
2、将解压出来的文件夹移动到/usr/local/路径下,并改名为:tomcat8
[[email protected] ~]# mv apache-tomcat-8.5.16/ /usr/local/tomcat8
3、启动和关闭tomcat
[[email protected] ~]# /usr/local/tomcat8/bin/startup.sh ##启动(如想关闭tomcat则使用“shutdown.sh”)
Using CATALINABASE: /usr/local/tomcat8
Using CATALINAHOME: /usr/local/tomcat8
Using CATALINATMPDIR: /usr/local/tomcat8/temp
Using JREHOME: /usr
Using CLASSPATH: /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
Tomcat started.
tomcat默认运行在8080端口上,使用netstatus命令查看8080端口监听状态
[[email protected] ~]# netstat -anpt | grep 8080
cp6 0 0 :::8080 ::: LISTEN 1501/java
4、打开浏览器访问测试:http://192168.10.40:8080成功打开页面表示已经启动成功
Tomcat配置相关说明
Tomcat主目录为/usr/local/tomcat8/
1、主要目录说明
[[email protected] ~]# ls -l /usr/local/tomcat8/
总用量 92
drwxr-x--- 2 root root 4096 10月 4 22:04 bin
drwx------ 3 root root 254 10月 4 22:07 conf
drwxr-x--- 2 root root 4096 10月 4 22:04 lib
drwxr-x--- 2 root root 197 10月 4 22:07 logs
drwxr-x--- 2 root root 30 10月 4 22:04 temp
drwxr-x--- 7 root root 81 6月 22 2017 webapps
drwxr-x--- 3 root root 22 10月 4 22:07 work
|---bin/:存放Windows或Linux平台上启动和关闭tomcat的脚本文件
|---conf/:存放tomcat服务器的各种全局配置文件,其中做重要的是server.xml和web.xml.web
|---lib/:存放tomcat运行需要的库文件(JARS)
|---logs:存放tomcat执行时的LOG文件
|---webapps:tomcat的主要web发布目录(包括应用程序示例)
|---work:存放JSP编译后产生的class文件
2、配置文件说明
[[email protected] ~]# ls -l /usr/local/tomcat8/conf/
总用量 224
drwxr-x--- 3 root root 23 10月 4 22:07 Catalina
-rw------- 1 root root 13816 6月 22 2017 catalina.policy ##权限控制配置文件
-rw------- 1 root root 7376 6月 22 2017 catalina.properties ##tomcat属性配置文件
-rw------- 1 root root 1338 6月 22 2017 context.xml ##上下文配置文件
-rw------- 1 root root 1149 6月 22 2017 jaspic-providers.xml
-rw------- 1 root root 2358 6月 22 2017 jaspic-providers.xsd
-rw------- 1 root root 3622 6月 22 2017 logging.properties ##日志log相关配置文件
-rw------- 1 root root 7511 6月 22 2017 server.xml ##主配置文件
-rw------- 1 root root 2164 6月 22 2017 tomcat-users.xml ##管理用户配置文件(tomcat安装后提供一个manager-gui的管理界面)
-rw------- 1 root root 2633 6月 22 2017 tomcat-users.xsd
-rw------- 1 root root 168251 6月 22 2017 web.xml ##Tomcat的servlet、servlet-mapping、filter、MIME等相关配置。
Tomcat主配置文件说明
sever.xml为Tomcat的主要配置文件,通过配置该文件,可以修改Tomcat的启动端口、网站目录、
虚拟主机、开启https 等重要功能。
整个sever.xml 由以下结构构成: <Server>、<Sevice>、<Connector/> <Engine>、<Hos>、<Context>、
</Context>、</Host>、</Engine>、</Service>和</Server>.
以下是默认安装后sever.xml 文件的部分内容,其中<!-- -->内的内容是注释信息,黑色斜体部分
是我们需要注意和需要经常更改的部分。
见书中--93P
tomcat server组成部分说明
1)、server
server元素代表了整个Catalina的servlet容器
2)、Service
service是这样一个集合,它由一个或者多个Connector以及一个Ergine(负责处理所有Connector所获
得的客户请求)组成。
3)、Connector
一个Connector在某个指定端口上侦听客户请求,并将获得的请求交给Engine来处理,从Ergine处获得
回应并返回客户。
4)、Engine
Engine下可以配置多个虚拟主机Virtual Host.每个虚拟主机都有一个域名.
Engine获得一个请求时,它把该请求匹配到某个Host上,然后把该请求交给该Host来处理.Engine有一
个默认虚拟主机,当请求无法匹配到任何一个Host上的时候,将交给该默认Host来处理。
5)、Host
Host代表一个Vintual Host。即虚拟主机,每个虚拟主机和某个网络域名Domain Name相匹配。
每个虚拟主机下都可以部署(deploy)一个或者多个Web App,每个Web App对应于一个Context.有一个
Context path。
6)、Context
一个Context对应于一个Web Apiaian一个Web Application由一个或者多个servlet组成
建立Java的web站点
1)、在根目录下建立一个web目录,并在里面创建一个webapp1目录,用于存放网页文件
[[email protected] ~]# mkdir -p /web/webapp1
2)、在webapp1目录下创建一个index.jsp的测试页面
[[email protected] ~]# vim /web/webapp1/index.jsp
[[email protected] ~]# more /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>
3)、修改tomcat的server.xml文件
定义一个虚拟主机,并将网站文件路径只想已经建立/web/webapp1,在host字段添加contest段。
[[email protected] ~]# vi /usr/local/tomcat8/conf/server.xml ##大约在148行左右
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context docBase="/web/webapp1" path="" reloadable="false" >
</Context>
##docBase="web/webapp1" ##web网页文档的基准目录
##path="" ##设置默认"类"
##reloadable="false" ##设置监视"类"是否有变化
4)、重新启动tomcat
[[email protected] ~]# /usr/local/tomcat8/bin/shutdown.sh
[[email protected] ~]# /usr/local/tomcat8/bin/startup.sh
5)、通过浏览器访问http://192.168.10.40:8080出现以下内容,则表示tomcat已经配置成功,
并且已经能够运行JSP 了
Welcom to test site,http://www.Test1.com
案例:Nginx+Tomcat负载均衡群集
案例概述
通常情况下一台tomcat站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等问题。
不能单独应用于生产环境下,所以我们需要一台更可靠的解决方案来完善web站点架构
nginx是一款非常优秀的http服务器软件,它能支持高达50000个并发连接的相应,拥有强大的
静态资源处理能力,运行稳定,并且内存,CPU等资源消耗非常低,目前很多大型网站都应用nginx
服务器作为后端网站程序的反向代理及负载均衡器,来提高整个站点的负载并发处理能力。
案例环境
----------------------------------------------------------------------------------------------------------
| 主机 | 操作系统 | IP地址 | 主要软件 |
-----------------------------------------------------------------------------------------------------------
|前端Nginx服务器 | centos7.4x86_64 | 192.168.10.20 | nginx-1.12.0.tar.gz |
-----------------------------------------------------------------------------------------------------------
|后端Tomcat服务器1| centos7.4x86_64 | 192.168.10.40 | apache-tomcat-8.5.16.tar.gz |
-----------------------------------------------------------------------------------------------------------
|后端Tomcat服务器2| centos7.4x86_64 | 192.168.10.50 | apache-tomcat-8.5.16.tar.gz |
-----------------------------------------------------------------------------------------------------------
案例实施
1、Tomcat2 server配置
Tomcat2 server配置方法基本相同于Tomcat1,
1)关闭防火墙
2)确认是否安装JDK,Java版本与tomcat1 server保持一致
3)安装配置tomcat,版本与Tomcat1 server保持一致
4)创建/web/webapp1目录,修改tomcat配置文件server.xml,将网站文件目录更改到
/web/webapp1/路径下。
5)在/web/webapp1/路径下建立index.jsp,为了区别将测试也变index.jsp的内容稍加修改
[[email protected] ~]# vim /web/webapp1/index.jsp
[[email protected] ~]# more /web/webapp1/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test2 page </title>
</head>
<body>
<%out.println("Welcom to test site,http://www.Test2.com");%>
</body>
</html>
6)启动tomcat,浏览器访问Tomcat2 server,测试http://192.168.10.50:8080
2、nginx服务器配置
在nginx服务器192.168.10.20上安装nginx,反向代理两个tomcat站点,并实现负载均衡
1)关闭防火墙
2)安装相应的软件包
[[email protected] ~]# yum install -y pcre-devel zlib-devel openssl-devel
3)解压并安装nginx
[[email protected] ~]# groupadd www
[[email protected] ~]# useradd -g www www -s /bin/false
[[email protected] ~]# tar zxvf nginx-1.12.0.tar.gz
[[email protected] ~]# cd nginx-1.12.0/
[[email protected] nginx-1.12.0]# ./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
--prefix=/usr/local/nginx ##指定安装路径
--user=www --group=www ##指定运行的用户和组
--with-file-aio ##启用文件修改支持
--with-http_stub_status_module ##启用状态统计
--with-http_gzip_static_module ##启用gzip静态压缩
--with-http_flv_module ##启用flv模块,提供寻求内存使用基于时间的偏移量文件
--with-http_ssl_module ##启用ssl模块
[[email protected] nginx-1.12.0]# make && make install
3)配置nginx.conf
[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf
1、在http{....}中加入以下代码,设定负载均衡的服务器列表,weight参数表示权重,
权重越高被分配的概率就越大,为了使测试效果比较明显,这里吧权重设置为一样
大概在33行下面加上就可以
34 upstream tomcat_server {
35 server 192.168.10.40:8080 weight=1;
36 server 192.168.10.50:8080 weight=1;
37 }
2、在http{....}-server{....}-location / {....}中加入一行"proxy_pass http://tomcat_server;"
大概在47行下面
47 location / {
48 root html;
49 index index.html index.htm;
50 proxy_pass http://tomcat_server;
51 }
4)测试nginx配置文件是否正确
[[email protected] ~]# /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
5)启动nginx服务
[[email protected] ~]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
6)查看nginx服务进程
[[email protected] nginx-1.12.0]# ps aux | grep nginx
root 6511 0.0 0.1 45896 1128 ? Ss 02:15 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
www 6512 0.0 0.1 48420 1984 ? S 02:15 0:00 nginx: worker process
root 6522 0.0 0.0 112676 984 pts/0 R+ 02:16 0:00 grep --color=auto nginx
7)查看端口号及PID进程号
[[email protected] nginx-1.12.0]# netstat -anpt | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 6511/nginx: master
3、测试负载均衡效果
1)打开浏览器访问:http://192.168.10.20
2)不断刷新页面,查看页面变化,页面内容交替显示,则说明负载均衡集群搭建成功。
以上是关于部署Tomcat 及 nginx+tomcat负载均衡的主要内容,如果未能解决你的问题,请参考以下文章
Tomcat学习总结——Tomcat+Nginx集群解决均衡负载及生产环境热部署