上一章节介绍了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你可以搞很多个主备,保证每个主备配置一样就可以。大小也没有限制和其他组要求一样,这个需要提前说明下。
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
返回成功。
这里注意,如果有时候发现总是往一台上打的话,不是说明负载有问题,而是有个配置
tracker.conf里有这么两个配置
store_lookup:0表示轮询;1表示上传到指定的组,配合store_group确定(一般不建议这么做); 2表示负载均衡,选择一个空间较大的组进行上传。
那么到这,集群配置完毕!
因为我们没有部署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配置
两台tracker server都这么配置!
启动2台tracker server的nginx
/usr/local/nginx_fdfs/sbin/nginx -c /usr/local/nginx_fdfs/conf/nginx.conf
启动成功如图
配置另外4台storage的nginx添加http访问路径的拦截
cd /usr/local/nginx_fdfs/conf,修改nginx的配置
四台记得都要修改这个nginx.conf
然后把这个mod_fastdfs.conf文件下载下来修改
这些参数按照我发的配置调整下:
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成功
目前访问文件资源就完成了!!
但是这样的话用户就要记住6个地址ip,这样的情况下是有问题的;
所以我们考虑在最外层做一个nginx统一域名,转发到两个tracker server
20节点我们作为最外层的nginx,修改nginx.conf
最终启动外层的nginx就可以了,大功告成!!