转】Apache解决高并发和高可用

时间:2023-02-25 10:56:29

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

                                  服务器集群

Apache 和 nginx(web服务器)

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

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

特点:

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

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

安装apache:

转】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解决高并发和高可用

转】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&period; 支撑高并发,高可用,海量数据备份恢复的Redis重要性

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

  4. 5&period;如何保证 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. &lbrack; 高并发&rsqb;Java高并发编程系列第二篇--线程同步

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

  8. tcp&sol;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. JAVA Day6

    1.对象:用来描述客观事物的一个实体,由一组属性和方法组成 2.属性--对象具有的各种特征    *每个对象的每个属性都拥有特定值    *例如:张浩和李明的年龄.姓名不一样 3.方法--对象执行的操 ...

  2. mvn install

    mvn install:install-file \ -DgroupId=com.weibo.datasys.weistreamng \ -DartifactId=weistreamng-092-fr ...

  3. Access to the temp directory is denied&period; Identity &&num;39&semi;NT AUTHORITY&bsol;NETWORK SERVICE&&num;39&semi; under which XmlSerializer is running does not have sufficient permiss

    造成错误的原因是用bat代码清理系统垃圾时造成的权限丢失而引起的 错误描述 1.An error occurred creating the configuration section handler ...

  4. 【Python 20】BMR计算器4&period;0(异常处理)

    1.案例描述 基础代谢率(BMR):我们安静状态下(通常为静卧状态)消耗的最低热量,人的其他活动都建立在这个基础上. 计算公式: BMR(男) = (13.7*体重kg)+(5.0*身高cm)-(6. ...

  5. 整合spring&plus;springmvc&plus;mybatis

    开发环境: jdk 1.8 eclipse 4.7.0 (Oxygen) tomcat 8.5.29 mysql 5.7 开发前准备: spring 框架的jar包,在这里使用的是spring-5.0 ...

  6. BIO&comma;NIO&comma;AIO&lpar;NIO2&rpar;的理解

    写在前面,这里所说的IO主要是强调的网络IO 1.BIO(同步并阻塞) 客户端一个请求对应一个线程.客户端上来一个请求(最开始的连接以及后续的IO请求),服务端新建一个线程去处理这个请求,由于线程总数 ...

  7. 宝塔中mysql数据库命名小坑

    今天在通过宝塔新建网站,添加mysql数据库,名字中间有下划线,发现能够创建成功,但是实际链接后,是没有这个数据库的.是宝塔的原因还是liunx服务器的原因? 不支持下划线的数据库名字吗? 比如 bo ...

  8. Scrapy可视化管理软件SpiderKeeper

    通常开发好的Scrapy爬虫部署到服务器上,要不使用nohup命令,要不使用scrapyd.如果使用nohup命令的话,爬虫挂掉了,你可能还不知道,你还得上服务器上查或者做额外的邮件通知操作.如果使用 ...

  9. 9、SpringBoot-CRUD国际化

    1).编写国际化配置文件: 2).使用ResourceBundleMessageSource管理国际化资源文件 3).在页面使用fmt:message取出国际化内容 步骤: 1).编写国际化配置文件, ...

  10. FreeRTOS - 任务使用注意

    如果使用xTaskCreate() 创建任务,任务栈使用的是FreeRTOS heap