nginx+tomcat+memcache实现负载均衡
2019-04-30 07:02
1936 查看
实验环境
redhat6.5
iptables和selinux关闭
Server5:172.25.35.55:tomcat1,nginx,memcached
Server1:172.25.35.51:tomcat2,memcached
Tomcat1(T1)将session存储在 memcached2 (T2)上。只有当 M2不可用时,T1才将 session 存储在 memcached1 上(M1是T1 failoverNode)。使用这种配置的好处是,当T1和M1同时崩溃时也不会丢失 session会话,避免单点故障。
在T1、T2都需要实施
server5: [root@server5 ~]# tar zxf jdk-7u79-linux-x64.tar.gz -C /usr/local [root@server5 ~]# ln -s /usr/local/jdk1.7.0_79/ /usr/local/jdk [root@server5 ~]# vim /etc/profile 79 export JAVA_HOME=/usr/local/jdk 80 export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib 81 export PATH=$PATH:$JAVA_HOME/bin //$PATH系统原变量 [root@server5 ~]# source /etc/profile 测试java: [root@server5 ~]# which java /usr/local/jdk/bin/java [root@server5 ~]# which javac /usr/local/jdk/bin/javac [root@server5 ~]# vim test.java public class test { public static void main(String[] args) { System.out.println("hello world"); } } [root@server5 ~]# javac test.java [root@server5 ~]# java test hello world 安装tomcat: [root@server5 ~]# tar zxf apache-tomcat-7.0.37.tar.gz [root@server5 ~]# mv apache-tomcat-7.0.37 /usr/local/tomcat [root@server5 ~]# cd /usr/local/tomcat/apache-tomcat-7.0.37 [root@server5 apache-tomcat-7.0.37]# mv * .. [root@server5 apache-tomcat-7.0.37]# cd [root@server5 ~]# mv jar /usr/local/tomcat/lib/ [root@server5 ~]# cd /usr/local/tomcat/lib/jar [root@server5 jar]# mv * .. [root@server5 jar]# cd .. [root@server5 lib]# ls //查看含有如下文件 asm-3.2.jar memcached-session-manager-tc7-1.6.3.jar kryo-1.04.jar minlog-1.2.jar kryo-serializers-0.10.jar msm-kryo-serializer-1.6.3.jar memcached-session-manager-1.6.3.jar reflectasm-1.01.jar spymemcached-2.7.3.jar [root@server5 lib]# vim /usr/local/tomcat/conf/context.xml ...... 34 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" 35 memcachedNodes="n1:172.25.35.55:11211,n2:172.25.35.51:11211" 36 failoverNodes="n1" //在TB上此项设置为“n2” 37 requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" 38 transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTransco derFactory" 39 /> ...... [root@server5 lib]# /usr/local/tomcat/bin/startup.sh //开启tomcat
浏览器测试服务是否开启:
安装memcached: [root@server5 ~]# yum install memcached -y [root@server5 ~]# /etc/init.d/memcached start //开启memcached服务
仅在T1上实施
安装nginx,源码安装具体步骤见:https://blog.csdn.net/Ying_smile/article/details/81835216
[root@server5 ~]# nginx //开启nginx [root@server5 ~]# cd /usr/local/lnmp/nginx/conf/ [root@server5 conf]# vim nginx.conf 2 user nginx nginx; 3 worker_processes 1; 12 events { 13 worker_connections 1024; 17 http { 18 include mime.types; 19 default_type application/octet-stream; 20 upstream tomcat{ 21 sticky; 22 server 172.25.35.51:8080; 23 server 172.25.35.55:8080; 24 } 32 sendfile on; 33 tcp_nopush on; 36 keepalive_timeout 65; 37 38 gzip on; 39 40 server { 41 listen 80; 42 server_name tomcat; 48 location / { 49 root html; 50 index index.html index.htm; 51 } 57 error_page 500 502 503 504 /50x.html; 58 location = /50x.html { 59 root html; 60 } 61 location ~ \.jsp$ { 62 proxy_pass http://tomcat; 63 } // nginx-sticky-module 为 nginx 的第三方模块,使 nginx 支持 sticky 模式,所谓 sticky 模式就是指同一个用户的访问请求都被发送到同一个 tomcat 实例上处理。 [root@server5 ~]# nginx -t
浏览器测试nginx服务:
测试:
静态测试:[root@server5 ~]# cd /usr/local/tomcat/webapps/ROOT/ [root@server5 ROOT]# vim ying.jsp The time is:<%=new java.util.Date() %>
浏览器测试:
[root@server5 ROOT]# vim test.jsp //TA和TB都添加 <%@ 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> 测试: [root@server1 ~]# cd /usr/local/tomcat/logs [root@server1 logs]# cat catalina.out //查看日志显示session加载好了 INFO: MemcachedSessionService finished initialization, sticky true, operation timeout 1000, with node ids [n1] and failover node ids [n2]
添加用户和密码:
[root@server5 ~]# telnet localhost 11211 //T1使用的是m2 Trying ::1... Connected to localhost. Escape character is '^]'. get DAC28915B8B11762E8F12F384D7CBF81-n1 VALUE DAC28915B8B11762E8F12F384D7CBF81-n1 2048 127 We"� e#01e#-�e#-�#DAC28915B8B11762E8F12F384D7CBF81-n1yingyinguseruseruser1user1 END quit Connection closed by foreign host. [root@server1 ~]# /usr/local/tomcat/bin/shutdown.sh //关掉TA的tomcat,浏览器刷新可以访问到TB并且用户存在,但memcached并没有切换
[root@server5 ROOT]# /etc/init.d/memcached stop //关掉T2的m2,T2就会使用m1,添加新的用户
[root@server1 ROOT]# telnet localhost 11211 Trying ::1... Connected to localhost. Escape character is '^]'. get DAC28915B8B11762E8F12F384D7CBF81-n2 VALUE DAC28915B8B11762E8F12F384D7CBF81-n2 2048 149 We"� e1�01e4i�e4i�#DAC28915B8B11762E8F12F384D7CBF81-n2aaaaaayingyinguseruserhahahahauser1user1 END quit Connection closed by foreign host. ##把T2打开后工作的还是T1,不会调换说明:down掉当前正在响应的 tomcat实例,nginx会自动把用户的请求调度到另一个tomcat实例上,同时session 也没有丢掉。
相关文章推荐
- Nginx+Tomcat+Memcache实现负载均衡及Session共享
- Nginx+Tomcat+Memcache实现负载均衡及Session共享
- Nginx+Tomcat+Memcached 集群Session共享[memcached服务安装、tomcat使用memcache存储session、nginx安装配置实现tomcat负载均衡]
- tomcat+nginx+redis实现均衡负载、session共享(一)
- tomcat+nginx+redis实现均衡负载、session共享(二)
- Nginx加多个tomcat实现负载均衡,动静分离
- Nginx+Tomcat+Redis实现负载均衡与Session共享之四 — Nginx+Tomcat实现负载均衡
- nginx+tomcat+redis 做负载均衡时session 共享实现
- tomcat+nginx+redis实现均衡负载、session共享(一)
- Nginx+tomcat实现负载均衡的配置
- Windows下Nginx1.8.1+Tomcat7.0.65集成实现负载均衡集群示例
- springboot项目Nginx+Tomcat实现负载均衡结合Redis实现session共享问题
- 阿里云linux下Nginx整合Tomcat实现负载均衡集群
- 高性能网站架构之负载均衡的Nginx + tomcat的+ Redis的实现tomcat的集群
- Nginx+Tomcat 动静分离实现负载均衡
- nginx实现tomcat的负载均衡及企业内部应用的代理
- Solaris10 SPARC操作系统中使用Nginx+Tomcat实现负载均衡,并实现websocket代理(二)
- Nginx+tomcat+memcache应用集群负载均衡安装部署说明
- Nginx+Tomcat+Redis实现负载均衡与Session共享之五 — Nginx+Tomcat+Redis实现Session共享
- Nginx+Tomcat实现负载均衡小demo