转】Apache解决高并发和高可用
原博主于: http://www.ha97.com/5803.html 感谢!
服务器集群
Apache 和 nginx(web服务器)
1、 多台集群机器联合处理一个任务。
2、 一台机器处理不同的多个任务。
特点:
处理静态数据速度快(自动html静态数据的缓存)
并发数一般要比J2EE服务器要高。
安装apache:

1、简单安装:yum install httpd
2、源码安装
1、安装apr
- 解压
- ./configure --prefix=/usr/local/apr 指定安装目录
- Make && make install
ii. 安装apr-util
- 解压
- ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
- Make && make install
iii. 源码安装apache
- 解压
./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解决高并发和高可用的更多相关文章
- java亿级流量电商详情页系统的大型高并发与高可用缓存架构实战视频教程
亿级流量电商详情页系统的大型高并发与高可用缓存架构实战 完整高清含源码,需要课程的联系QQ:2608609000 1[免费观看]课程介绍以及高并发高可用复杂系统中的缓存架构有哪些东西2[免费观看]基于 ...
- 【Distributed】大型网站高并发和高可用
一.DNS域名解析 二.大型网站系统应有的特点 三.网站架构演变过程 3.1 传统架构 3.2 分布式架构 3.3 SOA架构 3.4 微服务架构 四.高并发设计原则 4.1 拆分系统 4.2 服务化 ...
- 5. 支撑高并发,高可用,海量数据备份恢复的Redis重要性
商品详情页的架构实现 缓存架构 第一块儿,要掌握的很好的,就是redis架构 高并发,高可用,海量数据,备份,随时可以恢复,缓存架构如果要支撑这些要点,首先呢,redis就得支撑 redis架构,每秒 ...
- 5.如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨兵原理能介绍一下么?
作者:中华石杉 面试题 如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨兵原理能介绍一下么? 面试官心理分析 其实问这个问题,主要是考考你,redis ...
- 面试系列15 如何保证Redis的高并发和高可用
就是如果你用redis缓存技术的话,肯定要考虑如何用redis来加多台机器,保证redis是高并发的,还有就是如何让Redis保证自己不是挂掉以后就直接死掉了,redis高可用 我这里会选用我之前讲解 ...
- 优秀开源项目之三:高性能、高并发、高扩展性和可读性的网络服务器架构State Threads
译文在后面. State Threads for Internet Applications Introduction State Threads is an application library ...
- [ 高并发]Java高并发编程系列第二篇--线程同步
高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...
- tcp/udp高并发和高吐吞性能测试工具
在编写一个网络服务的时候都比较关心这个服务能达到多少并发连接,而在这连接的基础上又能达到一个怎样的交互能力.编写服务已经是一件很花力气的事情,而还要去编写一个能够体现结果的测试工具就更加消耗工作时间. ...
- 在高并发、高负载的情况下,如何给表添加字段并设置DEFAULT值?
在高并发.高负载的情况下,如何给表添加字段并设置DEFAULT值? 在Oracle 12c之前,当Oracle表数据量上亿时,对表执行“ALTER TABLE XXX ADD COLUMN_XX VA ...
- Nginx和Tengine解决高并发和高可用,而非推荐Apache
什么是Nginx 什么是Tengine 看看国内大公司在用Nginx和Tengine吗? 步骤一:进入 https://www.taobao.com/,按F12.可看到 有很多APP对淘宝进行请求. ...
随机推荐
- Maven是如何工作的
Maven的依赖机制能够自动下载依赖文件,并且自动维护.更新版本. 让我们通过一个案例来了解Maven是如何工作的,假如你的系统想用log4j作为日志输出工具,让我们看一下传统做法和Maven做法: ...
- 今天晚上 中国互联网被Struts2漏洞血洗
Apache官方今天晚上发布安全公告(官方编号S2-032/CVE编号CVE-2016-3081),Apache Struts2服务在开启动态方法调用(DMI)的情况下,可以被远程执行任意命令,安全威 ...
- IOS刷新数据
在一个项目开发过程中为了更好的体验经常会用到下拉刷新更新数据,当然也伴随一些上拉加载更多数据的情况:当前比较火的EGOTableViewPullRefresh只实现了下拉功能,而没有上拉的功能.这里介 ...
- poj 1845 Sumdiv (数论)
题目链接 题意:求 A^B的所有约数之和对9901取模后的结果. 分析: 看了小优的博客写的. 分析来自 http://blog.csdn.net/lyy289065406/article/detai ...
- Struts2配置
1. 设定server a) window– preferences – myeclipse – servers – tomcat – 6.x b) 选择tomcat h ...
- 证明:寝室分配问题是NPC问题
P.NP.NPC.NP-hard P:多项式时间能够解决的问题的集合,比如最短路径问题是集合P的一个元素,而最短路径问题本身又是一个集合,因此P是集合的集合. NP:多项式时间内能够验证的问题的集合. ...
- codevs 3123 高精度练习之超大整数乘法
fft. #include<iostream> #include<cstdio> #include<cstring> #include<complex> ...
- Linux中 干掉原来的PHP方法
干掉原来的PHP方法: 查看php版本命令:#php -v这个命令是删除不干净的#yum remove php因为使用这个命令以后再用#php -v还是会看到有版本信息的..... 必须强制删除#rp ...
- ASP.NET MVC模型部分验证
在很多情况下,我们为了代码的复用可能会存在ViewModel共用的情形.比方说,web应用中常常会遇到的一个需求就是用户找回密码的功能.用户首先要验证通过验证邮箱(通常是用户名)来获取验证码,然后再进 ...
- $( ).focus()与$( )[0].focus()区别
$( #id).focus()与$( #id)[0].focus()没有区别,因为id必须是唯一的.如果同一页面出现多个相同的ID(这是不符合w3c规范的),$(#id)也只会拿到第一个该ID,后面的 ...