fastdfs高可用集群安装
机器规划
storage
- group1:192.168.56.111/112(集群,同一个group的内容会完整的在两台机器各自存一份),每台机器上安装nginx
- group2:192.168.56.113/114(集群,同一个group的内容会完整的在两台机器各自存一份),每台机器上安装nginx
tracker
- tracker:192.168.56.115/116(集群),每台机器上都需要安装nginx
LVS
- LVS:192.168.56.117–>本案例中使用一台LVS,如果需要多台LVS并保证高可用参考深入浅出Web应用负载均衡
安装软件
安装fastdfs
安装的机器有192.168.56.111/112、192.168.56.113/114、192.168.56.115/116
其中192.168.56.115/116安装tracker、192.168.56.111/112、192.168.56.113/114安装storage
安装依赖包
-
下载并安装依赖包:libfastcommon是从 FastDFS 和 FastDHT 中提取出来的公共 C 函数库
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.43.tar.gz tar -xvf V1.0.43.tar.gz cd libfastcommon-1.0.43 ./make.sh ./make.sh install
-
libfastcommon.so 安装到了/usr/lib64/libfastcommon.so,但是FastDFS主程序设置的lib目录是/usr/local/lib,所以需要创建软链接。
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
安装fastdfs
-
下载:
wget https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz tar -xvf V6.06.tar.gz cd fastdfs-6.06
-
安装
./make.sh ./make.sh install
这个时候会提示找不到perl(6.0之后需要perl的支持)
./make.sh:行152: perl: 未找到命令 ./make.sh:行153: perl: 未找到命令 ./make.sh:行154: perl: 未找到命令
我们需要将perl环境安装下然后再make install一下:
yum install -y perl ./make.sh ./make.sh install
-
完成安装后我们看下相应的目录:
-
启动脚本:
[root@localhost fastdfs-6.06]# ll /etc/init.d/ | grep fdfs -rwxr-xr-x. 1 root root 961 6月 9 22:30 fdfs_storaged -rwxr-xr-x. 1 root root 963 6月 9 22:30 fdfs_trackerd
-
样例配置文件
[root@localhost fastdfs-6.06]# ll /etc/fdfs | grep sample -rw-r--r--. 1 root root 1909 6月 9 22:23 client.conf.sample -rw-r--r--. 1 root root 965 6月 9 22:23 http.conf.sample -rw-r--r--. 1 root root 31172 6月 9 22:23 mime.types.sample -rw-r--r--. 1 root root 10246 6月 9 22:23 storage.conf.sample -rw-r--r--. 1 root root 620 6月 9 22:23 storage_ids.conf.sample -rw-r--r--. 1 root root 9138 6月 9 22:23 tracker.conf.sample
-
命令工具
[root@localhost fastdfs-6.06]# ll /usr/bin/ | grep fdfs -rwxr-xr-x. 1 root root 362184 6月 9 22:30 fdfs_appender_test -rwxr-xr-x. 1 root root 361960 6月 9 22:30 fdfs_appender_test1 -rwxr-xr-x. 1 root root 348840 6月 9 22:30 fdfs_append_file -rwxr-xr-x. 1 root root 348456 6月 9 22:30 fdfs_crc32 -rwxr-xr-x. 1 root root 348880 6月 9 22:30 fdfs_delete_file -rwxr-xr-x. 1 root root 349608 6月 9 22:30 fdfs_download_file -rwxr-xr-x. 1 root root 349560 6月 9 22:30 fdfs_file_info -rwxr-xr-x. 1 root root 364880 6月 9 22:30 fdfs_monitor -rwxr-xr-x. 1 root root 349104 6月 9 22:30 fdfs_regenerate_filename -rwxr-xr-x. 1 root root 1280080 6月 9 22:30 fdfs_storaged -rwxr-xr-x. 1 root root 372056 6月 9 22:30 fdfs_test -rwxr-xr-x. 1 root root 367168 6月 9 22:30 fdfs_test1 -rwxr-xr-x. 1 root root 512304 6月 9 22:30 fdfs_trackerd -rwxr-xr-x. 1 root root 349800 6月 9 22:30 fdfs_upload_appender -rwxr-xr-x. 1 root root 350824 6月 9 22:30 fdfs_upload_file
-
-
虽然FastDFS 服务脚本设置的 bin 目录是 /usr/local/bin, 但实际命令安装在 /usr/bin/ 下,所以我们需要设置一下相应的软连接:
ln -s /usr/bin/fdfs_trackerd /usr/local/bin ln -s /usr/bin/fdfs_storaged /usr/local/bin ln -s /usr/bin/stop.sh /usr/local/bin ln -s /usr/bin/restart.sh /usr/local/bin
配置fastdfs
配置tracker(192.168.56.115/116)
-
配置tracker.conf
cd /etc/fdfs cp tracker.conf.sample tracker.conf vi tracker.conf
针对配置文件我们修改以下几处:
# Tracker 数据和日志目录地址(根目录必须存在,子目录会自动创建) base_path = /data/fastdfs/tracker #HTTP 服务端口,后面结合nginx需要用到 http.server_port = 80
创建tracker数据目录:
mkdir -/data/fastdfs/tracker
-
关闭防火墙或者防火墙中打开跟踪端口(默认的22122)
本人是直接关闭防火墙,如果开着防火墙的童鞋可以根据自己是什么系统自行百度
-
启动tracker:
#启动方案一 /etc/init.d/fdfs_trackerd start #启动方案二 service fdfs_trackerd start
启动结果:
[root@localhost fdfs]# service fdfs_trackerd start Reloading systemd: [ 确定 ] Starting fdfs_trackerd (via systemctl): [ 确定 ]
初次成功启动,会在 配置的base_path目录下创建 data、logs 两个目录。
[root@localhost fdfs]# cd /data/fastdfs/tracker [root@localhost tracker]# ll 总用量 0 drwxr-xr-x. 2 root root 60 6月 9 22:51 data drwxr-xr-x. 2 root root 26 6月 9 22:51 logs
同时我们也可以通过端口号是否监听着来判断是否启动成功(默认端口22122)
[root@localhost tracker]# netstat -tunlp | grep 22122 tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 3882/fdfs_trackerd
从上面我们可以看到22122是被fdfs_trackerd 程序所占用,这就说明我们已经启动成功了。
-
设置成开机启动:
chkconfig fdfs_trackerd on
-
关闭tracker
service fdfs_trackerd stop
-
base_path目录结构:
[root@localhost tracker]# tree . ├── data │ ├── fdfs_trackerd.pid │ └── storage_changelog.dat └── logs └── trackerd.log
配置storage(192.168.56.111/112、192.168.56.113/114)
-
配置torage.conf
cd /etc/fdfs cp storage.conf.sample storage.conf vi storage.conf
修改配置文件:
#设置group_name,默认group1,我们将111/112这两台机器设置成group1,113/114这两台机器设置成group1 group_name = group1 #配置base_path(与tracker类似) Storage 数据和日志目录地址(根目录必须存在,子目录会自动生成) base_path=/data/fastdfs/storage # 逐一配置 store_path_count 个路径,索引号基于 0。 # 如果不配置 store_path0,那它就和 base_path 对应的路径一样。 store_path0=/data/fastdfs/storage/file # tracker_server 的列表 ,会主动连接 tracker_server # 有多个 tracker server 时,每个 tracker server 写一行 tracker_server=192.168.56.115:22122 tracker_server=192.168.56.116:22122 # 访问端口 http.server_port=80
创建目录:
mkdir -p /data/fastdfs/storage mkdir -p /data/fastdfs/storage/file
-
关闭防火墙或者防火墙中打开跟踪端口(默认的22122)
本人是直接关闭防火墙,如果开着防火墙的童鞋可以根据自己是什么系统自行百度
-
启动Storage
#启动方案一 /etc/init.d/fdfs_storaged start #启动方案二 service fdfs_storaged start
查看 Storage 是否成功启动,23000 端口正在被监听,就算 Storage 启动成功。
[root@localhost fdfs]# netstat -tunlp | grep fdfs tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 4275/fdfs_storaged
-
设置开机启动;
chkconfig fdfs_storaged on
-
查看Storage 目录
同 Tracker,Storage 启动成功后,在base_path 下创建了data、logs目录,记录着 Storage Server 的信息。
[root@localhost storage]# ll 总用量 0 drwxr-xr-x. 3 root root 90 6月 9 23:28 data drwxr-xr-x. 3 root root 18 6月 9 23:28 file drwxr-xr-x. 2 root root 26 6月 9 23:28 wlogs
我们再看看file目录:
测试
修改配置文件
cd /etc/fdfs
cp client.conf.sample client.conf
vi client.conf
主要修改的配置文件修改内容如下:
#基础路径修改成自定义的目录
base_path = /data/fastdfs/client
#修改tracker_server服务器地址
tracker_server = 192.168.56.115:22122
tracker_server = 192.168.56.116:22122
测试上传文件:
[root@localhost ~]# mkdir -p /data/fastdfs/client
[root@localhost ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.jpg
group2/M00/00/00/wKg4cV7gxxyARS00AADOeAG8PEw339.jpg
[root@localhost ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.jpg
group2/M00/00/00/wKg4cl7gxx6AFL1oAADOeAG8PEw271.jpg
[root@localhost ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.jpg
group2/M00/00/00/wKg4cV7gxx-Aabk5AADOeAG8PEw040.jpg
[root@localhost ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.jpg
group2/M00/00/00/wKg4cl7gxyCAdgi2AADOeAG8PEw098.jpg
[root@localhost ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.jpg
group2/M00/00/00/wKg4cV7gxyGAZhC_AADOeAG8PEw101.jpg
[root@localhost ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.jpg
group2/M00/00/00/wKg4cl7gxyGAXBy-AADOeAG8PEw507.jpg
[root@localhost ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.jpg
group2/M00/00/00/wKg4cV7gxyKAREn9AADOeAG8PEw014.jpg
从以上测试结果我们可以看出所有的文件都上传到了group2这个分组的服务器上,为什么没有上传到group1上呢?让我们看一下/etc/fdfs/tracker.conf
配置文件的负载策略(store_lookup)
# 0: round robin 轮询
# 1: specify group 指定卷,通过卷名指定访问某一个卷
# 2: load balance, select the max free space group to upload file 默认的负载策略,哪个空间大使用哪个
store_lookup = 0
我们将轮询策略改成0之后再测试一下,看看效果:
[root@localhost ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.jpg
group1/M00/00/00/wKg4b17gyDiAIZ1YAADOeAG8PEw810.jpg
[root@localhost ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.jpg
group2/M00/00/00/wKg4cV7gyDmAXVL3AADOeAG8PEw906.jpg
[root@localhost ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.jpg
group1/M00/00/00/wKg4cF7gyDqAP__wAADOeAG8PEw493.jpg
[root@localhost ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.jpg
group2/M00/00/00/wKg4cl7gyDuAA2hpAADOeAG8PEw756.jpg
这个时候我们可以看到交替的存储到不同的group中。返回的文件ID由group、存储目录、两级子目录、fileid、文件后缀名(由客户端指定,主要用于区分文件类型)拼接而成。
我们也可以通过fdfs_monitor /etc/fdfs/storage.conf
命令来查看整个集群的情况
好了,到目前为止我们已经完成了fastdfs的storage集群搭建。接下来我们搭建nginx实现storage以及tracker反向代理。
nginx集群搭建
-
为什么storage也要安装nginx?
因为当一个文件上传完放到某一个storage服务器之后,同组的服务器需要进行复制,有一定的延迟,假如说文件test.jpg上传到了56.111服务器,这个时候客户端马上又发起请求访问test.jpg,请求可能会被指定到56.112上,这个时候因为还没复制完成,就会出现文件访问错误的情况。
而使用fastdfs-nginx-module可以实现从56.111服务器上取得文件,避免复制延迟带来的问题
-
为什么tracker也要安装nginx?
安装nginx主要为了http访问的反向代理、负载均衡、高可用同时实现缓存(但是nginx不一定要安装在tracker的机器上)。
storage服务器nginx安装(192.168.56.111-116)
-
安装nginx
yum install epel-release yum install -y nginx
-
启动Nginx并设置开机自动运行
systemctl start nginx.service systemctl enable nginx.service
安装fastdfs-nginx-module模块
-
下载并解压
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.22.tar.gz tar -xvf V1.22.tar.gz
-
备份原来的启动文件
mv /usr/sbin/nginx /usr/sbin/nginx.bak
-
nginx添加fastdfs-nginx-module模块:为nginx添加模块的时候需要注意,不能直接添加而是要先看下原来nginx已经安装了那些模块,然后在原来的基础上加上自己要加的模块。我们可以通过
nginx -V
来查看当前nginx已经安装了那些模块,以下是我机器上已经安装模块情况:[root@localhost local]# nginx -V nginx version: nginx/1.16.1 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017 TLS SNI support enabled configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-file-aio --with-ipv6 --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-stream_ssl_preread_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module=dynamic --with-http_auth_request_module --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-google_perftools_module --with-debug --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic' --with-ld-opt='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E'
由于yum安装不可编译,所以我们需要下载一个可编译的nginx(大家可以根据上面的命令看自己的版本多少下载相对应的版本):
cd /usr/local/ wget http://nginx.org/download/nginx-1.18.0.tar.gz tar -xvf nginx-1.16.1.tar.gz cd nginx-1.16.1
重新编译nginx(再最后我们加上
--add-module=/usr/local/fastdfs-nginx-module-1.22
):./configure --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-file-aio --with-ipv6 --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-stream_ssl_preread_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module=dynamic --with-http_auth_request_module --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-google_perftools_module --with-debug --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic' --with-ld-opt='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E' --add-module=/usr/local/fastdfs-nginx-module-1.22/src
编译过程中可能会遇到:
configure: error: the HTTP rewrite module requires the PCRE library #解决方案 yum -y install pcre-devel ./configure: error: SSL modules require the OpenSSL library. #解决方案 yum -y install openssl openssl-devel ./configure: error: the invalid value in --with-ld-opt="-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E" #解决方案 yum -y install redhat-rpm-config.noarch ./configure: error: the HTTP XSLT module requires the libxml2/libxslt #解决方案 yum -y install libxml2 libxml2-dev yum -y install libxslt-devel ./configure: error: the HTTP image filter module requires the GD library #解决方案 yum -y install gd-devel ./configure: error: perl module ExtUtils::Embed is required #解决方案 yum -y install perl-devel perl-ExtUtils-Embed ./configure: error: the Google perftools module requires the Google perftools #解决方案 yum install gperftools-devel yum -y install pcre-devel openssl openssl-devel redhat-rpm-config.noarch libxml2 libxml2-dev libxslt-devel gd-devel perl-devel perl-ExtUtils-Embed gperftools-devel
编译完之后先不要着急make install,先做好备份
make && make install
重启nginx
nginx -s stop && nginx
使用
nginx -V
检查模块是否安装成功[root@localhost nginx-1.16.1]# nginx -V nginx version: nginx/1.16.1 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017 TLS SNI support enabled configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-file-aio --with-ipv6 --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-stream_ssl_preread_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module=dynamic --with-http_auth_request_module --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-google_perftools_module --with-debug --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic' --with-ld-opt='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E' --add-module=/usr/local/fastdfs-nginx-module-1.22/src
这个时候我们已经看到有
fastdfs-nginx-module
模块了
配置配置文件
-
配置
mod_fastdfs.conf
配置文件cd /usr/local/fastdfs-nginx-module-1.22/src vi mod_fastdfs.conf #需要修改内容如下: tracker_server=192.168.56.115:22122 tracker_server=192.168.56.116:22122 #本地的group_name,根据实际机器配置 group_name=XXX #文件 url 中是否有 group 名 url_have_group_name = true store_path0=/data/fastdfs/storage/file
网上很多人说要把multi-group开启,这是很多余的,很多余的,很多余的(重要的事情说三遍),还可能引起不能跨group访问文件的情况
-
将配置文件拷贝到/etc/fdfs/目录下
cp /usr/local/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs/ cp /usr/local/fastdfs-6.06/conf/http.conf /etc/fdfs/ cp /usr/local/fastdfs-6.06/conf/mime.types /etc/fdfs/
-
从上面的fastdfs的key生成来看,访问路径是在我们实际的目录后面加了一个
M00
所有我们要将实际目录软连接到带M00的目录上ln -s /data/fastdfs/storage/file/data /data/fastdfs/storage/file/data/M00
-
配置nginx
cd /etc/nginx/conf.d/ vi fastdfs_storage.conf
配置文件内容如下:
server { listen 80; server_name localhost; location ~ /group([0-9])/M00 { ngx_fastdfs_module; } }
重新加载nginx配置文件
nginx -t nginx -s reload
使用nginx访问fastdfs文件
-
我们将上面上传测试的key作为访问路径进行测试,结果是OK的:
http://192.168.56.111/group1/M00/00/00/wKg4b17gyDiAIZ1YAADOeAG8PEw810.jpg
http://192.168.56.111/group2/M00/00/00/wKg4cV7gxyKAREn9AADOeAG8PEw014.jpg
tracker服务nginx安装
-
安装nginx,与上面storage相同
nginx不一定要安装在tracker这台机器上!nginx不一定要安装在tracker这台机器上!nginx不一定要安装在tracker这台机器上!重要的事情也说三遍
-
配置nginx:
cd /etc/nginx/ vi upstream.conf
upstream.conf 配置文件内容如下:
upstream group-server { server 192.168.56.111:80 max_fails=2 fail_timeout=30s; server 192.168.56.112:80 max_fails=2 fail_timeout=30s; server 192.168.56.113:80 max_fails=2 fail_timeout=30s; server 192.168.56.114:80 max_fails=2 fail_timeout=30s; }
修改nginx.conf配置文件:
#将刚才新增的配置文件引入 include /etc/nginx/upstream.conf;
新增tracker_nginx.conf配置文件:
cd /etc/nginx/conf.d vi tracker_nginx.conf
tracker_nginx.conf内容如下:
server { listen 80; server_name localhost; location ~ /group[0-9]/M00 { proxy_pass http://group-server; } access_log /data/log/nginx/fastdfs.log proxy; }
网上比较多人将storage的nginx按照不同的group拆成了不同的upstream,个人觉的没必要,既然全部的节点都可以访问所有group的文件,那么我们为什么还要拆呢??
3. 重启测试
```shell
nginx -t
nginx -s reload
```
访问以下地址测试结果都是正常的:
http://192.168.56.115/group2/M00/00/00/wKg4cV7gxyKAREn9AADOeAG8PEw014.jpg
http://192.168.56.115/group1/M00/00/00/wKg4b17gyDiAIZ1YAADOeAG8PEw810.jpg
- 另外一台的tracker服务器安装方式雷同
打完收工
目前已经搭建已经完成fastdfs与nginx集群所有的搭建,至于两台tracker的高可用(keepalived+lvs)详见我之前写深入浅出Web应用负载均衡
总结
总体把fastdfs集群搭建讲清楚了,里面涉及到nginx的缓存相关的内容大家可以自行百度。