HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在时下的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
实验环境:centos-6.4
HAproxy:172.16.8.10&&192.168.100.254
node1:192.168.100.1 静态服务器
node2:192.168.100.2 动态服务器
通过前端HAproxy反向代理上游web站点服务器,实现动静分离的效果来提高网站的快速性和安全性!
-----------------------------------------------------------------------------------------
1.现在HAproxy安装和配置前端服务器
[root@haproxy ~]# yum install haproxy
2.安装完毕后查看都生成
[root@haproxy ~]# rpm -ql haproxy /etc/haproxy /etc/haproxy/haproxy.cfg /etc/logrotate.d/haproxy /etc/rc.d/init.d/haproxy /usr/bin/halog /usr/sbin/haproxy
3.编辑HAproxy主配置文件,添加代理到后端的规则
[root@haproxy haproxy]# vim haproxy.cfg global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 5000 最大连接数 user haproxy 服务使用户 group haproxy 使用的组 daemon 守护进程 # turn on stats unix socket stats socket /var/lib/haproxy/stats ---------------------------------------------------------------------- 上述是全局段,一般不用什么修改。 ---------------------------------------------------------------------- defaults mode http 使用协议 log global 全局日志记录 option httplog 详细记录http日志 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 30000 listen stats 监听的管理后台 mode http 服务模式 bind 172.16.8.10:888 指定ip地址和端口号 stats enable 开启状态页面 stats hide-version 不显示头部信息 stats uri /haproxyadmin?stats 访问的路径 stats realm Haproxy\ Statistics 加密方式 stats auth admin:admin 认证的用户和密码 stats admin if TRUE frontend http-in 监听的前端服务 bind *:80 端口 mode http log global option httpclose option logasap option dontlognull capture request header Host len 20 capture request header Referer len 60 acl url_static path_beg -i /static /p_w_picpaths /javascript /stylesheets /css CAL访问规则的动态页面 acl url_static path_end -i .jpg .jpeg .gif .png .js 匹配静态页面 use_backend static_servers if url_static 匹配到的 default_backend dynamic_servers 默认交给那个服务器 backend static_servers 定义后端服务器的静态组 balance roundrobin 算法 server web1 192.168.100.1:80 check maxconn 8000 # server web2 192.168.100.2:80 check maxconn 8000 backend dynamic_servers 定义到后端服务器的动态组 balance source 算法 # server web1 192.168.100.1:80 check maxconn 2000 server web2 192.168.100.2:80 check maxconn 2000
查看HAproxy服务器状态图形管理界面
node1上配置静态服务器使用apache,安装配置请参考前面的博客
1.解压论坛程序包放入访问文件目录下,启动服务
[root@node1 ~]# unzip JspRun\!_6.0.0_GBK.zip ^C [root@node1 ~]# cd upload/* /var/www/html/ -r^C [root@node1 ~]# service httpd start
2.node2上搭建tomcat服务,详情参考前面博客
[root@node2 conf]# vim server.xml 添加访问的host的路径文件 <Host name="www.yulong.com" appBase="/web/app" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="yulong_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> <Context path="/" docBase="/web/app" /> </Host>
3.解压论坛程序到相应的目录下,启动tomcat
[root@node1 ~]# unzip JspRun\!_6.0.0_GBK.zip [root@node1 ~]# cd upload/* /web/app -r [root@node2 ~]# catalina.sh start
4.启动HAproxy服务
[root@haproxy haproxy]# service haproxy start
5.测试停止静态服务器看看是否不显示静态的文件
[root@node1 ~]# service httpd stop Stopping httpd: [ OK ]
7.在启动静态服务器验证是否正常
[root@node1 ~]# service httpd start Stopping httpd: [ OK ]