首页 > 代码库 > HAproxy动静分离

HAproxy动静分离

 一:HAproxy

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

二:实现HAproxy动静分离

 1)试验拓扑图

wKioL1Qe9MugkP_MAADGosqwg_k327.jpg


 2)试验环境准备

  S1与S2跟HAproxy服务器在一个网段内,选择vment3.

1)修改S1
[root@HAproxy ~]# ifconfig eth1 192.168.16.1/24 up   # 给eth1配置ip地址
[root@node0 ~]# ifconfigeth0      Link encap:Ethernet  HWaddr 00:0C:29:B2:AD:BA  
         inet addr:172.16.16.2 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.1.1  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)
         
2)修改S2         
[root@s1 ~]# ifconfig eth0 192.168.1.2/24 up在s1设置好相关配置,选择虚拟机上的VMnet3与haproxy上的eth1的同一通信通道,再配置IP地址和默认网关接口,而后再提供不同的页面以便测试用;
[root@s1 ~]# route add defaulte gw 192.168.27.18  # 网关指向haproxy主机的eth1地址
[root@s1 ~]# ping 192.168.27.10  # ping一下haproxy的节点看是否ping通
[root@s1 ~]# vim /var/www/html/index.html<h1>
[root@s1 ~]# service httpd start # 配置好之后就把web服务启动起来,再访问测试一下,测试的连接改为桥接方式 
[root@s2 ~]# ifconfig eth0 192.168.1.16/24 up
[root@s2 ~]# route add defaulte gw 192.168.27.18  # 网关指向haproxy主机的eth1地址
[root@s2 ~]# ping 192.168.27.10  # ping一下haproxy的节点看是否ping通
[root@s2 ~]# vim /var/www/html/index.php
    <h1>hello word</h1>
    <?php
     phpinfo();
     ?>
[root@s2 ~]# service httpd start # 配置好之后就把web服务启动起来,再访问测试一下,测试的连接改为桥接方式

3)修改haproxy配置文件
[root@HAproxy haproxy]# vim haproxy.cfg
frontend main
    bind :80
   # default_backend webservers
    acl url_static path_end -i .css .js .html
    acl url_dynamic path_end -i .php
    use_backend static if url_static
    default_backend dynamic
backend static
   # balance roundrobin
   # cookie webservers insert nocache
    server s1 192.168.1.2:80 check inter 3000 rise 2 fall 2 maxconn 5000
backend dynamic
    server s2 192.168.1.16: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 llh:mageedu
    stats admin if TRUE

三:启动HAproxy进行测试

1) service haproxy start

2)登录我们的配置页面

wKiom1Qe82SRegStAAKnvedzjrE266.jpg

wKioL1Qe86_TO9EbAAQwRkFPhAU039.jpg

3)测试动静网页是否分离

 访问静态网页

wKiom1Qe882TNb0nAAC3664rqNs593.jpg

看静态网页为我们设置的www.helloword.com


4)访问动态网页

wKioL1Qe9CzDwQ41AAHwhv7vWL8240.jpg


看动态网页为我们设置的hello Word 服务器


OK 我们的动静分离已经实现了.

本文出自 “slayer” 博客,请务必保留此出处http://slayer.blog.51cto.com/4845839/1556783

HAproxy动静分离