HAproxy实现web站点的动静分离

 

 

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

 

 

HAproxy实现web站点的动静分离_第1张图片

说明:

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

以上四台都用虚拟机测试,全部关闭防火墙service iptables stop.

 

安装HAproxy

yum install  haproxy -y

 

启动配置文件选项 

vim /etc/rsyslog.conf

# Provides UDP syslog reception                  //去掉下面两行注释,开启UDP监听

$ModLoad imudp

$UDPServerRun 514

local2.* /var/log/haproxy.log                  //添加此行

重启rsyslog

service rsyslog restart

 

配置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实现web站点的动静分离_第2张图片

启动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/查看是否显示动态页面.

 

HAproxy实现web站点的动静分离_第3张图片

浏览器输入http://192.168.20.136/index.html查看是否显示静态页面.

 

HAproxy实现web站点的动静分离_第4张图片

分别显示准备好的内容即表示haproxy动静分离搭建完成.

 

查看各个server的健康状态可以登录

http://192.168.20.136:8888/admin?stats

HAproxy实现web站点的动静分离_第5张图片

 

HAproxy实现web站点的动静分离_第6张图片

 

 

 

 

 

你可能感兴趣的:(架构)