一:HAproxy

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

二:实现HAproxy动静分离

 1)试验拓扑图

HAproxy动静分离_第1张图片


 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

[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     

hello word

     [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)登录我们的配置页面

HAproxy动静分离_第2张图片

HAproxy动静分离_第3张图片

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

 访问静态网页

HAproxy动静分离_第4张图片

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


4)访问动态网页

HAproxy动静分离_第5张图片


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


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