部署Nginx+Tomcat及其负载均衡

如果哪儿有错,请留言帮我提出来,我也好修改,谢谢!!!

软件包在文章后面可以下载。JDK软件包太大,没法上传,要的给我留言留下邮箱地址就行,我发给你们!!!

转载本文章请留下原文地址,谢谢!!! 

 

实验环境:

操作系统:CentOS 6.5

Nginx服务器:192.168.1.210

Tomcat服务器1192.168.1.211

Tomcat服务器2192.168.1.212

主要软件:

jdk-7u65-linux-x64.gz

apache-tomcat-7.0.54.tar.gz

安装准备:

如果是在虚拟机里测试,那就必须关闭防火墙:

server iptables stop

 如果是在真实服务器上,那只需要在防火墙策略里添加允许端口即可:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 8080-j ACCEPT

 

一、Tomcat服务器1配置

1Tomcat服务器1192.168.1.211配置如下:

[root@test2 ~]# tar zxvf jdk-7u65-linux-x64.gz
[root@test2 ~]# mv jdk1.7.0_65/ /usr/local/java

 

2、设置环境变量:

[root@test2 ~]# vim /etc/profile.d/java.sh
#设置JAVA的根目录
export JAVA_HOME=/usr/local/java
#在PATH环境变量中添加java根目录下的bin/子目录

export PATH=$PATH:$JAVA_HOME/bin

3、把脚本导入到环境变量,使其生效

[root@test2 ~]# source /etc/profile.d/java.sh

4、查看安装版本是否一致 

[root@test2 ~]# java –versio 

5、安装配置Tomcat 

[root@test2 ~]#tar zxvf apache-tomcat-7.0.54.tar.gz
[root@test2 ~]# mv apache-tomcat-7.0.54 /usr/local/tomcat7

6、启动Tomcat

[root@test2 ~]# /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.

 7、关闭Tomcat

[root@test2 ~]# /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

8Tomcat默认运行的端口是8080,运行netstat命令来查看它的监听信息

[root@test2 ~]# netstat -anpt |grep 8080

 9、打开浏览器测试:http://192.168.1.211:8080/如果出现Apache tomcat/7.0.54就算成功了

 10Tomcat 主要目录说明:

[root@test2 ~]# cd /usr/local/tomcat7/
[root@test2 ~]#ls
--bin/ :存放windows或linux平台上启动和关闭tomcat的脚本文件
--conf/:存放tomcat服务器的各种全局配置文件,其中最重要的就是server.xml和web.xml
--lib/:存放tomcat运行需要的库文件
--logs/:存放tomcat执行时的log文件
--webapps/:tomcat的主要web发布目录
--work/:存放jsp编译后产生的class文件

11Tomcat主配置文件说明

Server.xmltomcat的主要配置文件,通过这个配置文件,可以修改tomcat的启动端口、网站目录、虚拟主机、开启https等重要功能。  

 
[root@test2 ~]# vim /usr/local/tomcat7/conf/server.xml

<?xml version='1.0' encoding='utf-8'?>
… …		//省略部分内容
<Server port="8005" shutdown="SHUTDOWN">
//Tomcat关闭端口,默认只对本机地址开放,可以在本机通过telnet 127.0.0.1 8005该端口,
//对tomcat进行关闭操作
… …		//省略部分内容

	<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
//Tomcat 启动的默认端口号8080,可以根据需要进行更改
…….    //省略部分内容
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
//Tomcat 启动AJP 1.3 连接器时默认的端口号,可以根据需要进行更改
……     //省略部分内容

//下面是为Tomcat定义虚拟主机时的配置及日志配置
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      </Host>
    </Engine>
  </Service>
</Server>

12、在跟目录下建立一个web目录,并在里面创建一个webapp1目录用于存放网站文件

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

13、在webapp1目录下创建一个index.jsp的测试页面

[root@test2 ~]# vim /web/webapp1/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="Utf-8"%>
<html>
<head>
<title>JSP test1 page</title>
</head>
<body>
<h1>
<% out.println ("welcom to test site,http://www.test1.com");%>
</h1>
</body>
</html>

14、修改Tomcatserver.xml文件

[root@test2 ~]# vim /usr/local/tomcat7/conf/server.xml
//找到以下内容,添加红色部分
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
            <Context docBase="/web/webapp1" path="" reloadable="false">
            </Context>
//docBase:web应用的文档基准目录
//reloadable:设置监视“类”是否变化
//path=””设置默认“类”

 15、关闭Tomcat再重新启动

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

 16、通过浏览器访问http://192.168.1.211:8080/出现welcom to test site,http://www.test1.com内容表示tomcat配置成功,并且能够运行jsp了。

