FastDFS+nginx+keepalived集群搭建

Posted cac2020

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FastDFS+nginx+keepalived集群搭建相关的知识,希望对你有一定的参考价值。

安装环境

  nginx-1.6.2
  libfastcommon-master.zip
  FastDFS_v5.05.tar.gz(http://sourceforge.net/projects/fastdfs/files/)
  fastdfs-nginx-module_v1.16.tar.gz
  ngx_cache_purge-2.3.tar.gz(用于清除指定url的缓存

  keepalived

  VM虚拟机redhat6.5-x64:192.168.1.201、192.168.1.202、192.168.1.203、192.168.1.204、
              192.168.1.201、192.168.1.202、192.168.1.203、192.168.1.204、
  Xshell4

部署方案

  

安装步骤

  步骤一:203、204、205、206、207、208安装FastDFS

  参考:https://www.cnblogs.com/cac2020/p/9534967.html

  步骤二:配置跟踪器(192.168.1.203 、192.168.1.204 节点)

  

    mkdir -p /fastdfs/tracker&& cp /etc/fdfs/tracker.conf.sample tracker.conf && vim /etc/fdfs/tracker.conf
修改内容:
    base_path=/fastdfs/tracker  
    #关键点:轮询分配到各个group里
    store_lookup=0 
启动:
    /etc/init.d/fdfs_trackerd start

  步骤三:配置FastDFS存储(192.168.1.205-208)

  205、206作为group1 , 207、208作为group2

  

mkdir -p /fastdfs/storage && cp /etc/fdfs/storage.conf.sample storage.conf && vim /etc/fdfs/storage.conf 
修改内容:
disabled=false  
group_name=group1      #组名,第一组(205206)为 group1 第二组(207208)为 group2 
port=23000             #storage 端口号,同组的端口号必须相同 
base_path=/fastdfs/storage 
store_path_count=1     #存储路径个数 需要和 store_path 个数匹配 
store_path0=/fastdfs/storage #设置存储路径 
tracker_server=192.168.1.203:22122 #tracker 服务器的 ip 和端口 
tracker_server=192.168.1.204:22122 #多个 tracker 直接添加多条记录 
http.server_port=8888  #设置 http 端口号
启动:
/etc/init.d/fdfs_storaged start

  到此为止我们的 FastDFS 集群环境已经搭建完成!!!!

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

   步骤四:4个存储节点(205 206 207 208)整合Nginx

1.安装整合包fastdfs-nginx-module_v1.16.tar.gz
tar -zxvf /usr/local/software/fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/fast/ 
vim /usr/local/fast/fastdfs-nginx-module/src/config 
修改内容:去掉第四行中的 local 文件层次

2.安装Nginx 加载fastdfs-nginx-module模块
tar -zxvf /usr/local/software/nginx-1.6.2.tar.gz -C /usr/local 
cd /usr/local/nginx-1.6.2 && ./configure --add-module=/usr/local/fast/fastdfs-nginx-module/src/ 
重新编译命令: make && make install

3.修改整合模块配置
cp /usr/local/fast/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/  && vim /etc/fdfs/mod_fastdfs.conf
修改内容:
注意:第一组(205206)和第二组(207208) 节点修改内容,只有组名不同 
connect_timeout=10 
tracker_server=192.168.1.203:22122 
tracker_server=192.168.1.204:22122 
storage_server_port=23000 
url_have_group_name = true 
store_path0=/fastdfs/storage 
group_name=group1 #第一组为 group1  第二组为 group2 
group_count = 2 
 
 
#追加以下内容 
[group1] 
group_name=group1 
storage_server_port=23000 
store_path_count=1 
store_path0=/fastdfs/storage 
 
[group2] 
group_name=group2 
storage_server_port=23000 
store_path_count=1 
store_path0=/fastdfs/storage
4.复制配置文件
cd /usr/local/fast/FastDFS/conf/ && cp http.conf mime.types /etc/fdfs/
5.创建软连接,在/fastdfs/storage 文件存储目录下创建软连接,将其链接到实际存放数据的目录。 
命令: ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00 
6.修改 Nginx 配置文件4个节点 
命令:vim usr/local/nginx.conf 
修改内容:
listen 8888; 
server_name localhost; 
location ~/group([0-9])/M00 { 
    #alias /fastdfs/storage/data; 
    ngx_fastdfs_module; 
}
启动4个节点Nginx: /usr/local/nginx/sbin/nginx

  步骤五:在2个跟踪器节点上安装nginx为4个存储节点提供负载均衡

1.安装ngx_cache_purge-2.3.tar.gz(清除指定url的缓存)
tar -zxvf /usr/local/software/ngx_cache_purge-2.3.tar.gz –C /usr/local/fast/

2.安装Nginx  加入 ngx_cache_purge (加入清除缓存模块)
tar -zxvf /usr/local/software/nginx-1.6.2.tar.gz -C /usr/local 
cd /usr/local/nginx-1.6.2 && ./configure --add-module=/usr/local/fast/ngx_cache_purge-2.3/src/  
重新编译命令: make && make install

3.修改nginx配置
vim /usr/local/nginx/conf/nginx.conf
修改内容:
events { 
    worker_connections  1024;  
    use epoll; 
} 
http { 
    include       mime.types; 
    default_type  application/octet-stream; 
    sendfile        on; 
    tcp_nopush     on; 
    keepalive_timeout  65; 
    #设置缓存 
    server_names_hash_bucket_size 128;    
    client_header_buffer_size 32k;    
    large_client_header_buffers 4 32k;    
    client_max_body_size 300m;   
 
    proxy_redirect off; 
    proxy_set_header Host $http_host; 
   
    proxy_set_header Cookie $http_cookie; 
   
    proxy_set_header X-Real-IP $remote_addr; 
   
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
 
    proxy_connect_timeout 90;    
    proxy_read_timeout 90;    
    proxy_send_timeout 90;    
    proxy_buffer_size 16k;    
    proxy_buffers 4 64k;    
    proxy_busy_buffers_size 128k;    
    proxy_temp_file_write_size 128k;   
    #设置缓存存储路径、存储方式、分配内存大小、磁盘最大空间、缓存期限  
    proxy_cache_path /fastdfs/cache/nginx/proxy_cache levels=1:2 
    keys_zone=http-chche:200m max_size=1g inactive=30d; 
    proxy_temp_path /fastdfs/cache/nginx/proxy_cache/tmp; 
 
    # weight 权重  max_fails 失败重试次数 fail_timeout 连接失败超时时间 
    #设置 group1 的服务器 
    upstream fdfs_group1 { 
         server 192.168.1.205:8888 weight=1 max_fails=2 fail_timeout=30s; 
         server 192.168.1.206:8888 weight=1 max_fails=2 fail_timeout=30s; 
    } 
 
    #设置 group2 的服务器 
    upstream fdfs_group2 { 
         server 192.168.1.207:8888 weight=1 max_fails=2 fail_timeout=30s; 
         server 192.168.1.208:8888 weight=1 max_fails=2 fail_timeout=30s; 
    } 
 
 
 server { 
        listen       8000; 
        server_name  localhost; 
        #charset koi8-r; 
        #access_log  logs/host.access.log  main; 
 
        #设置 group 的负载均衡参数 
        location /group1/M00 { 
           proxy_next_upstream http_502 http_504 error timeout invalid_header; 
            proxy_cache http-cache; 
            proxy_cache_valid  200 304 12h; 
            proxy_cache_key $uri$is_args$args; 
            proxy_pass http://fdfs_group1; 
            expires 30d; 
        } 
 
         location /group2/M00 { 
            proxy_next_upstream http_502 http_504 error timeout invalid_header; 
            proxy_cache http-cache; 
            proxy_cache_valid 200 304 12h; 
            proxy_cache_key $uri$is_args$args; 
            proxy_pass http://fdfs_group2; 
            expires 30d; 
        } 
 
 
        #设置清除缓存的访问权限 
        location ~/purge(/.*) { 
            allow 127.0.0.1; 
            allow 192.168.1.0/24; 
            deny all; 
            proxy_cache_purge http-cache $1$is_args$args; 
        } 
        #error_page  404              /404.html; 
        # redirect server error pages to the static page /50x.html 
        # 
        error_page   500 502 503 504  /50x.html; 
        location = /50x.html { 
            root html;  
        } 
}


4.按以上nginx 配置文件的要求,创建对应的缓存目录2个跟踪器节点都需要:  
mkdir -p /fastdfs/cache/nginx/proxy_cache 
mkdir -p /fastdfs/cache/nginx/proxy_cache/tmp
启动ngnix:/usr/local/nginx/sbin/nginx

 

  步骤六:201、202节点安装keepalived+nginx,对203、204提供负载均衡并对外外提供统一访问IP

1.安装nginx
修改nginx配置
vim /usr/local/nginx/conf/nginx.conf
修改内容:
upstream fastdfs_tracker {
    server 192.168.1.203:8000 weight=1 max_fails=2 fail_timeout=30s; 
    server 192.168.1.204:8000 weight=1 max_fails=2 fail_timeout=30s; 
}
server { 
        listen       80; 
        server_name  localhost; 
        location / { 
            root html; 
            index  index.html index.htm; 
        } 
        error_page   500 502 503 504  /50x.html; 
        location = /50x.html { 
            root html; 
        } 
 
        ## FastDFS Proxy 代理路径设置为 /fastdfs 
        location /fastdfs { 
            root   html; 
            index  index.html index.htm; 
            proxy_pass  http://fastdfs_tracker/; 
            proxy_set_header Host  $http_host; 
            proxy_set_header Cookie $http_cookie; 
            proxy_set_header X-Real-IP $remote_addr; 
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
            proxy_set_header X-Forwarded-Proto $scheme; 
            client_max_body_size  300m; 
        } 
}

2.安装keepalived
修改keepalived配置
参考:https://www.cnblogs.com/cac2020/p/9528106.html

 

最后注意:千万不要使用 kill -9 命令强杀 FastDFS 进程,否则可能会导致 binlog 数据丢失  

关闭集群步骤: 
1201 202 两台一级负载节点 
关闭 keepalived 命令:service keepalived stop 
关闭 nginx 命令:/usr/local/nginx/sbin/nginx –s stop 
 
2203 204 两台二级负载节点,跟踪器节点 
关闭 nginx 命令:/usr/local/nginx/sbin/nginx –s stop 
关闭 trackerd 跟踪器命令:/etc/init.d/fdfs_trackerd stop 
 
3205 206 207 208 四台三级负载节点,存储节点 
关闭 nginx 命令:/usr/local/nginx/sbin/nginx –s stop 
关闭 storage 存储器命令: /etc/init.d/fdfs_storaged stop 
注意:千万不要使用 kill -9 命令强杀 FastDFS 进程,否则可能会导致 binlog 数据丢失

 参考手册:keepalived+nginx+fastdfs集群安装手册.pdf

以上是关于FastDFS+nginx+keepalived集群搭建的主要内容,如果未能解决你的问题,请参考以下文章

高可用高性能分布式文件系统FastDFS进阶keepalived+nginx对多tracker进行高

Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——第十一集补充:修改fastdfs的http.conf文件进行防盗链,重启nginx失败

FastDFS教程IV-文件服务器集群搭建

高可用高性能分布式文件系统FastDFS实践Java程序

高可用高性能分布式文件系统FastDFS实践Java程序

keepalived+Haproxy搭建高可用Web群集