fdfs集群部署:fastdfs+nginx+nginx_cache+nginx_model

fdfs集群部署:fastdfs+nginx+nginx_cache+nginx_model
事先关闭防火墙,或者部署后添加防火墙规则
1.安装依赖
yum install make cmake gcc gcc-c++
2.安装libfatscommon ###安装完成后,会生成两个lib文件:/usr/lib64/libfastcommon.so、/usr/lib64/libfdfsclient.so
unzip libfastcommon-master.zip -d /usr/local/fast/
cd /usr/local/fast/libfastcommon-master/
./make.sh
./make.sh install

FastDFS主程序设置的目录为/usr/local/lib/,所以需要创建/usr/lib64下的一些核心执行程序的软连接文件。
mkdir /usr/local/lib/
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

3.所有节点安装fdfs
tar -zxvf FastDFS_v5.05.tar.gz -C /usr/local/fast
cd /usr/local/fast/FastDFS/
./make.sh
./make.sh install
服务脚本生成目录:/usr/bin/

4.配置tracker节点
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
vim /etc/fdfs/tracker.conf
disabled=false # 启用配置文件
port=22122 # tracker服务器端口(默认22122)
base_path=/fastdfs/tracker # 存储日志和数据的根目录
mkdir -p /fastdfs/tracker

可选择关闭防火墙或者添加防火墙规则并重启防火墙: iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT

启动tracker:
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start

5.配置存储节点
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
vi /etc/fdfs/storage.conf
disabled=false # 启用配置文件
port=23000 # storage服务端口
group_name=group1 ### 组名(第一组为group1,第二组为group2,依次类推…)
base_path=/fastdfs/storage ### 数据和日志文件存储根目录
store_path0=/fastdfs/storage # 第一个存储目录,第二个存储目录起名为:store_path1=xxx,其它存储目录名依次类推…
store_path_count=1 # 存储路径个数,需要和store_path个数匹配
tracker_server=192.168.137.162:22122 ### tracker服务器IP和端口
tracker_server=192.168.137.163:22122 ### tracker服务器IP和端口
http.server_port=8888 # http访问文件的端口

mkdir -p /fastdfs/storage
可选择关闭防火墙或者添加防火墙规则并重启防火墙: iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT
启动storage:
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start

各节点启动后,使用tail -f /fastdfs/storage/logs/storaged.log命令监听存储节点的日志,可以看到存储节点链接到跟踪服务器,并提示哪一个为leader跟踪服务器,同时也能看到同一组中其它节点加入进来的日志信息。

所有存储节点都启动之后,可以在任一存储节点上使用如下命令查看集群的状态信息:
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

2.7文件上传测试
1> 修改tracker服务器client.conf配置文件
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
vi /etc/fdfs/client.conf
base_path=/fastdfs/tracker
tracker_server=192.168.137.162:22122
tracker_server=192.168.137.163:22122
2> 执行文件上传命令
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /home/test/FastDFS_v5.05.tar.gz
返回以下ID号,说明文件上传成功:
group1/M00/00/00/wKiJpFkS0ByATie5AAVFOL7FJU4.tar.gz
group2/M00/00/00/wKiJplkS0CyAJyzTAAVFOL7FJU4.tar.gz
(从返回的ID号中也可以看出,同一个文件分别存储在两个组内group1和group2,但也有可能在同一组中,具体策略是由FastDFS根据服务器的存储情况来分配的)

2.8存储节点安装Nginx和fastdfs-nginx-module模块
安装fastdfs-nginx-module_v1.16.tar.gz
cd /home/test
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/fast/
cd /usr/local/fast/fastdfs-nginx-module/src/

安装nginx所需的依赖包
yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel
cd /home/test
tar -zxvf 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> 复制 fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录,并修改
cp /usr/local/fast/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
vi /etc/fdfs/mod_fastdfs.conf

第一组存储服务器的mod_fastdfs.conf配置:
connect_timeout=10
base_path=/tmp
tracker_server=192.168.137.162:22122
tracker_server=192.168.137.163:22122
storage_server_port=23000
group_name=group1 # 第一组storage的组名
url_have_group_name=true
store_path0=/fastdfs/storage
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

第二组的mod_fastdfs.confg配置与第一组的配置只有group_name不同:group_name=group2

4> 复制FastDFS源文件目录中HTTP相关的配置文件到/etc/fdfs目录
cd /usr/local/fast/FastDFS/conf
cp http.conf mime.types /etc/fdfs/

5> 创建数据存放目录的软链接
ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00 ##############这个有实际作用?

6> 配置fastdfs-nginx-module(Nginx简洁版样例)
vi /usr/local/nginx/conf/nginx.conf

user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8888;
server_name localhost;

    # FastDFS 文件访问配置(fastdfs-nginx-module模块)
    location ~/group([0-9])/M00 {
        ngx_fastdfs_module;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root   html;
    }   
}

}

注意:
A、8888 端口值要与/etc/fdfs/storage.conf 中的 http.server_port=8888 相对应,因为 http.server_port 默认为 8888,如果想改成 80,则要对应修改过来。
B、Storage 对应有多个 group 的情况下,访问路径带 group 名,如:http://xxxx/group1/M00/00/00/xxx, 对应的 Nginx 配置为:

location ~/group([0-9])/M00 {
ngx_fastdfs_module;
}
C、如下载时如发现老报 404,将nginx.conf第一行user nobody;修改为user root;后重新启动。

