实战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

[root@server1 mnt]# cd /opt/lnmp/

[root@server1 lnmp]# ls

apache-tomcat-7.0.37.tar.gz  java

[root@server1 lnmp]# tar zxf apache-tomcat-7.0.37.tar.gz 

[root@server1 lnmp]# ln -s apache-tomcat-7.0.37  tomcat   ##链接改名

    1.2配置环境变量并启动tomcat

[root@server1 lnmp]# vim /etc/profile

[root@server1 lnmp]# source /etc/profile

[root@server1 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

[root@server1 bin]# netstat -antple|grep 8080

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

    1.3设置开机启动

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

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

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

/opt/lnmp/nginx/sbin/nginx

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


wKiom1fVHNXQbTOEAAGhLDV1l5A906.png



    2.配置测试网页

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

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

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

    刷新可看到实时时间


wKioL1fVHd7R1ydMAAA6Pv2sBQk227.png


wKioL1fVHd_jXdVuAAA6gk0FDrY599.png


(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>


wKioL1fVHpiyGq9DAABXebORA_o162.png



    3.编辑nginx的配置文件

[root@server1 nginx]# pwd

/opt/lnmp/nginx

[root@server1 nginx]# vim conf/nginx.conf

          location / {

                     root   html;

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

                  }

         location ~  \.jsp$  {

                proxy_pass http://localhost:8080;      

                 }

[root@server1 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

[root@server1 lnmp]# nginx -s reload


    4.测试访问 172.25.254.1/test.jsp


wKioL1fVJS_jY0n7AABhlLfT9zc661.png



5.tomcat 集群

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

    5.1Server2端配置:

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

[root@server2 ~]# mkdir /opt/lnmp

[root@server2 ~]# 

[root@server2 ~]# cd /opt/lnmp

[root@server2 lnmp]# scp -r 172.25.254.1:/opt/lnmp/* .

[root@server2 lnmp]# scp -r 172.25.254.1:/etc/profile /etc/

[root@server2 lnmp]# source /etc/profile       

[root@server2 lnmp]# startup.sh 


测试server2的tomcat

wKiom1fVOfayWULQAABXAZeeBwg496.png



    5.2 rr论寻

[root@server2 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

        关闭一台后访问另外一台


本文转自willis_sun 51CTO博客,原文链接:http://blog.51cto.com/willis/1851737,如需转载请自行联系原作者
相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
缓存 前端开发 JavaScript
tomcat核心技术+Nginx性能调优技术
而Tomcat的基本配置,每个配置项也基本上对应了Tomcat的组件结构,如果要用一张图来形象展现一下Tomcat组成的话
37 1
|
10天前
|
负载均衡 算法 应用服务中间件
面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
字节跳动面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
28 0
|
2月前
|
Java 应用服务中间件 Apache
简介Nginx,Tomcat和 Apache
简介Nginx,Tomcat和 Apache
简介Nginx,Tomcat和 Apache
|
3月前
|
负载均衡 应用服务中间件 nginx
百度搜索:蓝易云【Nginx和tomcat实现负载均衡教程】
至此,你已经成功地使用Nginx和Tomcat实现了负载均衡。Nginx将根据配置的负载均衡策略将客户端请求分发到多个Tomcat服务器上,以提高系统的性能和可用性。请注意,在实际生产环境中,还需要进行其他配置和优化,如健康检查、会话保持等,以满足具体的需求。
34 0
|
3月前
|
负载均衡 安全 前端开发
百度搜索:蓝易云【Nginx与Tomcat负载均衡-动静分离教程】
这些是将Nginx与Tomcat结合使用实现负载均衡和动静分离的基本步骤。根据您的需求和具体环境,可能还需要进行其他配置和调整。请确保在进行任何与网络连接和安全相关的操作之前,详细了解您的网络环境和安全需求,并采取适当的安全措施。
48 1
|
3月前
|
负载均衡 应用服务中间件 nginx
nginx-tomcat反向代理以及负载均衡测试
nginx-tomcat反向代理以及负载均衡测试
|
2月前
|
负载均衡 Java 应用服务中间件
|
2月前
|
负载均衡 监控 应用服务中间件
Nginx负载均衡:你的网站流量翻倍利器
Nginx负载均衡:你的网站流量翻倍利器
42 0
|
2月前
|
消息中间件 关系型数据库 MySQL
使用Nginx的stream模块实现MySQL反向代理与RabbitMQ负载均衡
使用Nginx的stream模块实现MySQL反向代理与RabbitMQ负载均衡
60 0
|
3月前
|
缓存 负载均衡 算法
【Nginx】Nginx 负载均衡
【1月更文挑战第25天】【Nginx】Nginx 负载均衡