原博主于: 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. mongodb管理工具rockmongo

    mongodb的图像管理工具非常之多,我用的是rockmongo. RockMongo 是一个PHP5写的MongoDB管理工具. 主要特征: 使用宽松的New BSD License协议 速度快,安 ...

  2. C#中控件的CheckState和Checked属性区别?

    Checked 和CheckState都是检查控件选中状态,都能判断是否选中控件. 只是Checked 通过布尔判断(true & false): CheckState 通过枚举判断. che ...

  3. Kafka学习笔记

    一.Kafka使用背景 1. Kafka的定义 是一个分布式消息系统,由LinkedIn使用Scala编写,用作LinkedIn的活动流(Activity Stream)和运营数据处理管道(Pipel ...

  4. webbrowser代理c#代码实现

    微软webbrowser控件也就是IE插件,他的所有功能就像IE类似,当然设置也是一样的,下面介绍下webbrowser如何设置代理,可不要用这个对抗广告联盟哦 You can change the ...

  5. poj 3273 Monthly Expense(贪心+二分)

    题目:http://poj.org/problem?id=3273 题意:把n个数分成m份,使每份的和尽量小,输出最大的那一个的和. 思路:二分枚举最大的和,时间复杂度为O(nlog(sum-max) ...

  6. 给你的JAVA程序配置参数(Properties的使用)

    我们在写JAVA程序时,很多时候运行程序的参数是需要动态改变的 测试时一系列参数,运行时一系列参数 又或者数据库地址也需要配一套参数,以方便今后的动态部署 这些变量的初始化,我们在写小DEMO时完全可 ...

  7. 利用序列化的方式实现C#深复制和浅复制

    代码如下:具体看注释 [Serializable] public class A { public virtual string Name { get; set; } public int Age { ...

  8. Qt之自定义界面(添加自定义标题栏)

    简述 通过上节内容,我们实现了自定义窗体的移动,但是我们缺少一个标题栏来显示窗体的图标.标题,以及控制窗体最小化.最大化.关闭的按钮. 自定义标题栏后,所有的控件我们都可以定制,比如:在标题栏中添加换 ...

  9. html之marquee详解[转]

    该标签不是HTML3.2的一部分,并且只支持MSIE3以后内核,所以如果你使用非IE内核浏览器(如:Netscape)可能无法看到下面一些很有意思的效果该标签是个容器标签语法: <marquee ...

  10. Jqgrid入门-使用模态对话框编辑表格数据(三)

            Jqgrid是一个强大的表格插件,它提供了多种方式来编辑数据.这三种方式分别是: Cell Editing——只允许修改某一个单元格内容 Inline Editing——允许在jqGr ...