7.防火墙放开8888端口
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT

8.启动nginx

2.9跟踪节点安装Nginx和ngx_cache_purge模块,在 tracker 上安装的 nginx 主要为了提供 http 访问的反向代理、负载均衡以及缓存服务。
1> 安装Nginx所需的依赖包
yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel
2> 安装nginx和ngx_cache_purge模块
cd /home/test
tar -zxvf nginx-1.6.2.tar.gz -C /usr/local/
tar -zxvf ngx_cache_purge-2.3.tar.gz -C /usr/local/fast/
cd /usr/local/nginx-1.6.2
./configure --add-module=/usr/local/fast/ngx_cache_purge-2.3
make && make install
3> 配置Nginx,设置tracker负载均衡以及缓存
vi /usr/local/nginx/conf/nginx.conf

user nobody;
worker_processes 1;
events {
worker_connections 1024;
use epoll;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - r e m o t e u s e r [ remote_user [ remoteuser[time_local] “KaTeX parse error: Expected 'EOF', got '#' at position 16: request" ' #̲ …status b o d y b y t e s s e n t " body_bytes_sent " bodybytessent"http_referer” ’
# ‘“ h t t p u s e r a g e n t " " http_user_agent" " httpuseragent""http_x_forwarded_for”’;
#access_log logs/access.log main;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
#gzip on;

#设置缓存
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 X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_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-cache:500m max_size=10g inactive=30d;
proxy_temp_path /fastdfs/cache/nginx/proxy_cache/tmp;

#设置 group1 的服务器
upstream fdfs_group1 {
     server 192.168.137.164:8888 weight=1 max_fails=2 fail_timeout=30s;
     server 192.168.137.165:8888 weight=1 max_fails=2 fail_timeout=30s;
}

#设置 group2 的服务器
upstream fdfs_group2 {
     server 192.168.137.166:8888 weight=1 max_fails=2 fail_timeout=30s;
     server 192.168.137.167: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; 
    }
} 

}

按以上 nginx 配置文件的要求,创建对应的缓存目录:
shell> mkdir -p /fastdfs/cache/nginx/proxy_cache
shell> mkdir -p /fastdfs/cache/nginx/proxy_cache/tmp

4> 防火墙打开Nginx 8000 端口
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT

5> 启动Nginx

6> 文件访问测试
前面直接通过访问Storage节点中的Nginx访问文件:
http://192.168.137.164:8888/group1/M00/00/00/wKiJpFkS0ByATie5AAVFOL7FJU4.tar.gz
http://192.168.137.166:8888/group2/M00/00/00/wKiJplkS0CyAJyzTAAVFOL7FJU4.tar.gz

现在可以通过Tracker中的Nginx来进行访问:
(1)、通过 Tracker1 中的 Nginx 来访问
http://192.168.137.162:8000/group1/M00/00/00/wKiJpFkS0ByATie5AAVFOL7FJU4.tar.gz
http://192.168.137.162:8000/group2/M00/00/00/wKiJplkS0CyAJyzTAAVFOL7FJU4.tar.gz

(2)、通过 Tracker2 中的 Nginx 来访问
http://192.168.137.163:8000/group1/M00/00/00/wKiJpFkS0ByATie5AAVFOL7FJU4.tar.gz
http://192.168.137.163:8000/group2/M00/00/00/wKiJplkS0CyAJyzTAAVFOL7FJU4.tar.gz

由上面的文件访问效果可以看到,每一个Tracker中的Nginx都单独对后端的Storage组做了负载均衡,但整套FastDFS集群,如果想对外提供统一的文件访问地址,还需要对两个Tracker中的Nginx进行HA集群

对于以上安装的两个tracker,可以通过在上层添加nginx+keepalive+vip对外暴露,或者直接使用elb

原文链接https://www.cnblogs.com/hd3013779515/p/6884202.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一些基本的步骤。首先,您需要安装 NginxFastDFS 的依赖库和工具。然后按照以下步骤操作: 1. 下载并安装 FastDFS 您可以从官网下载 FastDFS 的源码包,然后解压到本地。进入解压后的目录,执行以下命令: ``` ./make.sh ./make.sh install ``` 这将编译并安装 FastDFS。安装完成后,需要修改配置文件 tracker.conf 和 storage.conf,配置 FastDFS 的基本参数。 2. 下载并安装 Nginx 您可以从 Nginx 官网下载 Nginx 的源码包,然后解压到本地。进入解压后的目录,执行以下命令: ``` ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/path/to/fastdfs-nginx-module/src make make install ``` 这将编译并安装 Nginx。安装完成后,需要修改配置文件 nginx.conf,启用 FastDFS 模块并配置基本参数。 3. 启动 FastDFSNginx 启动 FastDFSNginx 只需要执行以下命令: ``` /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf /usr/bin/fdfs_storaged /etc/fdfs/storage.conf /usr/local/nginx/sbin/nginx ``` 这将启动 FastDFS 的 Tracker 和 Storage,以及 Nginx。至此,您已经成功搭建了 Nginx+FastDFS 环境。 请注意,这只是一个基本的搭建步骤,具体的配置和调优还需要您根据自己的需求进行调整。另外,为了保证安全性和稳定性,建议您在生产环境中使用 HTTPS 协议,并且配置合适的防火墙和安全策略。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值