HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。
HAProxy特别 适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的 运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。
HAProxy实现了一种事件驱动,单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制、系统调度器限制以及无处不在的锁限 制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。
说明:
1.由于测试环境虚拟机有限,此处将静态页面和图片放在了一台机器上
2.由于测试环境虚拟机有限,此处动态页面和静态页面各提供一台机器,不考虑单点故障
3.用户看到的服务器为HAproxy对外提供的ip地址,看不到后面的各服务器组
4.此处不涉及php页面与数据库的交互内容
准备环境
功用 |
ip地址 |
安装软件 |
操作系统 |
反向代理服务器 |
192.168.20.136 |
Haproxy |
CentOS6.9 |
静态页面服务器 |
192.168.20.138 |
httpd |
centos6.9 |
动态页面服务器 |
192.168.20.139 |
httpd、php |
centos6.9 |
安装HAproxy
yum install haproxy -y
启动配置文件选项
vi /etc/rsyslog.conf
启用一下两行
$ModLoad imudp
$UDPServerRun 514
添加以下一行
local2.* /var/log/haproxy.log
配置haproxy
(一般yum安装软件的存放路径可用rpm -ql haproxy来查看)
(下面内容找到相应位置直接全部替换,开头其它原文件默认即可)
vim /etc/haproxy/haproxy.cfg
frontend web *:80 # *表示haproxy监听所有地址,监听的端口为80
# 定义访问控制,表示以url以.css .js .html .php结尾的分别调度到哪台服务器上访问
acl url_static path_end -i .css .js .html
acl url_dynamic path_end -i .php
# usr_backend表示使用backend服务,if表示如果满足url_static这个条件就调度到这台服务器上
use_backend static if url_static
default_backend dynamic
backend static # 定义调用后端的静态页面的服务器上
server node1 192.168.20.138:80 check inter 3000 rise 2 fall 2 maxconn 5000
backend dynamic # 定义调用后端的动态页面的服务器上
server node2 192.168.20.139: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 lijunmin:linux # 访问时需要验证登录
stats admin if TRUE # 如果登录成功就可以管理在线服务器
启动haproxy:
Service haproxy start
在192.168.20.138准备静态页面
Yum -y install httpd
vi /var/www/html/index.html
hello,您访问的是静态页面
启动httpd:
Service httpd start
在192.168.20.139准备动态页面
Yum -y install httpd php
vi /var/www/html/index.php
启动httpd:
Service httpd start
测试
浏览器输入http://192.168.20.136/查看是否显示动态页面.
浏览器输入http://192.168.20.136/index.html查看是否显示静态页面.
分别显示准备好的内容即表示haproxy动静分离搭建完成.