上一章节介绍了FastDFS的单机部署和使用,但是实际上的场景中不可能只用单机来做,更多的时候是采用集群部署,那么本章就带大家进入集群部署的研究。

1、准备环境

        我这里采用7台,当然你们按照自己的选择,最外层的Nginx是用来进行统一域名+请求转发,另外我设定了2个tracker分别负载到2个组,如果不清楚这些概念可以看我的第一章节基础部分。15+16作为组1,互为主备;17+23作为组2,互为主备;13+14分别为两个tracker。

        group1的两台机器大小一模一样,要是1TB都是1TB,group2也是一样,所以存储空间一共是4TB,真实的空间是2TB,因为两个组的数据互为主备。如果后面空间不够用的话,我们只需要加group3,group4...FastDFS没有要求组和组大小一样,但是要求同一个组内的配置,数据是一样的。所以group3你可以搞很多个主备,保证每个主备配置一样就可以。大小也没有限制和其他组要求一样,这个需要提前说明下。

zabbix分布式部署架构 分布式如何部署_扩展模块

2、部署步骤

每个节点上执行如下命令,准备环境
yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y
        13节点和14节点是tracker,所以在这两台节点在/usr/local/src(没有就自己创建一个这样的目录)当然你放在其他目录下都可以;
        把这两个文件上传到/usr/local/src下
• libfastcommon(FastDFS分离出的一些公用函数包)
• fastdfs(FastDFS本体)
        同样15、16、17、23这四台的group1和group2也上传上面两个文件
        完成后分别进行解压,安装
tar -zxvf libfastcommon.tar.gz

tar -zxvf fastdfs.tar.gz

cd libfastcommon/

cd fastdfs/

./make.sh && ./make.sh install
        这样6台就先装好了fastdfs本体和lib包。
        然后这6台都进行下面的操作
cd /fastdfs/conf

# 拷贝两个文件
cp mime.types http.conf /etc/fdfs/
        修改tracker server节点(13、14)的下的/etc/fdfs/目录下的tracker.conf
#服务器ip为 192.168.52.1
#我建议用ftp下载下来这些文件 本地修改
vim /etc/fdfs/tracker.conf
 
#需要修改的内容如下
port=22122  # tracker服务器端口(默认22122,一般不修改)
 
base_path=/opt/fastdfs/tracker  # 这里一定要提前先手动mkdir,不然找不到存储日志和数据的根目录
        修改剩下group1(15、16),group2(17、23)的节点/etc/fdfs/目录的storage.conf
vim /etc/fdfs/storage.conf
#需要修改的内容如下
port=23000  # storage服务端口(默认23000,一般不修改)

# 是组1就写group1,组2就写group2
group_name = group1
 
base_path=/opt/fastdfs/storage  # 数据和日志文件存储根目录
 
store_path0=/opt/fastdfs/storage/files  # 第一个存储目录

# tracker服务器IP和端口,注意这里单机只配一个就好了,多个主备配多个
tracker_server=13节点:22122  
tracker_server=14节点:22122
 
http.server_port=8888  # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)
        把这个storage.conf传到4台组1和组2的/etc/fdfs目录下,记得修改storage.conf文件中的group_name;
        接下来我们就可以启动tracker两台13和14
fdfs_trackerd /etc/fdfs/tracker.conf
        启动完成后,剩下4台storage启动
fdfs_storaged /etc/fdfs/storage.conf
        如果启动失败,记得看下/opt/fastdfs/storage/log下的日志
        那么我们现在集群全部都启动成功了!
        在启动前我们要先关闭所有storage和tracker之间的防火墙,不然后面文件访问不了: 
#不关闭防火墙的话无法使用
systemctl stop firewalld.service #关闭
systemctl restart firewalld.service #重启
        我们在13节点上用命令测试下:
# 自己随便创建一个文件1.txt
fdfs_upload_file /etc/fdfs/client.conf 1.txt

        返回成功。

zabbix分布式部署架构 分布式如何部署_fastdfs_02

        这里注意,如果有时候发现总是往一台上打的话,不是说明负载有问题,而是有个配置

        tracker.conf里有这么两个配置

        store_lookup:0表示轮询;1表示上传到指定的组,配合store_group确定(一般不建议这么做); 2表示负载均衡,选择一个空间较大的组进行上传。

