您的位置:首页 > 数据库 > Redis

搭建Nginx(负载均衡)+Redis(Session共享)+Tomcat集群

2017-01-19 19:43 861 查看
阅读目录一、环境搭建二、Nginx的安装配置与测试三、配置Tomcat集群四、用Nginx实现集群的负载均衡五、安装配置Redis并实现Session共享感谢以下博主的精彩博文,虽然坑较多。。内容重复较多。。

一、环境搭建

 Linux下搭建Tomcat7、Java8 

二、Nginx的安装配置与测试

看博主另一篇文章 

CentOS7 安装nginx1.11

 

三、配置Tomcat集群

  1)复制出两个Tomcat
复制:cp -r Tomcat-7 ./Tomcat7-2
重命名:mv Tomcat-7 Tomcat7-1
查看:ls
bin  etc  games  include  lib  man  nginx  sbin  share  soft  src  ssl  Tomcat7-1  Tomcat7-2
  2)修改其中一个Tomcat的 server.xml+View code
打开配置文件:vim conf/server.xml
<Server port="8005"shutdown="SHUTDOWN">改为 8006<Connector port="8080"protocol="HTTP/1.1"改为 8081<Connector port="8009"protocol="AJP/1.3"改为 8010 保存::wq  3)添加测试页面
创建应用文件夹:
mkdir /usr/local/Tomcat7-1/webapps/www
mkdir /usr/local/Tomcat7-2/webapps/www
添加测试页面:vim /usr/local/Tomcat7-1/webapps/www/index.jsp
  
<%@ pagelanguage="java" %><html>  <head><title>TomcatA</title></head>  <body>   <h1style="color:red;">Tomcat A</h1>    <tablealign="centre"border="1">      <tr>        <td>SessionID</td>        <td><%= session.getId() %></td>      </tr>      <tr>        <td>Createdon</td>        <td><%= session.getCreationTime() %></td>     </tr>    </table>  </body></html>sessionID:<%=session.getId()%><br>SessionIP:<%=request.getServerName()%><br>SessionPort:<%=request.getServerPort()%><%out.println("Thisis Tomcat Server A");%>
复制测试页面:cp /usr/local/Tomcat7-1/webapps/www/index.jsp /usr/local/Tomcat7-2/webapps/www/
  4)分别启动两个Tomcat
启动服务:
cd /usr/local/Tomcat7-1/bin/
./startup.sh
  浏览器打开IP:8080/www/index.jsp 与 IP:8081/www/index.jsp,显示如下  

四、用Nginx实现集群的负载均衡

   1)修改Nginx配置文件+View code
打开配置文件:vim /usr/local/nginx/conf/nginx.conf
在http { 内添加:
 #Tomcat
 upstream zhengbin {
   server 192.168.33.10:8080 max_fails=1 fail_timeout=10s;
  server 192.168.33.10:8081 max_fails=1 fail_timeout=10s;
  }
在http { 的 server { 的 location / { 内添加:
  proxy_pass http://zhengbin; 保存配置::wq
   2)重启Nginx+View code
重新加载命令:/usr/local/nginx/sbin/nginx -s reload
查看更多命令:nginx/sbin/nginx -h
  现在浏览器打开http://IP/www/,同样显示TomcatA或TomcatB,尝试不断刷新,两个页面会交替显示,即成功  但发现SessionID并不相同,接下来通过Redis来实现Session的共享(同步) 

五、安装配置Redis并实现Session共享

   1)安装测试Redis可以参考博主另一篇博客:  也可以安装一个redis 不用安装集群

CentOS7 配置redis3.0集群 

 2)下载相关jar
1.下载commons-pool,建议下载1.6,2.4.2没有测试成功
2.下载tomcat-redis-session-manager,我用的jdk7所以用的是-7.jar
3.下载jedis作为java的redis客户端,建议用2.1.0,最新版本没有测试成功
最后将三个jar分别放在两个Tomcat的 /lib 中
  3)配置Tomcat
修改配置文件:vim /usr/local/Tomcat7-1/conf/context.xml
在<Context>节点中,添加以下内容:
  <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
   <Manager className="com.radiadesign.catalina.session.RedisSessionManager"
host="127.0.0.1"
port="6379"
database="0"
maxInactiveInterval="60"/>
复制:cp /usr/local/Tomcat7-1/conf/context.xml /usr/local/Tomcat7-2/conf/
复制的小伙伴tomcat启动的时候要是报错,可能是上面内容空格有问题,可以把空格删了自己重新空格
  4)启动测试
1.启动Nginx:/usr/local/nginx/sbin/nginx2.启动Redis:redis-server
3.启动Tomcat:/usr/local/Tomcat7-1/bin/startup.sh && /usr/local/Tomcat7-2/bin/startup.sh 
  浏览器打开http://IP/www/index.jsp  发现即使两个Tomcat在切换,但各自的SessionID是相同的到此配置全部完成
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息