二、Tomcat服务器2配置

1、  Tomcat2 配置方法跟Tomcat1是一样的

2、  创建/web/webapp1目录,修改Tomcat配置文件server.xml把网站文件目录更改到/web/webapp1/路径下

 

 
[root@test3 ~]# mkdir -pv /web/webapp1
mkdir: 已创建目录 "/web"
mkdir: 已创建目录 "/web/webapp1"
[root@test3 ~]# vim /usr/local/tomcat7/conf/server.xml
//一样找到以下内容,添加红色部分
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
            <Context docBase="/web/webapp1" path="" reloadable="false">
            </Context>

 

3、一样在tomcat2服务器里创建测试页面,修改下页面内容就行了

[root@test2 ~]# vim /web/webapp1/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="Utf-8"%>
<html>
<head>
<title>JSP test1 page</title>
</head>
<body>
<h1>
<% out.println ("welcom to test site,http://www.test2.com");%>
</h1>
</body>
</html>

4、重新启动Tomcat,用浏览器访问Tomcat2 server 测试http://192.168.1.212:8080

 

三、Nginx服务器配置

1、安装支持包

[root@test1 ~]# yum install pcre-devel zlib-devel openssl-devel

2、  这儿有两种方法安装Nginx

(1)       源码编译安装:

[root@test1 ~]# groupadd nginx
[root@test1 ~]# useradd -g nginx nginx -s /bin/false

 我这儿是已经把Nginx安装包下载好了,直接解压安装就行

[root@test1 ~]#tar zxvf nginx-1.6.0.tar.gz
[root@test1 ~]# cd nginx-1.6.0
[root@test1 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
编译参数解释如下:
//--user=  --group=				是指定用户和组的
//--with-file-aio					是启用文件修改支持的
//--with-http_stub_status_module 	是启用的状态
//--with-http_gzip_static_module		是启用gzip静态压缩
//--with-http_flv_module			是启用flv模块
//--with-http_ssl_module			是启用ssl模块

[root@test1 nginx-1.6.0]# make
[root@test1 nginx-1.6.0]# make install

 

(2)       直接yum安装nginx

 

[root@test1 ~]# cd /etc/yum.repos.d/
[root@test1 ~]#wget http://www.atomicorp.com/installers/atomic
[root@test1 ~]#sh ./atomic
[root@test1 ~]#yum check-update
[root@test1 ~]#yum install nginx
[root@test1 ~]#service nginx start
[root@test1 ~]#chkconfig nginx on

3、  修改Nginx配置文件

[root@test1 ~]# vim /usr/local/nginx/conf/nginx.conf
在http{ …..}中加入以下代码,这是设定负载均衡的服务器列表,weight里的参数值表示权值,权值越高,被分配到的概率就越大,在企业中,如某服务器性能比其他好,那就可以把他设置得最高。这儿为了测试效果,所以就把权值设置成一样了。
红色部分为新添加内容:
http {
    include       mime.types;
    default_type  application/octet-stream;
upstream tomcat_server {
        server 192.168.1.211:8080 weight=10;
        server 192.168.1.212:8080 weight=10;
        }
#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
#                  '"$http_user_agent" "$http_x_forwarded_for"';

然后在location /里添加内容:
location / {
   root   html;
   index  index.html index.htm;
   proxy_pass http://tomcat_server;   
}
修改的内容解释:
把Nginx默认的站点通过proxy_pass的方式来代理到设定好的tomcat_server负载均衡服务器组上。

4、 测试Nginx配置文件是否正确。提示以下信息为配置正确,如报错,根据报错提示修改。

[root@test1 ~]# /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

执行后无错误提示即正确

[root@test1 ~]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

 当然,这儿我们可以自己写一个脚本直接使用server来启动。

6、测试负载均衡

在浏览器中访问192.168.1.210,也就是访问Nginx服务器的IP,来回刷新,我们就可以看到显示的不同页面,也就是服务器Tomcat1和服务器Tomcat2的页面信息。这就是负载均衡群集

如果出现网页内容报错,最好的解决方案就是查看日志,根据日志文件提示去解决问题,这也是一个运维工程师必须习惯的一种解决方案

假如我这儿的Nginx服务器报错了,我就可以使用命令查看日志报错信息

[root@test1 ~]# tail -f /usr/local/nginx/logs/access.log

 如果出现问题,我们访问网站然后在日志里面就可以看到报错信息,这时候我们就可以根据报错去找到错误并修改

猜你喜欢

转载自kangh.iteye.com/blog/2307905