HAProxy+apache实现web服务动静分离
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。
HAProxy实现了一种事件驱动,单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。
--来自百度百科
实现过程图:

第一步:安装httpd、php以及haproxy,这里我们直接用yum来安装即可,这里我们使用三台虚拟机来做测试,前端一台haproxy做调度,后端两台httpd服务器提供web服务,在做动静分离时时前端haproxy来判断动态和静态内容分别调度到哪台服务器上;
| [root@node0 ~]# yum -y install httpd php haproxy |
第二步:安装好之后给这三台虚拟配置好相关的网络设备以及提供相关的测试页面等,在eth1这张网卡上选择相同的一个通信通道,node0这台虚拟机上haproxy的主机,node1和node2是不同的两台后端提供web服务器的虚拟主机;

| [root@node0 ~]# ifconfig eth1 192.168.27.10/24 up # 给eth1配置ip地址 [root@node0 ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:B2:AD:BA inet addr:172.16.27.88 Bcast:172.16.255.255 Mask:255.255.0.0 inet6 addr: fe80::20c:29ff:feb2:adba/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:11122303 errors:0 dropped:0 overruns:0 frame:0 TX packets:1193136 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:697850934 (665.5 MiB) TX bytes:74549101 (71.0 MiB) eth1 Link encap:Ethernet HWaddr 00:0C:29:B2:AD:C4 |
在node1和node2上设置好相关配置,选择虚拟机上的VMnet2与haproxy上的eth1的同一通信通道,再配置IP地址和默认网关接口,而后再提供不同的页面以便测试用;
|
[root@node1 ~]# ifconfig eth0 192.168.27.18/24 up [root@node1 ~]# route add defaulte gw 192.168.27.18 # 网关指向haproxy主机的eth1地址 [root@node1 ~]# ping 192.168.27.10 # ping一下haproxy的节点看是否ping通 [root@node1 ~]# vim /var/www/html/index.html <h1>node1.tanxw.com</h1> [root@node1 ~]# service httpd start # 配置好之后就把web服务启动起来,再访问测试一下,测试的连接改为桥接方式 |
|
[root@node2 ~]# ifconfig eth0 192.168.27.19/24 up [root@node2 ~]# route add defaulte gw 192.168.27.18 # 网关指向haproxy主机的eth1地址 [root@node2 ~]# ping 192.168.27.10 # ping一下haproxy的节点看是否ping通 [root@node2 ~]# vim /var/www/html/index.php <h1>node2.tanxw.com</h1> <?php phpinfo(); ?> [root@node2 ~]# service httpd start # 配置好之后就把web服务启动起来,再访问测试一下,测试的连接改为桥接方式 |
第三步:配置haproxy的相关配置信息;
| ############## 以上的使用默认配置就可以了 #######################
frontend web *:80 # *表示haproxy监听所有地址,监听的端口为80 # usr_backend表示使用backend服务,if表示如果满足url_static这个条件就调度到这台服务器上 backend static # 定义调用后端的静态页面的服务器上 |
第四步:登录到我们配置好的管理界面:


第五步:配置好相关的配置之后就可以测试一下了,


最后我们再分别对这两个页面的请求做一下压力测试看看:


