原博主于: 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. vimrc示例

     1 "===============================================================================  2 "   ...

  2. WIN32编程杂记(一)

    1.UNREFERENCED_PARAMETER的用处 作用:告诉编译器,已经使用了该变量,不必检测警告! 在VC编译器下,如果您用最高级别进行编译,编译器就会很苛刻地指出您的非常细小的警告.当你生命 ...

  3. js、javascript正则表达式验证身份证号码

    function isCardNo(card) { // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X var reg = /(^\d{1 ...

  4. jquery学习以及下载链接

    jquery学习链接 http://www.w3school.com.cn/jquery/jquery_intro.asp jquery 脚本库下载链接 http://jquery.com/downl ...

  5. [Lintcode 3sum]三数之和(python,二分)

    题目链接:http://www.lintcode.com/zh-cn/problem/3sum/?rand=true# 用这个OJ练练python…这个题意和解法就不多说了,O(n^2lgn)就行了, ...

  6. 真正解决ASP.NET每一个页面首次访问超级慢的问题 (转载)

    原文:http://www.afuhao.com/article_articleId-219.shtml 摘要:ASP.NET页面首次打开很慢,但别的页面如果没有访问过,去访问也会慢.你也许认为它是在 ...

  7. POJ 1577 Falling Leaves

    题意:给出一些字符串,从上到下的建树,输出其前序遍历 像前面那一题一样,先建树,然后再递归前序遍历 不过想像上一题那样用数组建树,建树和上题一样的办法,可是应该怎么输出前序遍历呢= = 还是看的题解= ...

  8. 定义 androidlistview 滚动条位置

    1.找到每一页的最后一条数据的位置 public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, ...

  9. POJ 1904 King's Quest ★(强连通分量:可行完美匹配边)

    题意 有n个女生和n个男生,给定一些关系表示男生喜欢女生(即两个人可以结婚),再给定一个初始匹配,表示这个男生和哪个女生结婚,初始匹配必定是合法的.求每个男生可以和哪几个女生可以结婚且能与所有人不发生 ...

  10. ti processor sdk linux am335x evm /bin/setup-targetfs-nfs.sh hacking

    #!/bin/sh # # ti processor sdk linux am335x evm /bin/setup-targetfs-nfs.sh hacking # 说明: # 本文主要对TI的s ...