原博主于: http://www.ha97.com/5803.html   感谢!

                                  服务器集群

Apache 和 nginx(web服务器)

1、  多台集群机器联合处理一个任务。

2、  一台机器处理不同的多个任务。

特点:

处理静态数据速度快(自动html静态数据的缓存)

并发数一般要比J2EE服务器要高。

安装apache:

  1、简单安装:yum install httpd

2、源码安装

1、安装apr

      1. 解压
      2. ./configure --prefix=/usr/local/apr  指定安装目录
      3. Make && make install

ii.   安装apr-util

      1. 解压
      2. ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
      3. Make && make install

iii. 源码安装apache

      1. 解压

./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=most --with-mpm=event

         3.Make && make  install

  b)  Apache和tomcat的连接

    apache 连接tomcat

    连接方法:两种

    基于ajp协议方式连接,基于二进制

    基于HTTP协议连接

    两种连接工具:

      Proxy:mod_proxy.so

    Connectors:mod_jk.so

    1、mod_jk :使用的是ajp连接器。

    mod_jk 1x

    mod_jk 2x :丢弃

     ajp协议:

      基于二进制,速度快,兼容。安全。

      1、下载mod_jk

          a、tomcat-conentors ,需要安装之后才能得到mod_jk.so

        b、mod_jk.so

      2、mod_jk.so放到apache目录下mudules目录

      3、编辑apache配置文件

         LoadModule jk_module modules/mod_jk.so

       JkWorkersFile conf/workers.properties

       JkLogFile logs/mod_jk.log

       JkLogLevel info

      JkMount /* controller

新建一个workers.properties

worker.list=controller

worker.tomcat1.port=8009

worker.tomcat1.host=192.168.197.128

worker.tomcat1.type=ajp13

worker.tomcat1.lbfactor=1

worker.tomcat2.port=8009

worker.tomcat2.host=192.168.197.129

worker.tomcat2.type=ajp13

worker.tomcat2.lbfactor=1

worker.controller.type=lb #lb:表示负载均衡器

worker.controller.balance_workers=tomcat2,tomcat1

worker.controller.sticky_session=0 # 表示apache不处理session,每次传入sessionID

worker.controller.sticky_session_force=0

     2、proxy_mod:支持ajp和http连接器。 (官方推荐)

       是apache自带的一个模块。

    1、检查Proxy_mod是否开启。

    2、编辑apache配置文件:httpd.cnf

     ProxyVia Off #设置响应时是否出现主机信息。

      ProxyRequests Off #:是否开启apache的正向代理功能,正反向不能同时使用

      ProxyPreserveHost Off #:是否在反向代理中支持虚拟主机

        ProxyPass / ajp://localhost:8009/

      ProxyPassReverse / ajp://localhost:8009/ #表示用户响应是可能使用重定向也需要经过代理服务器

      3、负载均衡器

  1、硬件负载均衡

  2、软件负载均衡

     在apache配置文件中

     <Proxy balancer://mybl>

      BalancerMember ajp://192.168.197.128:8009 loadfactor=1 route=tomcat1

     BalancerMember ajp://192.168.197.129:8009 loadfactor=1 route=tomcat2

    ProxySet lbmethod=byrequests

  </Proxy>

     ProxyPass / balancer://mybl/ 使用负载均衡器

          ProxyPassReverse / balancer://mybl/

    mybl:表示负载均衡器的名字

    BalancerMember:代表一个后端应用服务器

    loadfactor=权重 ,决定节点压力大小。

   route:后端应用服务器的名字(负载均衡时必须要)

      在tomcat的配置文件中定义名字

              server.xml

      ProxySet lbmethod=byrequests ,根据请求的数量进行负责均衡

    lbmethod=byrequests 按照请求次数均衡(默认)

     lbmethod=bytraffic 按照流量均衡

     lbmethod=bybusyness 按照繁忙程度均衡(总是分配给活跃请求数最少的服务器)

        stickysession=JSESSIONID|jsessionid nofailover=On

  apache虚拟主机

    1、  一台机器运行多个项目。

      a) 项目a –》tomcat1:8080和项目 b ---》tomcat2:8081

      b) 使用apache配置虚拟主机

      <VirtualHost *:80>  * :任意的客户端

        DocumentRoot "/usr/local/apache/docs/dummy-host2.example.com" 静态资源路径

        ServerName  peiyou.com(该项目访问的域名,每个虚拟主机要不同)

       ErrorLog "logs/dummy-host2.example.com-error_log"

        CustomLog "logs/dummy-host2.example.com-access_log" common

        #ProxyVia Off

        #ProxyPreserveHost Off

        #ProxyRequests Off

        #ProxyPass / ajp://h1:8009/

        #ProxyPassReverse / ajp://h1:8009/

      </VirtualHost>

  session:的处理

    1、session复制

   tomcat 本身带有复制session的功能。(不讲)

  2、共享session

   需要专门管理session的软件,

  memcached 缓存服务,可以和tomcat整合,帮助tomcat共享管理session。

安装memcached

1、安装libevent

2、安装memcached

3、启动memcached

memcached -d -m 128m -p 11211 -l 192.168.197.128 -u root -P /temp/

-d:后台启动服务 http://www.ha97.com/5803.html

-m:缓存大小

-p:端口

-l:IP

-P:服务器启动后的系统进程ID,存储的文件

-u:服务器启动是以哪个用户名作为管理用户

3、拷贝jar到tomcat的lib下

4、配置tomcat,每个tomcat里面的context.xml中加入:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

memcachedNodes="n1:192.168.197.128:11211"

sticky="false"

lockingMode="auto"

sessionBackupAsync="false"

requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"

sessionBackupTimeout="1000" transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"

/>

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

memcachedNodes="n1:host1.yourdomain.com:11211,n1:host2.yourdomain.com:11211"

sticky="false"

sessionBackupAsync="false"

lockingMode="uriPattern:/path1|/path2"

requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"

transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"

/>

转】Apache解决高并发和高可用的更多相关文章

  1. java亿级流量电商详情页系统的大型高并发与高可用缓存架构实战视频教程

    亿级流量电商详情页系统的大型高并发与高可用缓存架构实战 完整高清含源码,需要课程的联系QQ:2608609000 1[免费观看]课程介绍以及高并发高可用复杂系统中的缓存架构有哪些东西2[免费观看]基于 ...

  2. 【Distributed】大型网站高并发和高可用

    一.DNS域名解析 二.大型网站系统应有的特点 三.网站架构演变过程 3.1 传统架构 3.2 分布式架构 3.3 SOA架构 3.4 微服务架构 四.高并发设计原则 4.1 拆分系统 4.2 服务化 ...

  3. 5. 支撑高并发,高可用,海量数据备份恢复的Redis重要性

    商品详情页的架构实现 缓存架构 第一块儿,要掌握的很好的,就是redis架构 高并发,高可用,海量数据,备份,随时可以恢复,缓存架构如果要支撑这些要点,首先呢,redis就得支撑 redis架构,每秒 ...

  4. 5.如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨兵原理能介绍一下么?

    作者:中华石杉 面试题 如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨兵原理能介绍一下么? 面试官心理分析 其实问这个问题,主要是考考你,redis ...

  5. 面试系列15 如何保证Redis的高并发和高可用

    就是如果你用redis缓存技术的话,肯定要考虑如何用redis来加多台机器,保证redis是高并发的,还有就是如何让Redis保证自己不是挂掉以后就直接死掉了,redis高可用 我这里会选用我之前讲解 ...

  6. 优秀开源项目之三:高性能、高并发、高扩展性和可读性的网络服务器架构State Threads

    译文在后面. State Threads for Internet Applications Introduction State Threads is an application library ...

  7. [ 高并发]Java高并发编程系列第二篇--线程同步

    高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...

  8. tcp/udp高并发和高吐吞性能测试工具

    在编写一个网络服务的时候都比较关心这个服务能达到多少并发连接,而在这连接的基础上又能达到一个怎样的交互能力.编写服务已经是一件很花力气的事情,而还要去编写一个能够体现结果的测试工具就更加消耗工作时间. ...

  9. 在高并发、高负载的情况下,如何给表添加字段并设置DEFAULT值?

    在高并发.高负载的情况下,如何给表添加字段并设置DEFAULT值? 在Oracle 12c之前,当Oracle表数据量上亿时,对表执行“ALTER TABLE XXX ADD COLUMN_XX VA ...

  10. Nginx和Tengine解决高并发和高可用,而非推荐Apache

    什么是Nginx  什么是Tengine 看看国内大公司在用Nginx和Tengine吗? 步骤一:进入 https://www.taobao.com/,按F12.可看到 有很多APP对淘宝进行请求. ...

随机推荐

  1. 如何手动把jar包添加进Maven本地仓库

    有以下两种情况你需要手动通过Maven命令把jar文件添加进本地仓库: 1.在中心仓库里没有你想要的jar包. 2.你自己写了一个jar包,在其他项目要用到. 补充:现在仍有很多jar包不支持Mave ...

  2. 随机森林——Random Forests

    [基础算法] Random Forests 2011 年 8 月 9 日 Random Forest(s),随机森林,又叫Random Trees[2][3],是一种由多棵决策树组合而成的联合预测模型 ...

  3. JNI读取assets资源文件

    源自:http://www.rosoo.net/a/201112/15459.html assets目录底下的文件会被打包到一个apk文件里,这些资源在安装时他们并没被解压,使用时是直接从apk中读取 ...

  4. LingPipe-TextClassification(文本分类)

    What is Text Classification? Text classification typically involves assigning a document to a catego ...

  5. 删除 GPT 保护分区

    问题: 将内置和/或外置硬盘连接到 Windows XP 32 位操作系统时,将无法访问硬盘,“磁盘管理”将会报告该硬盘包含 GPT 保护分区.在此状态下,将无法对硬盘进行重新分区和格式化. 原因: ...

  6. 清幽傲竹实现kbmMWServer的方法(转)

    感谢竹子! 整体思路,是不用kbmMWUNIDACQuery,而是直接用uniQuery做数据查询,利用kbmMWUNIDACConnectioPool取得数据库联接,自己再建一个uniQuery对象 ...

  7. 结构体mem_pool_t

    /** Memory area header */ typedef struct mem_area_struct mem_area_t; /** Memory pool */ typedef stru ...

  8. 函数flst_remove

    移除 node, node->prev直接指向node->next /*********************************************************** ...

  9. bzoj4080

    分组赛时wy大神讲的题,网上都是随机化的题解 我来讲一下正解吧,我们穷举两个点,这两点距离要小于限制 然后我们分别以这两个点为圆心,两点距离为半径画圆 圆圆相交的部分被两点练成线段划分成两部分,不难发 ...

  10. How to delete a team project from Team Foundation Service (tfs.visualstudio.com)

    C:\project>tfsdeleteproject /collection:https://buckh-test2.visualstudio.com/DefaultCollection Te ...