实现动静分离,附件服务器等功能

   clients
   |||||||----------------------------|
   Haproxy       |
  |------------|-------------|     |
  php1     php2   img1   att附件服务器

客户端直接使用访问论坛

然后静态元素调度到img服务器
如果用户下载附件的话(发帖的时候上传),使用域名是upload.upl.com,实际访问的是att服务器。
能够使用短域名访问upl.com自动跳转到长域名
防盗链

  ---> Haproxy

Haproxy

 br0 10.1.1.21
 virbr1 1.1.1.1

php1

 1.1.1.128
php2
 1.1.1.129
img1
 1.1.1.130
att
 10.1.1.20  <---- upload.upl.com

一、部署haproxy

1、安装软件

2、编辑配置文件

# vim haproxy.cfg

global

 log 127.0.0.1 local0 info
 user  haproxy
 group  haproxy
 daemon
 pidfile /usr/local/haproxy/haproxy.pid
defaults
 log global
 mode http
 option httplog
 option dontlognull
 retries 3
 option redispatch
 timeout client 50000
 timeout server 50000
 timeout connect 60000
        option httpchk HEAD /ok.html HTTP/1.0
frontend http-in
        bind *:80
        mode http
        option httpclose
        option forwardfor
 acl url_static   path_end .gif .png .jpg .css .js
 acl img_element  path_beg        /p_w_picpaths/
 acl upload_p_w_upload path_beg /p_w_upload/
 acl short_domain hdr(Host) -i upl.com
 acl right_ref hdr_reg(Referer) -i upl.com
 acl steal_link path_end no.png
        acl valid_method method GET HEAD POST OPTIONS
        block if !valid_method
 redirect prefix code 301 if short_domain
 redirect prefix code 301 if upload_p_w_upload
 redirect location code 302 if !right_ref  url_static !steal_link
 use_backend imgservs if url_static or img_element
        default_backend orgservs
backend orgservs
        balance roundrobin
 cookie SERVERID insert indirect
        server web1 1.1.1.128:80 cookie web1 weight 1 check inter 2000 rise 2 fall 2
        server web2 1.1.1.129:80 cookie web2 weight 1 check inter 2000 rise 2 fall 2
backend imgservs
 server img1 1.1.1.130:80 weight 1 check inter 2000 rise 2 fall 2
listen stats :8888 
       mode http 
       transparent 
       stats uri / haproxy-stats 
       stats realm Haproxy \ statistic 
       stats auth admin:admin

二、部署后端web服务器

1、解压论坛代码到其中一个php节点,并且到时候仅仅让harproxy调度到该节点,进行向导安装论坛。

 注意:仅仅解压到一个节点就可以。

2、把同样的代码拷贝一份到图片服务器

 完全拷贝,原因是论坛不是自己设计的,所以考虑到复杂性,就不管是什么文件都拷贝。

 

三、部署附件服务器

 搭建ftp服务端
 ftp目录和web服务是一致的。
 ftp传输的文件和web服务产生的文件,都能够让相互的进程能够有权限操作。
  方法:ftp进程使用的有效身份就是apache(和web服务进程一样)

# passwd apache

# usermod -d "/var/www/html" apache

# vim /etc/vsftpd/vsftpd.conf

chroot_local_user=YES

附件服务器的网站目录/var/www/html,注意权限
 目录下仅仅需要p_w_upload

四、安装论坛

---> haproxy

在论坛的管理后台设定附件选项。
 通过ftp的技术把客户端上传的附件传输到附件服务器

站点附件地址:

FTP服务器地址: 10.1.1.20

FTP上传目录:/p_w_upload  <---必须锁定ftp根目录

再去把论坛代码同步到另外一个php节点