zoukankan      html  css  js  c++  java
  • 服务器安装Apache+Tomcat+Memcached共享Session的构架设计

    本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~

        

    网站集群部署解决计划

        一、       计划目标

        实现互动留言系统、后台发布系统的高可用性,有效解决高并发量对单台应用服务器的打击,确保应用服务器单点故障不影响系统正常运行。

        二、       部署架构

        采取Tomcat集群的部署方法,Apache通过proxy_module代理方法对用户的请求进行负载均衡,转发至tomcat集群中的某一实例进行处置,tomcat集群之间通过Memcached高性能缓存集群共享速决Session。详细结构如下图:

        服务器和安装

        三、       完整解决计划

        1、        各服务器所需安装软件列表:

        

    序号

    角色

    IP地址

    所需软件

    1

    Apache出产服务器

    10.10.19.1

    Apache HTTP Server2.2*(proxy_module、proxy_http_module\proxy_balancer_module\

    proxy_ajp_module模块)

    2

    Tomcat互动留言服务器NO.1

    10.10.19.2

    Tomcat 7.0.*,TOMCAT_HOMT/lib下的jar包:

    memcached-session-manager-x.y.z.jar,下载地址

    memcached-session-manager-tc7-x.y.z.jar,

    (或memcached-session-manager-tc6-x.y.z.jar)

    spymemcached-x.y.z.jar,下载地址

    kryo-1.04.jar、kryo-serializers-0.10.jar、asm-3.2.jar、minlog-1.2.jar、msm-kryo-serializer-1.6.3.jar、reflectasm-1.01.jar

    (kryo-serializer: msm-kryo-serializerkryo-serializers-0.10 (0.10 is needed, as 0.20+ is for kryo2), kryominlogreflectasmasm-3.2

    3

    Tomcat互动留言服务器NO.1

    10.10.19.3

    同上

    4

    出产服务器NO.1

    10.10.19.4

    Apache HTTP Server 2.2*(预览站点时应用)

    其他同上

    5

    出产服务器NO.2

    10.10.19.5

    除Apache HTTP Server 2.2*外,其他同上

    6

    Memcached缓存服务器NO.1

    10.10.19.6

    libevent-2.0.21-stable(安装memcached时须要)和memcached1.4.15

    7

    Memcached缓存服务器NO.2

    10.10.19.7

    同上

    8

    数据库服务器

    10.10.18.3

    SQL Server 2008 R2

        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

        4、        http://www.linuxidc.com/Linux/2012-08/69312.htm

        

    文章结束给大家分享下程序员的一些笑话语录: 打赌
    飞机上,一位工程师和一位程序员坐在一起。程序员问工程师是否乐意和他一起玩一种有趣的游戏。工程师想睡觉,于是他很有礼貌地拒绝了,转身要睡觉。程序员坚持要玩并解释说这是一个非常有趣的游戏:"我问你一个问题,如果你不知道答案,我付你5美元。然后你问我一个问题,如果我答不上来,我付你5美元。"然而,工程师又很有礼貌地拒绝了,又要去睡觉。  程序员这时有些着急了,他说:"好吧,如果你不知道答案,你付5美元;如果我不知道答案,我付50美元。"果然,这的确起了作用,工程师答应了。程序员就问:"从地球到月球有多远?"工程师一句话也没有说,给了程序员5美元。  现在轮到工程师了,他问程序员:"什么上山时有三条腿,下山却有四条腿?"程序员很吃惊地看着工程师,拿出他的便携式电脑,查找里面的资料,过了半个小时,他叫醒工程师并给了工程师50美元。工程师很礼貌地接过钱又要去睡觉。程序员有些恼怒,问:"那么答案是什么呢?"工程师什么也没有说,掏出钱包,拿出5美元给程序员,转身就去睡觉了。

  • 相关阅读:
    初识云计算:历史、服务、架构
    云计算术语扫盲
    什么是 VxLAN?
    Linux用户态与内核态通信的几种方式
    Linux 命令多到记不住?这个开源项目帮你一网打尽!
    云计算时代,数据中心架构三层到大二层的演变
    Linux网络命令必知必会之瑞士军刀 nc(netcat)
    Docker 网络模型之 macvlan 详解,图解,实验完整
    基于alpine构建镜像报错temporary error (try again later)?
    win7环境下,vagrant,在启动虚拟机的时候报错io.rb:32:in `encode': incomplete "xC8" on GBK (Encoding::InvalidByteSequenceError)
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3091374.html
Copyright © 2011-2022 走看看