实战Nginx+Tomcat负载均衡集群

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实战Nginx+Tomcat负载均衡集群相关的知识,希望对你有一定的参考价值。

实验环境:RHEL6.5  server1.example.com 172.25.254.1     

                                     server2.example.com 172.25.254.2     

实验内容:

1.tomcat基本配置

    1.1安装tomcat

    1.2配置环境变量并启动tomcat

    1.3设置开机启动

2.配置测试网页

       (1)自己写的JSP测试页进行测试

(2) 网络中的测试页

3.编辑nginx的配置文件

4.测试访问 172.25.254.1/test.jsp

5.tomcat 集群

    5.1Server2端配置:

    5.2 rr论寻

    5.3 ip_hash绑定

安装包:apache-tomcat-7.0.37.tar.gz

前提:已经配置好Nginx与JDK环境



1.tomcat基本配置

    1.1安装tomcat

[[email protected] mnt]# cd /opt/lnmp/

[[email protected] lnmp]# ls

apache-tomcat-7.0.37.tar.gz  java

[[email protected] lnmp]# tar zxf apache-tomcat-7.0.37.tar.gz 

[[email protected] lnmp]# ln -s apache-tomcat-7.0.37  tomcat   ##链接改名

    1.2配置环境变量并启动tomcat

[[email protected] lnmp]# vim /etc/profile

[[email protected] lnmp]# source /etc/profile

[[email protected] lnmp]# startup.sh       ##启动tomcat,tomcat的端口号是8080

Using CATALINA_BASE:   /opt/lnmp/tomcat

Using CATALINA_HOME:   /opt/lnmp/tomcat

Using CATALINA_TMPDIR: /opt/lnmp/tomcat/temp

Using JRE_HOME:        /opt/lnmp/java/

Using CLASSPATH:       /opt/lnmp/tomcat/bin/bootstrap.jar:/opt/lnmp/tomcat/bin/tomcat-juli.jar

[[email protected] bin]# netstat -antple|grep 8080

tcp        0      0 :::8080                     :::*                        LISTEN      0          21195      2913/java  

    1.3设置开机启动

[[email protected] lnmp]# cd tomcat/bin/      ###bin下的部分sh文件是tomcat的功能启动脚本文件

[[email protected] bin]# vim /etc/rc.local      ##因为nginx和tomcat等没有开机启动脚本,/etc/rc.local是开机读取的文件,

source /etc/profile   ##该文件读取的是环境变量中的绝对路径

/opt/lnmp/nginx/sbin/nginx

/opt/lnmp/tomcat/bin/startup.sh


技术分享



    2.配置测试网页

       (1)自己写的JSP测试页进行测试  

           vim /opt/lnmp/tomcat/webapps/ROOT/steven.jsp

             SERVER-willis - Time is:<%=new java.util.Date()%>

    刷新可看到实时时间


技术分享


技术分享


(2) 网络中的测试页

vim /opt/lnmp/tomcat/webapps/ROOT/test.jsp 

<%@ page contentType="text/html; charset=GBK" %>

<%@ page import="java.util.*" %>

<html><head><title>Cluster App Test</title></head>

<body>

Server Info:

<%

out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>

<%

out.println("<br> ID " + session.getId()+"<br>");

String dataName = request.getParameter("dataName");

if (dataName != null && dataName.length() > 0) {

String dataValue = request.getParameter("dataValue");

session.setAttribute(dataName, dataValue);

}

out.print("<b>Session list</b>");

Enumeration e = session.getAttributeNames();

while (e.hasMoreElements()) {

String name = (String)e.nextElement();

String value = session.getAttribute(name).toString();

out.println( name + " = " + value+"<br>");

System.out.println( name + " = " + value);

}

%>

<form action="test.jsp" method="POST">

name:<input type=text size=20 name="dataName">

<br>

key:<input type=text size=20 name="dataValue">

<br>

<input type=submit>

</form>

</body>

</html>


技术分享



    3.编辑nginx的配置文件

[[email protected] nginx]# pwd

/opt/lnmp/nginx

[[email protected] nginx]# vim conf/nginx.conf

          location / {

                     root   html;

                     index index.jsp index.php index.html index.htm;

                  }

         location ~  \.jsp$  {

                proxy_pass http://localhost:8080;      

                 }

[[email protected] lnmp]# nginx -t

nginx: the configuration file /opt/lnmp/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /opt/lnmp/nginx/conf/nginx.conf test is successful

[[email protected] lnmp]# nginx -s reload


    4.测试访问 172.25.254.1/test.jsp


技术分享



5.tomcat 集群

再启动一个虚拟机server2  IP为172.25.254.2

    5.1Server2端配置:

把server1端配置好的java-jdk,nginx和tomcat复制到启动的server2中

[[email protected] ~]# mkdir /opt/lnmp

[[email protected] ~]# 

[[email protected] ~]# cd /opt/lnmp

[[email protected] lnmp]# scp -r 172.25.254.1:/opt/lnmp/* .

[[email protected] lnmp]# scp -r 172.25.254.1:/etc/profile /etc/

[[email protected] lnmp]# source /etc/profile       

[[email protected] lnmp]# startup.sh 


测试server2的tomcat

技术分享



    5.2 rr论寻

[[email protected] lnmp]# vim /opt/lnmp/nginx/conf/nginx.conf

 18 http {

 19     include       mime.types;

 20     default_type  application/octet-stream;

 21         upstream tomcat{

 22                 server 172.25.6.10:8080;

 23                 server 172.25.6.20:8080;

 24         }


 49         location / {

 50             root   html;

 51             index index.jsp index.php index.html index.htm;

 52         }

 53         location ~ \.jsp$ {

 54                 proxy_pass http://tomcat;

 55         }

 56 

测试:访问172.25.254.2:8080 无论是那个ip访问的都是server1一次server2一次

关闭server1的tomcat,只访问server2


    5.3 ip_hash绑定(同一个ip访问的是同一台服务器

(1)vim /opt/lnmp/nginx/conf/nginx.conf

18 http {

 19     include       mime.types;

 20     default_type  application/octet-stream;

 21         upstream tomcat{

 22    ip_hash;

 23                 server 172.25.15.110:8080;

 24                 server 172.25.15.112:8080;

 25         }

    (2)测试   ./shutdown.sh

        关闭一台后访问另外一台


以上是关于实战Nginx+Tomcat负载均衡集群的主要内容,如果未能解决你的问题,请参考以下文章

使用Nginx实现Tomcat集群负载均衡

图文详解 配置Nginx+Tomcat负载均衡动静分离集群

Nginx+Tomcat负载均衡集群

Nginx+Tomcat负载均衡集群

Nginx + Tomcat 负载均衡集群

Nginx,tomcat实现集群负载均衡