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。
? ? ? ? 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就可以了,大功告成!!
????????