搭建Nginx + Memcached + Tomcat 集群记录

阅读:440 2019-03-19 14:42:13 来源:新网

1、单是从软件层面做负载,只能单主nginx服务器,主服务器挂了,系统就挂了

2、实现多台主nginx服务器,可采用dns负载均衡,即同一个域名绑定多个ip(nginx服务器),按顺序分发

3、实现多台主nginx服务器,可采用负载均衡硬件设备,分发到多个ip(nginx服务器)

4、综合上述三点

对于web应用集群的技术实现而言,最大的难点就是如何能在集群中的多个节点之间保持数据的一致性,会话(session)信息是这些数据中最重要的一块。要实现这一点,大体上有两种方式,

一种是把所有session数据放到一台服务器上或者数据库中,集群中的所有节点通过访问这台session服务器来获取数据;

另一种就是在集群中的所有节点间进行session数据的同步拷贝,任何一个节点均保存了所有的session数据。

tomcat集群session同步方案有以下几种方式:

使用tomcat自带的cluster方式,多个tomcat间自动实时复制session信息,配置起来很简单。但这个方案的效率比较低,在大并发下表现并不好。原理:http://zyycaesar.iteye.com/blog/296606

利用nginx的基于访问ip的hash路由策略,保证访问的ip始终被路由到同一个tomcat上,这个配置更简单。但如果应用是某一个局域网大量用户同时登录,这样负载均衡就没什么作用了。

利用nginx插件实现tomcat集群和session同步,nginx-upstream-jvm-route-0.1.tar.gz,是一个nginx的扩展模块,用来实现基于cookie的sessionsticky的功能,可通过http://code.google.com/p/nginx-upstream-jvm-route/downloads/list获取。

利用memcached把多个tomcat的session集中管理,前端在利用nginx负载均衡和动静态资源分离,在兼顾系统水平扩展的同时又能保证较高的性能。

nginx

memcached(memcached-1.2.6-win32-bin)

tomcat7

将安装包memcached-1.2.6-win32-bin解压到x:/目录下面,重命名为memcached。

打开命令提示符,进入x:/memcached的目录,输入安装命令“memcached.exe–dinstall”,安装memcached的windows服务,

然后输入“memcached-dstart”,以后memcached将作为windows的一个服务每次开机时自动启动。

默认端口:11211。

下面插入介绍一些memcached的常用命名,也是最基本的命令,

(1)查看memcached的服务是否已经启动:tasklist/fi"imagenameeqmemcached.exe"

(2)memcached参数使用介绍

-p监听的端口-l连接的ip地址,默认是本机-dstart启动memcached服务-drestart重起memcached服务-dstop|shutdown关闭正在运行的memcached服务-dinstall安装memcached服务-duninstall卸载memcached服务-u以的身份运行(仅在以root运行的时候有效)-m最大内存使用,单位mb。默认64mb-m内存耗尽时返回错误,而不是删除项-c最大同时连接数,默认是1024-f块大小增长因子,默认是1.25-n最小分配空间,key+value+flags默认是48-h显示帮助

例如:c:memcachedmemcached.exe-h

解压并复制tomcat,分别为apache-tomcat-7.0.55-01和apache-tomcat-7.0.55-02

如下列表:

memcached-session-manager-1.6.1,

memcached-session-manager-tc7-1.6.1(因为tomcat版本为7.0)

javolution-5.4.3.1,

msm-javolution-serializer-1.6.1(准备使用javolution序列化方式)

spymemcached-2.7.3(依赖包)

添加以上jar到tomcatlib中

修改server.xml文件,同时添加https支持和tomcat双开的配置

修改文件tomcat/conf/context.xml,在context标签中加入如下代码:

3.启动tomcat的测试

将安装包nginx-1.3.0.zip解压到x:/目录

启动nginx:进入x:/nginx目录,执行命令:startnginx.exe,弹出屏会一闪而逝。

接着输入tasklist/fi"imagenameeqnginx.exe",出现如下内容,表示nginx已正常启动啦!

在浏览器输入http://localhost,可以看到nginx的欢迎页。

更多nginx常用命令:

停止nginx:nginx.exe-sstop|quit

重启nginx:nginx.exe-sreload

查看nginx版本:nginx.exe-v

修改文件$nginx_home/conf/nginx.conf。

#设定负载均衡的服务器列表

upstreamtomcat_server{serverlocalhost:18080weight=1;#第一台机器serverlocalhost:28080weight=1;#第二台机器}

server{listen8080;server_namelocalhost;#charsetkoi8-r;#access_loglogs/host.access.logmain;location/{roothtml;indexindex.htmlindex.htm;proxy_passhttp://tomcat_server;}}

以上部分是需要在nginx.conf中的http{}

proxy_pass表示代理主机

upstreamtomcat_server{……}配置中配置了代理主机处理请求的两个服务。

上述配置表示:nginx监听到http://locahost:8080的请求之后,转发到代理tomcat_server中的两个服务中的一个,有它们来处理请求。weight表示被分配到权重,weight值越大,处理请求的机会越多。

至此,nginx的安装与配置结束。

五:测试

测试代码放入tomcat1,2下test/index.jsp中,启动各个服务

<%@pagelanguage="java"contenttype="text/html;charset=utf-8"pageencoding="utf-8"%>sessionid:<%=session.getid()%>
sessionip:<%=request.getservername()%>
sessionport:<%=request.getserverport()%><%out.println("apache-tomcat-7.0.55-02");%><%=(string)session.getattribute("user")%>

结果

相关文章
{{ v.title }}
{{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
你可能感兴趣
推荐阅读 更多>
推荐商标

{{ v.name }}

{{ v.cls }}类

立即购买 联系客服