日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Load Balance Tomcat with Nginx and Store Sessions in Redis--reference

發(fā)布時間:2025/4/5 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Load Balance Tomcat with Nginx and Store Sessions in Redis--reference 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

An awkward title, but that’s exactly what we’re going to do. For some time, I was looking for a way to push code to production systems with zero downtime and zero impact to any active users. Surprisingly, the solution took very little time to implement. At a high level, we have Nginx load balancing two instances of Tomcat. Tomcat stores it’s sessions in Redis. Nginx is configured as non-sticky, since a request can go to any node in the cluster. When we need to push new code, simply take down any Tomcat instance. All current users will now get routed to the active instance. Since session data is externalized in Redis, active users will not be impacted. Once the inactive instance has been updated, bring it up and repeat for the other node.

We’ll start with Nginx:
[raoul@raoul-wp ~]$ sudo rpm -ivh nginx-1.4.2-1.el6.ngx.x86_64.rpm

Edit /etc/nginx/nginx.conf and add the bolded text below

view source print? 1.http { 2.upstream tomcat? { 3.server localhost:8080; 4.server localhost:8081; 5.} 6.include?????? /etc/nginx/mime.types; 7.default_type? application/octet-stream;

Update /etc/nginx/conf.d/default.conf and replace the location section with this:

view source print? 1.location / { 2.proxy_pass??http://tomcat; 3.}

Restart nginx:
[raoul@raoul-wp nginx]$ sudo service nginx restart

Next, install two instances of Tomcat. Change the server ports of the second instance, so that they do not conflict. At this point if you enter?https://localhost?in your browser, you will be taken to the default tomcat page. However, since we have not setup sticky sessions, every request will get load balanced in round robin, which effectively means it will be creating a new session per request. You can easily see this behavior using the built in tomcat examples. Navigate tohttp://localhost/examples/servlets/servlet/SessionExample?and refresh this page a few times and notice the Session ID changing each time. Let us fix this.

Download? and install Redis. There is good documentation at?http://redis.io/download?so I’m not going into the details. Start the server and use the client program to check that it’s working.

Finally, we need to configure Tomcat to store it’s sessions in Redis. For this we’ll be using tomcat-redis-session-manager (https://github.com/jcoleman/tomcat-redis-session-manager). This did not work out-of-the-box and required some tweaking. You will need to download the source code of this project and re-build it after updating the dependent library versions. The versions I used are commons-pool2-2.2.jar and jedis-2.6.1.jar. Copy these jars to the lib directory of both the tomcat instances.

Update the versions of commons-pool, jedis and the tomcat version that you are using in build.gradle of tomcat-redis-session-manager and build the project. Then copy the built tomcat-redis-session-manager-1.2.jar to tomcat lib directory of each instance. Add the following to both the tomcat’s context.xml:

view source print? 1.<Valve?className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve"?/> 2.<Manager?className="com.orangefunction.tomcat.redissessions.RedisSessionManager" 3.host="localhost" 4.port="6379" 5.database="0" 6.maxInactiveInterval="60"?/>

Restart the tomcat instances and we’re done. You can now see tomcat’s session in Redis. Use the previous example and try various combinations by taking the tomcat instances up and down. The session data will remain unaffected. I even noticed that if you take down both the instances and then bring them back up, the user’s existing session will be restored.

Thank you for your time.

http://java.dzone.com/articles/load-balance-tomcat-nginx-and

轉(zhuǎn)載于:https://www.cnblogs.com/davidwang456/p/4215820.html

總結(jié)

以上是生活随笔為你收集整理的Load Balance Tomcat with Nginx and Store Sessions in Redis--reference的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。