本节我们来讲一讲haproxy的相关知识。
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代 理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
好的下面我们就来实现一下这个过程。
实验拓扑图:
代理服务器为内部的2台WEB服务进行代理,其中一台是动态内容的服务器,另一台是静态内容的服务器,haproxy会自动识别出请求的内容为动态还是静态,从而将请求分发到各自的服务器进行响应。
动态服务器
该服务器中安装了PHP服务,这里我是直接yum安装的。因此可以响应PHP请求,在主页中放的是一个PHP网页,注意,相应的在httpd服务器的配置文件中需要修改的一些选项还是得修改的。
静态服务器
该服务器中没有安装PHP,只在跟目录中放了一个普通的主页面
代理服务器
直接yum安装haproxy
修改配置文件
[[email protected] ~]# vim /etc/haproxy/haproxy.cfg
#--------------------------------------------------------------------- # Example configuration for a possible web application. See the # full configuration options online. # # http://haproxy.1wt.eu/download/1.4/doc/configuration.txt # #--------------------------------------------------------------------- #--------------------------------------------------------------------- # Global settings #--------------------------------------------------------------------- global # to have these messages end up in /var/log/haproxy.log you will # need to: # # 1) configure syslog to accept network log events. This is done # by adding the ‘-r‘ option to the SYSLOGD_OPTIONS in # /etc/sysconfig/syslog # # 2) configure local2 events to go to the /var/log/haproxy.log # file. A line like the following can be added to # /etc/sysconfig/syslog # # local2.* /var/log/haproxy.log # log 127.0.0.1 local2 chroot /var/lib/haproxy #全局配置端不需要改动 pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon # turn on stats unix socket stats socket /var/lib/haproxy/stats #--------------------------------------------------------------------- # common defaults that all the ‘listen‘ and ‘backend‘ sections will # use if not designated in their block #--------------------------------------------------------------------- defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 #--------------------------------------------------------------------- # main frontend which proxys to the backends #--------------------------------------------------------------------- frontend main bind :80 #绑定端口 acl url_static path_beg -i /static /images /javascript /stylesheets #定义静态内容前缀 acl url_static path_end -i .jpg .gif .png .css .js .html #定义静态内容后缀 use_backend static if url_static default_backend app #--------------------------------------------------------------------- # static backend for serving up images, stylesheets and such #--------------------------------------------------------------------- backend static balance roundrobin server static 172.16.6.1:80 check #定义后端静态内容服务器 #--------------------------------------------------------------------- # round robin balancing between the various backends #--------------------------------------------------------------------- backend app balance roundrobin server app1 172.16.6.2:80 check #定义后端动态内容服务器
配置完成启动服务
下面就可以开始测试了
静态网页:
动态网页:
OK,这样我们的一个最简单的动静分离就实现了,谢谢!
时间: 2024-10-25 01:56:25