首页 > 代码库 > HAproxy动静分离
HAproxy动静分离
一:HAproxy
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。
HAProxy特别 适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的 运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。
HAProxy实现了一种事件驱动,单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制、系统调度器限制以及无处不在的锁限 制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。-----百度百科
二:实现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<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)登录我们的配置页面
3)测试动静网页是否分离
访问静态网页
看静态网页为我们设置的www.helloword.com
4)访问动态网页
看动态网页为我们设置的hello Word 服务器
OK 我们的动静分离已经实现了.
本文出自 “slayer” 博客,请务必保留此出处http://slayer.blog.51cto.com/4845839/1556783
HAproxy动静分离