CentOS 6.5 HAProxy+apache实现web服务动静分离

简介:

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。

   HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。

   HAProxy实现了一种事件驱动,单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。
                                                                         --来自百度百科

实现过程图:

wKioL1Npn2qDdiOwAAEUH5H3E2Y175.jpg


   第一步:安装httpd、php以及haproxy,这里我们直接用yum来安装即可,这里我们使用三台虚拟机来做测试,前端一台haproxy做调度,后端两台httpd服务器提供web服务,在做动静分离时时前端haproxy来判断动态和静态内容分别调度到哪台服务器上;

[root@node0 ~]# yum -y install httpd php haproxy

   第二步:安装好之后给这三台虚拟配置好相关的网络设备以及提供相关的测试页面等,在eth1这张网卡上选择相同的一个通信通道,node0这台虚拟机上haproxy的主机,node1和node2是不同的两台后端提供web服务器的虚拟主机;

wKiom1NpycrTigk9AAFTVY806zA030.jpg

[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  
         inet addr:192.168.27.10  Bcast:192.168.27.255  Mask:255.255.255.0
         inet6 addr: fe80::20c:29ff:feb2:adc4/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0 frame:0
         TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000 
         RX bytes:0 (0.0 b)  TX bytes:468 (468.0 b)
[root@node0 ~]# 

在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
   # 定义访问控制,表示以url以.css .js .html .php结尾的分别调度到哪台服务器上访问
    acl url_static       path_end       -i .css .js .html    
    acl url_dynamic      path_end       -i .php

    # usr_backend表示使用backend服务,if表示如果满足url_static这个条件就调度到这台服务器上
    use_backend        static          if url_static    
    default_backend    dynamic

backend static   # 定义调用后端的静态页面的服务器上
    server node1 192.168.27.18:80 check inter 3000 rise 2 fall 2 maxconn 5000
backend dynamic  # 定义调用后端的动态页面的服务器上
    server node2 192.168.27.19:80 check inter 3000 rise 2 fall 2 maxconn 5000   
listen statspage # 定义监控管理接口的界面
    bind *:8888    # 定义访问页面端口
    stats enable    # 启用管理界面
    stats hide-version    # 隐藏版本
    stats uri /admin?stats    # 访问路径
    stats auth xiao:linux    # 访问时需要验证登录
    stats admin if TRUE    # 如果登录成功就可以管理在线服务器

第四步:登录到我们配置好的管理界面:

wKioL1NpyEvQG7J1AAFJFJbGr34770.jpg

wKioL1NpyJGDqzq2AAXT8Ek41q0971.jpg

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

wKioL1NpyMmRMgcTAAC7idNwGA8311.jpg

wKiom1NpyRCSCcioAAJBUPeM-gA579.jpg

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

wKioL1NpyUSDI2rLAAVLyURyTn4797.jpg

wKioL1NpyWbjjJwLAAV5MtRD1BY046.jpg


总结:

   HAProxy是一款比较轻量级的负载均衡服务器,特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。










本文转自 wei0164 51CTO博客,原文链接:http://blog.51cto.com/tanxw/1407694,如需转载请自行联系原作者
目录
相关文章
|
Linux 网络安全 Apache
CentOS 7.2配置Apache服务httpd(上)
CentOS 7.2配置Apache服务httpd(上)
1081 1
|
Linux 网络安全 数据安全/隐私保护
centos开启samba服务
通过以上步骤,您已成功在CentOS系统上安装、配置并启动了Samba服务,并且可以通过Windows或Linux客户端访问共享目录。Samba为跨平台文件共享提供了强大的支持,配置灵活且易于管理。无论是简单的家庭网络共享还是企业级文件服务器,Samba都能胜任。通过合理的配置和访问控制,您可以确保文件共享的安全性和便利性。
1773 74
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
2303 25
|
安全 Linux 网络安全
如何在 CentOS 7 上为 Apache 创建 SSL 证书
如何在 CentOS 7 上为 Apache 创建 SSL 证书
494 0
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
605 20
|
存储 Linux Docker
CentOS 7.6安装Docker实战案例及存储引擎和服务进程简介
关于如何在CentOS 7.6上安装Docker、介绍Docker存储引擎以及服务进程关系的实战案例。
951 3
CentOS 7.6安装Docker实战案例及存储引擎和服务进程简介
|
Linux
CentOS 7.x时间同步服务chrony配置详解
文章详细介绍了在CentOS 7.x系统中如何安装和配置chrony服务,以及它与ntpd服务的对比,强调了chrony在时间同步方面的高效性和准确性。
1834 2
CentOS 7.x时间同步服务chrony配置详解
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
1603 2
|
监控 安全 Linux
CentOS7下安装配置ntp服务的方法教程
通过以上步骤,您不仅能在CentOS 7系统中成功部署NTP服务,还能确保其配置合理、运行稳定,为系统时间的精确性提供保障。欲了解更多高级配置或遇到特定问题,提供了丰富的服务器管理和优化资源,可作为进一步学习和求助的平台。
3252 1
|
Linux PHP Apache
CentOS 7.2配置Apache服务httpd(下)
CentOS 7.2配置Apache服务httpd(下)
361 1

热门文章

最新文章