总结:
HAProxy是一款比较轻量级的负载均衡服务器,特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。
本文出自 “温水煮青蛙” 博客,请务必保留此出处http://tanxw.blog.51cto.com/4309543/1407694
HAProxy+apache实现web服务动静分离的更多相关文章
- CentOS 6.5环境下使用HAProxy+apache实现web服务的动静分离
HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持 ...
- Haproxy 基础详解及动静分离配置
haproxy 介绍 1 工作在ISO 七层 根据http协议(或者工作在ISO四层 根据tcp协议) 提供web服务的负载均衡调度器 负载均衡调度器分类 工作在四层: # lvs 工作在七层: # ...
- HAproxy的安装配置及动静分离
/////////////////////////////目录//////////////////////////////////////////一.安装HAproxy二.编写HAproxy启动脚本三 ...
- WEB服务动静结合
基本介绍 1)WEB服务仅能处理静态请求,如果处理动态请求则需要对应的动态资源服务软件,即:应用程序服务软件 2)常见的应用服务软件有:PHP.Java.Python等 3)问题:WEB服务如何与外部 ...
- 【nginx网站性能优化篇(2)】反向代理实现Apache与Nginx的动静分离(LNMPA)
为什么要使用反向代理 具体请参考这篇博文:[Linux常识篇(1)]所谓的正向代理与反向代理 在虚拟机上配置反向代理的步骤 首先假设你已经假设好了LNMP架构了,这时我们还要安装Apache和php, ...
- 【原创】Apache和Tomcat实现动静分离
集群中每个节点都启用了页面静态化功能,所以,为了防止单个节点刷新造成找不到页面问题,将每个节点刷新的页面都放入apache虚拟目录下,由apache统一来处理.静态页面由apache处理,动态页面仍然 ...
- HAproxy+varnish动静分离部署wordpress
author:JevonWei 版权声明:原创作品 实验背景:将wordpress应用部署在后端服务器上,使用HAProxy做代理服务器,Varnish做缓存服务器,后端有四台web服务器,web1和 ...
- HAproxy指南之haproxy实现动静分离(案例篇)
HAproxy指南之haproxy实现动静分离(案例篇) 转自 https://blog.51cto.com/blief/1751806 实际应用环境中,往往需要根据业务请求将相关不同请求跳转 ...
- Nginx之动静分离
为什么要动静分离呢? 拿Nginx来说,Nginx是Web服务器,仅仅只能处理静态资源(例如js,img,css等等),而Tomcat属于应用服务器既能处理静态资源又能处理动态资源(例如jsp,fre ...
随机推荐
- linux下一个Oracle11g RAC建立(四)
linux下一个Oracle11g RAC建立(四) 三.配置共享存储 配置ASM管理准备 1)OCRDISK :存储CRS资源配置信息 2)VOTEDISK:仲裁盘.记录节点状态 3)DataDis ...
- 公交部署wifi热点,是否有必要?
小城市.大城市,公交车永远匆匆路过的风景,他带我们到四方.马上.一些公交车也已覆盖免费wifi,只有在我看来,,路上wifi似乎没有太大用处.何出此言? 相比而言.在长途车.飞机.火车上构建wifi热 ...
- Ubuntu 中查看内核版本和系统版本的三个命令
一.查看内核版本:cat /proc/version 二.查看内核版本:uname -a 三.查看系统版本:lsb_release -a 四.查看发行版类型:cat /etc/issue
- NPOI实现Excel导入导出
NPOI实现Excel的导入导出,踩坑若干. Cyan是博主[Soar360]自2014年以来开始编写整理的工具组件,用于解决现实工作中常用且与业务逻辑无关的问题. 什么是NPOI? NPOI 是 P ...
- 【百度地图API】——国内首款团购网站的地图插件
原文:[百度地图API]--国内首款团购网站的地图插件 摘要: 本文介绍了一款应用在团购网站上的地图插件,适用于目前非常流行的团购网站.使用这款地图插件,无需任何编程技术,你就把商家的位置轻松地标注在 ...
- Android结构分析Android智能指针(两)
笔者:刘蒿羽 博客:http://blog.csdn.net/liuhaoyutz Android版本号:4.4.2 在上一篇文章中,我们分析了Android智能指针中的强指针sp,本文我们来分析弱指 ...
- crm创建和编辑全局选项集
一个选项集就是可包含在一个实体中的某种类型的字段.它定义一组选项.当一个选项集显示在窗口中时,将使用下拉列表控件.当在 Advanced Find 中显示时,则使用选择列表控件.有时,开发者将选项集称 ...
- struts2的Action该方法不能去
最近做的一个特征,使用struts2,input标签内容,并与相应的内容背景的实体类,当提交方法,无法进入action该方法和程序没有报错被,检验N通方法还没有找到,查找终于找到了,它是input标签 ...
- windows下利用OpenVPN搭建VPNserver
一.OpenVPN是一款功能强大,可跨平台(支持Win 2000/XP/2003, Linux, Mac OS X, Solaris, FreeBSD, NetBSD, 和 OpenBSD)使用的SS ...
- IOS中UIDatePicker
UIDatePicker 1.常见属性 /* 样式 UIDatePickerModeTime,时间 UIDatePickerModeDate,日期 UIDatePickerModeDateAndTim ...