zabbix分布式部署架构 分布式如何部署_fastdfs_03

        那么到这,集群配置完毕!

        因为我们没有部署nginx,所以我们无法访问图片资源。

3、Nginx部署

        我们同样要在6台(2个tracker,4个storage)机子上传nginx,也在/usr/local/src上传到这里。

        2个tracker_server是用做负载均衡的,只上传nginx就行,均衡访问4台storage。

• nginx1.15.4
        4个storage是nginx扩展模块,需要上传nginx扩展块和nginx,具体来访问文件资源。
• nginx1.15.4
• fastdfs-nginx-module(FastDFS和nginx的关联模块)
        在这6台上执行nginx编译环境的命令脚本
yum install gcc openssl openssl-devel pcre pcre-devel zlib zlib-devel -y
        在13和14上解压nginx包,执行以下命令
tar -zxvf nginx-1.15.4.tar.gz

cd /nginx-1.15.4

./configure  --prefix=/usr/local/nginx_fdfs

make && make install
        在4台storage解压扩展模块和nginx,一定要先解压,和后面步骤不能颠倒。
tar -zxvf fastdfs-nginx-module.tar.gz

tar -zxvf nginx-1.15.4.tar.gz
        把当前nginx扩展模块里的某个路径先记录下来后面要加扩展模块的路径
/usr/local/src/fastdfs-nginx-module/src
        然后进入4台的nginx-1.15.4目录下,执行如下命令
./configure --prefix=/usr/local/nginx_fdfs --add-module=/usr/local/src/fastdfs-nginx-module/src

make && make install
        如果报错这个,说明你上面的命令有少的,要么没解压扩展模块要么没做nginx编译环境初始化。
centos 7.2 make: *** No rule to make target `build', needed by `default'. Stop
        到这6个nginx就准备完成了。
        然后配置tracker server2台机器的nginx
        cd /usr/local/nginx_fdfs/conf,修改nginx.conf配置


zabbix分布式部署架构 分布式如何部署_上传_04

         两台tracker server都这么配置!

        启动2台tracker server的nginx

/usr/local/nginx_fdfs/sbin/nginx -c /usr/local/nginx_fdfs/conf/nginx.conf

        启动成功如图

zabbix分布式部署架构 分布式如何部署_nginx_05

         配置另外4台storage的nginx添加http访问路径的拦截

        cd /usr/local/nginx_fdfs/conf,修改nginx的配置

zabbix分布式部署架构 分布式如何部署_nginx_06

         四台记得都要修改这个nginx.conf

        然后把这个mod_fastdfs.conf文件下载下来修改

zabbix分布式部署架构 分布式如何部署_扩展模块_07

这些参数按照我发的配置调整下:
base_path=/opt/fastdfs/nginx_mod

tracker_server=10.12.105.13:22122
tracker_server=10.12.105.14:22122

# 这里要区分下 group1上传的和group2的配置区别只有这里,其他的参数一样
group_name=group1

url_have_group_name = true

store_path0=/opt/fastdfs/files

group_count = 2


[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs/storage/files

[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs/storage/files
        把mod_fastdfs.conf文件分别上传到4台storage的/etc/fdfs下,注意这里的group_name修改。
        还要注意需要手动生成这些目录/opt/fastdfs/nginx_mod
        启动4台nginx
/usr/local/nginx_fdfs/sbin/nginx -c /usr/local/nginx_fdfs/conf/nginx.conf
        启动好后,我们访问任意一台storage成功

zabbix分布式部署架构 分布式如何部署_扩展模块_08

目前访问文件资源就完成了!!
        但是这样的话用户就要记住6个地址ip,这样的情况下是有问题的;
        所以我们考虑在最外层做一个nginx统一域名,转发到两个tracker server
        20节点我们作为最外层的nginx,修改nginx.conf


zabbix分布式部署架构 分布式如何部署_fastdfs_09

         最终启动外层的nginx就可以了,大功告成!!