网站集群部署解决方案一、 方案目标 实现互动留言系统、后台发布系统的高可用性,有效解决高并发量对单台应用服务器的冲击,确保应用服务器单点故障不影响系统正常运行。 二、 部署架构 采取Tomcat集群的部署方式,Apache通过proxy_module代理方式对用户的请求进行负载均衡,转发至tomcat集群中的某一实例进行处理,tomcat集群之间通过Memcached高性能缓存集群共享持久Session。具体结构如下图:
三、 完整解决方案 1、 各服务器所需安装软件列表:
2、 安装步骤: 1)编译安装Apache2.2*,除网站必须使用的模块外,加入proxy_module、proxy_http_module\proxy_balancer_module\ proxy_ajp_module模块。按如下方式配置Apache对jsp页面的请求进行负载均衡: l 发布服务器: LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_modulemodules/mod_proxy_http.so LoadModule proxy_balancer_modulemodules/mod_proxy_balancer.so LoadModuleproxy_ajp_module modules/mod_proxy_ajp.so <Proxy balancer://cluster> BalancerMember ajp://10.10.19.2:8009 route=jvm1 BalancerMember ajp://10.10.19.3:8009 route=jvm2 </Proxy> ProxyPass/ balancer://cluster/ stickysession=JSESSIONID|jsessionid l 生产服务器NO.1: LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so <Proxy balancer://cluster> BalancerMember ajp://10.10.19.4:8009route=jvm3 BalancerMember ajp://10.10.19.5:8009route=jvm4 </Proxy> ProxyPass / balancer://cluster/ stickysession=JSESSIONID|jsessionid 2)编译安装Memcached 注意,安装Memcached需要首先安装libevent-2.0.21-stable 启动Memcached: memcached -d -m 4096 -l localhost -p 11211-u root 给出memcached启动命令参数详解. -d选项是启动一个守护进程, -m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB, -u是运行Memcache的用户,我这里是root, -l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200, -p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口, -c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定, -P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid, -p 使用的TCP端口。默认为11211 -m 最大内存大小。默认为64M -vv 用very vrebose模式启动,调试信息和错误输出到控制台 -d 作为daemon在后台启动 3)安装Java环境和Tomcat7.*。 将下载完成的9个jar包放入 TOMCAT_HOME /lib文件夹下,并按如下修改Tomcat的配置文件TOMCAT_HOME/conf/context.xml: l Tomcat互动留言服务器NO.1: <Context> <ManagerclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:10.10.19.6:11211,n2:10.10.19.7:11211" /*此前安装的两个Memcached服务器的IP地址,Memcached默认端口号为11211*/ failoverNodes="n1" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" /> </Context> l Tomcat互动留言服务器NO.2: <Context> <ManagerclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:10.10.19.6:11211,n2:19.7:11211" /*此前安装的两个Memcached服务器的IP地址,Memcached默认端口号为11211*/ failoverNodes="n2" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" /> </Context> l 生产服务器NO.1: <Context> <ManagerclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:10.10.19.6:11211,n2:19.7:11211" /*此前安装的两个Memcached服务器的IP地址,Memcached默认端口号为11211*/ failoverNodes="n1" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" /> </Context> l 生产服务器NO.2: <Context> <ManagerclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:10.10.19.6:11211,n2:19.7:11211" /*此前安装的两个Memcached服务器的IP地址,Memcached默认端口号为11211*/ failoverNodes="n2" requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" /> </Context> 参考文章 1、 https://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration 2、 http://www.bradchen.com/blog/2012/12/tomcat-auto-failover-using-apache-memcached 3、 http://blog.csdn.net/ichsonx/article/details/6911358 (责任编辑:IT) |