实现动静分离,附件服务器等功能
clients |||||||----------------------------| Haproxy | |------------|-------------| | php1 php2 img1 att附件服务器客户端直接使用访问论坛
然后静态元素调度到img服务器 如果用户下载附件的话(发帖的时候上传),使用域名是upload.upl.com,实际访问的是att服务器。 能够使用短域名访问upl.com自动跳转到长域名 防盗链---> Haproxy
Haproxy
br0 10.1.1.21 virbr1 1.1.1.1php1
1.1.1.128 php2 1.1.1.129 img1 1.1.1.130 att 10.1.1.20 <---- upload.upl.com 一、部署haproxy1、安装软件
2、编辑配置文件
# vim haproxy.cfgglobal
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节点