解剖Nginx:linux+tomcat+nginx+memcached实现负载均衡以及session共享
来源:互联网 发布:石某鹏情杀网络女主播 编辑:程序博客网 时间:2024/05/21 10:17
最近几天公司一直做nginx的负载均衡,折腾了将近一周,在网上查了很多资料,终于在今天将一系列的流程及功能跑通。在学习的过程中,发现网上大多数资料都写的很笼统,或者就是写的让新手迷迷糊糊,似懂非懂,很多的配置参数等都不是很明白,配置的时候也就造成很多地方不确切。现在我对我这几天的配置学习予以总结,从下载到安装、环境的搭建,以及负载均衡的配置,参数的详细解释,以及memcached的session共享,都会一一介绍,并保证所用的代码和配置都经过本人的测试并实现功能,希望给予对亟需解决linux+tomcat+nginx+memcached实现负载均衡以及session共享的同行特别是新手有一些帮助。
一、环境的介绍:
操作系统采用: CentOS-5.6-i386
项目部署在:tomcat6.0,tomcat一共有两个,分别命名为tomcat6.0_1、tomcat.0_2.这两台机器都运行在一台服务器上,IP为192.168.128.129
负载均衡采用版本:nginx-1.2
session的管理:memcached-1.4.15
由于资源有限,所有的程序安装测试均在一台服务器上完成。
二、jdk的环境的搭建tomcat的安装与项目的部署:
1、具体的部署请参考我前两天的文章:http://blog.csdn.net/jessonlv/article/details/7987434,所有的代码都通过测试。按照上面的方式分别安装部署两个tomcat,并分别命名为tomcat6.0_1、tomcat6.0_2.
2、这里重点说下文章之外的配置:由于两个tomcat运行在一台服务器上,所以要分别修改tomcat的端口,故修改/conf/server.xml,让其能在一台机器上运行。具体代码如下:
tomcat6.0_1配置:
tomcat6.0_2配置:
至此,一台服务器上的两个tomcat配置完毕。
三、nginx的安装及负载均衡的配置:
nginx的安装一般采用两种方式,一种是yum命令的安装,第二种是下载tar.gz包,采用编译的方式安装。
第一种比较简单,但是一般服务器都不支持yum命令,在此做简单介绍:
01.1、rpm -Uvh http://nginx.org/packages/centos/5/noarch/RPMS/nginx-release-centos-5-0.el5.ngx.noarch.rpm
01.2、执行安装:yum安装nginx:
yum --disablerepo=* --enablerepo=base --enablerepo=nginx install nginx
此安装方式有可能需要安装gcc编译器:gcc安装:下载:http://www.linuxfromscratch.org/blfs/view/5.1/general/gcc2.html
安装命令:yum install gcc gcc-c++ kernel-devel
第二种安装方式是重点:
01、下载所需的安装包:
下载nginx:http://nginx.org/en/download.html
下载pcre,安装pcre,nginx支持重写:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
下载zlib:http://download.csdn.net/detail/jessonlv/4603322
下载gcc:http://download.csdn.net/detail/jessonlv/4603333
Nginx依赖一些其他PCRE、openssl(依赖libssl-dev),甚至是zlib、gcc等,下面我们简单说下如何安装PCRE:
测试pcre是否安装成功:
返回安装的pcre的版本好则表示成功。或者:
也是成功。
安装nginx时如需其他依赖库,上面都注有下载地址,安装方式大致相同,在此不再都一一赘述。
02、安装完成后,接下来所要做的就是nginx最核心的负载均衡的配置:
配置目录是nginx安装目录下的/conf/nginx.conf文件。下面张贴我的配置文件:
关于gzip的各个参数的具体含义请参考我的另一篇文章:http://blog.csdn.net/jessonlv/article/details/8016284
各个模块参数含义请参考;http://wiki.nginx.org/NginxChs
或者参考我的资源:http://download.csdn.net/detail/jessonlv/4603422 这上面有关于nginx各个参数的详细解释.
至此,nginx的安装及配置算是基本完成。下面进行测试:
03、测试:
启动tomcat6.0_1和tomcat6.0_2.具体命令在此不再赘述,相信大家都很熟悉,不然就别做Java了。
启动nginx:
上面试测试时nginx的安装路径,启动时注意你自己的安装路径。没有报错即为启动成功。
查看nginx进程:
在浏览器输入:http://192.168.128.129 访问项目主页。
至此,linux下tomcat+nginx的负载均衡是做好了。但是这才是个开始,memcached的session共享才是重中之重。
四、memcached的下载安装及完成session共享的配置
1、memcached管理session共享:
安装memcached一般需要安装libevent支持组件。
服务器端主要是安装memcache服务器端,目前的最新版本是 memcached-1.4.5
官网下载:http://memcached.org/
另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent,libevent的最新版本是libevent-2.0.20。(如果你的系统已经安装了libevent,可以不用安装)官网下载:http://libevent.org/
1.先安装libevent。这个东西在配置时需要指定一个安装路径,即./configure --prefix=/usr;然后make;然后make install;
2.再安装memcached,只是需要在配置时需要指定libevent的安装路径即./configure --with-libevent=/usr;然后make;然后make install;
这样就完成了Linux下Memcache服务器端的安装。详细的方法如下:
测试libevent是否安装成功:
测试memcached是否安装成功:
memcached必须启动才能完成服务,启动memcached:
具体各个参数的含义请看:
2、配置
memcached有多种session管理方式,这里采用官网称最有效率的一种kryo。
附各种方式所需要的jar包:
各种方式的序列化方案以及jar的下载请参考gong1208的文章:http://gong1208.iteye.com/blog/1596120以及chenzhou123520的文章:http://chenzhou123520.iteye.com/blog/1650212 写的相当的不错,对我有很大帮助。
不管你选择哪种序列化策略,你都需要 memcached-session-manager-${version}.jar ,如果你使用的是tomcat6,则还需要下载 memcached-session-manager-tc6-${version}.jar ,如果使
用的是tomcat7则下载 memcached-session-manager-tc7-${version}.jar 。同时还需要下载 spymemcached-2.7.3.jar.下载这完这些jar包后把jar包放到 $CATALINA_HOME/lib/目录
在此特别需要注意的是:jar包的版本非常重要,不然容易造成jar之间的互相冲突,造成非配置性的错误。
在此我使用的是:
spymemcached-2.7.1.jar下载:http://download.csdn.net/detail/jessonlv/4603643
reflectasm-1.01.jar下载:http://download.csdn.net/detail/jessonlv/4603628
msm-kryo-serializer-1.6.3.jar下载:http://download.csdn.net/detail/jessonlv/4603638
minlog-1.2.jar下载:http://download.csdn.net/detail/jessonlv/4603636
memcached-session-manager-tc6-1.6.3.jar下载:http://download.csdn.net/detail/jessonlv/4603633
memcached-session-manager-1.6.3.jar下载:http://download.csdn.net/detail/jessonlv/4603632
kryo-serializers-0.10.jar下载:http://download.csdn.net/detail/jessonlv/4603628
kryo-1.04.jar下载:http://download.csdn.net/detail/jessonlv/4603624
asm-3.2.jar下载:http://download.csdn.net/detail/jessonlv/4603621
尤其注意的是我之前安装的是memcached-1.2.0不能与各个jar包很好的兼容,造成session共享的失败,换成memcached-1.4.15之后,兼容报错问题也就随之解决。
我们还需要修改 $CATALINA_HOME/conf/context.xml文件中Context节点下的内容,添加memcached-session-manager配置。
这里我们采用非粘性session管理配置:
tomcat6.0_2的配置与此相同。
至此,memcached的配置也完毕,启动两个tomcat,再启动nginx,再启动memcached,进行与session有关的操作,然后可以关掉其中任意一台tomcat查看sessionid,之后同样的方法测试另外一台,可以发现,不管是那个tomcat在运行,sessionid的值是相同的。
到此,已经完成了负载均衡以及session的全部配置。希望对大家有所帮助。
转载请标明:blog.csdn.net/code_my_dream/
- 解剖Nginx:linux+tomcat+nginx+memcached实现负载均衡以及session共享
- Nginx+Tomcat+memcached负载均衡实现session共享
- nginx+memcached+tomcat实现负载均衡和session共享
- Nginx+Tomcat+memcached负载均衡实现session共享
- Nginx+Tomcat+memcached负载均衡实现session共享
- Nginx+Tomcat+memcached负载均衡实现session共享
- Nginx+Tomcat+memcached负载均衡实现session共享
- Nginx+Tomcat+memcached负载均衡实现session共享
- nginx+tomcat+memcached 实现负载均衡 。动静分离。session共享
- nginx+tomcat+memcached实现负载均衡与session共享
- nginx+memcached+tomcat实现负载均衡和session共享
- Nginx+Tomcat+memcached负载均衡实现session共享
- Nginx+Tomcat+memcached负载均衡实现session共享
- Nginx+Tomcat+memcached负载均衡实现session共享
- nginx+tomcat负载均衡实现session共享
- nginx、memcached、tomcat 负载均衡和集群配置,session共享
- 记录nginx+tomcat+memcached+msm负载均衡,session共享
- 记录nginx+tomcat+memcached+msm负载均衡,session共享
- 如何查看mac系统是32位还是64位的操作系统
- Linux网络编程基础
- Android屏蔽开机引导页面
- 第二周项目--汉诺塔问题
- 基于JavaMail向邮箱发送邮件
- 解剖Nginx:linux+tomcat+nginx+memcached实现负载均衡以及session共享
- MySQL之索引:索引字段的选取
- spring boot 学习之旅(一)
- c++中的c
- 账号管理
- awk知识点全回顾
- iPhone迎十周年,曾告苹果抄袭的中国公司“经营异常”了
- 20170913 nwjs的bg-script的坑
- java 线程 join(wait) 后,是如何唤醒