FastDFS集群版安装

说明


1个监控节点、2个存储节点。

服务器 说明
192.168.2.7 监控节点
192.168.2.8(192.168.156.5) 存储节点1,group1
192.168.2.9(192.168.156.6) 存储节点1、group2

多台环境部署


注:这样可以在多台服务器中执行同一条命令

安装部署


1、安装gcc,使用的命令:

yum install make cmake gcc gcc-c++

在192.168.2.7、192.168.2.8、192.168.2.9虚拟机也都安装gcc环境。

2、最小化安装是没有zip和unzip命令的,所以需要安装,安装命令

yum install zip unzip

在192.168.2.7、192.168.2.8、192.168.2.9虚拟机也安装zip和unzip

3、下载安装libfastcommon

mkdir  /usr/local/software

cd  /usr/local/software

yum install git

git clone http://github.com/happyfish100/libfastcommon.git

4、安装vim

yum install vim-enhanced

同理在192.168.2.7、192.168.2.8、192.168.2.9虚拟机也安装vim命令

5、编译

cd  /usr/local/libfastcommon/

./make.sh

./make.sh  install

6、创建软链接
我们从上图中可以看到执行./make.sh install命令后把fastcommon安装在了/usr/lib64下面,这个目录不是我们常用的目录,如果不实用软链接的话,将来安装的东西多了,它们的安装目录我们将比较难找到,不便于管理操作,为了在我们熟悉的目录下看到我们安装的目录,我们使用软链接来实现,执行如下命令

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

同理,我们在192.168.2.7、192.168.2.8、192.168.2.9上也创建同样的软链接

安装FastDFS


1、下载fastDFS安装包

cd  /usr/local/software

wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz

mkdir /usr/local/fast

tar -zxvf  V5.11.tar.gz  -C  /usr/local/fast

cd  /usr/local/fast/fastdfs-5.11/

./make.sh

./make.sh install

同理,我们在192.168.2.7、192.168.2.8、192.168.2.9上也进行与同样的安装操作。

2、修改配置文件

因为FastDFS服务脚本设置的bin目录为/usr/local/bin/下,但是实际我们安装在了/usr/bin/下面。所以我们需要修改FastDFS配置文件中的路径,也就是需要修改俩 个配置文件: 命令:vim /etc/init.d/fdfs_storaged 输入一个":",然后输入全局替换命令:%s+/usr/local/bin+/usr/bin并按回车即可完成替换,替换完之后,保存退出该文件,然后再打开看一下是否都已经将/usr/local/bin替换成/usr/bin了。同样的步骤,输入第二条命令:vim /etc/init.d/fdfs_trackerd 进行全局替换,替换命令:%s+/usr/local/bin+/usr/bin。同样为192.168.2.7、192.168.2.8、192.168.2.9进行替换操作

vim /etc/init.d/fdfs_storaged

:%s+/usr/local/bin+/usr/bin

3、前面做的都是公共部分的配置。

下面我们来配置tracker1(192.168.2.7)。我们先到/etc/fdfs/目录下,使用cp tracker.conf.sample tracker.conf复制一份tracker.conf.sample并更名为tracker.conf。

cd /etc/fdfs/

cp tracker.conf.sample  tracker.conf

4、编辑tracker.conf文件,需要修改的地方有两处
第一处:base_path,将默认的路径修改为/usr/lgip_fastdfs/fastdfs-tracker-log。
第二处:store_lookup,该值默认是2(即负载均衡策略),现在把它修改为0(即轮询策略,修改成这样方便一会儿我们进行测试,当然,最终还是要改回到2的。如果值为1的话表明要始终向某个group进行上传下载操作,这时下图中的"store_group=group2"才会起作用,如果值是0或2,则"store_group=group2"不起作用)。

vim tracker.conf


如有多台tracker服务器。此tracker文件的配置完全一致。因此我们需要对多台服务器上tracker配置文件进行相同操作。或者可以直接使用命令复制到其他服务器上。scp tracker.conf 目标服务器ip:/etc/fdfs/.如scp tracker.conf 192.168.2.8:/etc/fdfs/
示意图:

5、创建
由于我们给base_path配置的路径/usr/lgip_fastdfs/fastdfs-tracker-log当前并不存在,因此我们需要在tracker服务器上创建一下该目录,其中-p表示递归创建目录

mkdir   -p  /usr/lgip_fastdfs/fastdfs-tracker-log

6、配置、添加防火墙
在启动前,我们需要先在192.168.2.8和192.168.2.9这两台设备上配置一下防火墙,添加端口22122,从而可以让其它设备可以访问22122端口。添加的内容:-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT,如下图所示(注意所有的例子都是以一个为例,其它照着操作就可以了)

vim /etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT

7、重启防火墙
启动之后,我们再查看该目录,发现多了两个目录data和logs,我们可以通过命令:ps -ef | grep fdfs来查看tracker是否正常启动,如下图所示:其他tracker服务器启动同理。

service iptables restart

/etc/init.d/fdfs_trackerd start

cd /usr/lgip_fastdfs/fastdfs-tracker-log/

/etc/init.d/fdfs_trackerd start

ps -ef|grep fdfs

注:如果想要停止tracker的话,就使用命令 /etc/init.d/fdfs_trackerd stop

8、配置storage

按照我们的规划,192.168.2.8、192.168.2.9两台虚拟机将作为我们的存储节点,节点中同一组的配置应该是相同的,也就是192.168.2.8一组(组名为group1),192.168.12.9一组(组名为group2)。
首先,进入2台机器的配置文件目录/etc/fdfs,然后进行复制storage.conf.sample并更名为storage.conf

cp storage.conf.sample storage.conf

cd /etc/fdfs/

cp storage.conf.sample storage.confc

9、修改storage.conf
对于group1的192.168.2.8这台设备需要修改的配置如下。

vim storage.conf

将下述内容添加到storage.conf中

base_path= /usr/lgip_fastdfs/fastdfs-storage-log
store_path0=/usr/lgip_fastdfs/fastdfs-file-save
tracker_server=192.168.2.7:22122    //此处tracker(跟踪节点)的ip:端口,可以配置多个

例如:

修改完成后,完完整的配置如下组图:

完整配置参考可点击下载附件查看,。(相关参数请按照文档说明,修改为实际参数。)

10、创建目录

mkdir  -p  /usr/lgip_fastdfs/fastdfs-storage-log

mkdir  -p  /usr/lgip_fastdfs/fastdfs-file-save

11、再次配置防火墙端口

11、再次配置防火墙端口

vim /etc/sysconfig/iptablrs

-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT

12、再次启动防火墙
配置完防火墙之后,我们到storage所在的两台虚拟机的/usr/lgip_fastdfs/fastdfs-storage-log/
目录下,进行启动,然后查看启动信息,如下图所示(192.168.2.9这台虚拟机的操作图)。可以看到,192.168.2.9这台设备成功与tracker设备连接了,其中192.168.2.7作为tracker集群的leader。192.168.2.9分组(group2),因此可以从下图的信息中看到成功与192.168.2.9连接的信息。如下图:

cd /usr/lgip_fastdfs/fastdfs-storage-log/
/etc/init.d/fdfs_storaged start

tailf logs/storaged.log

当我们所有的tracker和storage节点都启动成功之后,我们可以在任意的一个存储节点上查看存储集群的信息,命令:/usr/bin/fdfs_monitor /etc/fdfs/storage.conf,可以看到如下图所示的集群信息。group的数量是2,第一组的IP有192.168.28,第二组的IP有192.168.2.9,与我们规划的集群完全一致。如下图:

查看fdfs所有的命令

cd /usr/bin/ && ls | grep fdfs

在tracker服务器中上传图片进行测试


1、进入到/etc/fdfs/目录下,看到client.conf.sample这么一个配置文件,

cd /etc/fdfs/

2、复制一份该文件并命名为client.conf

cp client.conf.sample client.conf

3、修改client.conf配置文件

mkdir -p  /usr/lgip_fastdfs/fastdfs-client-log   //新建文件用于存放日志

vim client.conf

添加如下配置:

base_path=/usr/lgip_fastdfs/fastdfs-client-log
tracker_server=192.168.2.7:22122

4、上传图片

我把/usr/local目录下一张aa.jpg图片上传,可以看到这条命令由3部分组成,第一部分是/usr/bin/fdfs_upload_file,意思是指定要进行上传文件操作,第二部分是/etc/fdfs/client.conf,意思是指定上传操作使用的配置文件,这个配置文件就是我们上面刚配置过的client.conf文件,第三部分是/usr/local/3.jpg,意思是指定要上传哪个目录下的哪个文件。按回车执行上传命令后,会返回一个串:group1/M00/00/00/wKicB1jjiFmAOUdkAAHk-VzqZ6w720.jpg,其中group1表示这张图片被保存在了哪个组当中,M00代表磁盘目录,如果电脑只有一个磁盘那就只有M00, 如果有多个磁盘,那就M01、M02...等等。00/00代表磁盘上的两级目录,每级目录下是从00到FF共256个文件夹,两级就是256*256个。wKicB1jjiFmAOUdkAAHk-VzqZ6w720.jpg表示被存储到storage上的aa.jpg被重命名的名字,这样做的目的是为了防止图片名字重复。

/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /usr/local/aa.jpg

配置nginx


到目前为止,我们还是不能够使用http方式来上传或下载文件的,因此我们需要配置下nginx来达到这个目的。我们先关闭除两个组所在的四台之外的其它所有设备,然后把剩下的这四台设备切换到/usr/local/software目录下

cd /usr/local/software

1、安装fastdfs-nginx-module
可以通过地址下载: https://github.com/happyfish100/fastdfs-nginx-module

也可以使用命令下载:

yum install unzip

unzip -d /usr/local/fast  fastdfs-nginx-module-master.zip

2、安装nginx依赖包

yum install pcre

yum install pcre-devel

yum install zlib

yum install zlib-devel

cd   /usr/local/software

wget http://nginx.org/download/nginx-1.9.9.tar.gz

tar -zvxf nginx-1.9.9.tar.gz  -C /usr/local

cd /usr/local/nginx-1.9.9/

./configure --add-module=/usr/local/fast/fastdfs-nginx-module-master/src/

安装信息中没有出现错误信息,说明我们的安装成功,安装完之后,我们到/usr/local/目录下,可以看到多了一个nginx的文件夹,如下图所示:

3、将mod_fastdfs.conf 复制到/etc/fdfs/目录下

cd /usr/local/fast/fastdfs-nginx-module-master/src

cp mod_fastdfs.conf /etc/fdfs/

cd  /etc/fdfs

4、修改/etc/fdfs/目录下的mod_fastdfs.conf

vim mod_fastdfs.conf

修改内容如下

connect_timeout=10
tracker_server=192.168.2.7:22122
storage_server_port=23000//默认就是2300,不用做修改
url_have_group_name=true
store_path0= /usr/lgip_fastdfs/fastdfs-file-save
group_name=group1
group_count=2

[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/usr/lgip_fastdfs/fastdfs-file-save

[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/usr/lgip_fastdfs/fastdfs-file-save

5、把192.168.2.8上的这个配置文件复制到其设备上

cd /etc/fdfs/

scp  mod_fastdfs.conf 192.168.2.9:/etc/fdfs/

复制完之后,我们到设备上看下配置文件是否就是我们刚才复制过去的文件。192.168.2.9这两台设备的这个配置文件的group名称改为group2即可

接下来,我们需要把 /usr/local/fast/fastdfs-5.11/conf/目录下的http.conf和mime.types两个文件复制到/etc/fdfs/目录下,由于这四台设备的这步操作都一样,因此我们在下面的输入框中输入cd /usr/local/fast/fastdfs-5.11/conf/并回车,都进入到该目录下,然后输入命令cp http.conf mime.types /etc/fdfs/并回车,在四台设备同时进行复制操作

cd  /usr/local/fast/fastdfs-5.11/conf/

cp http.conf mime.types /etc/fdfs/

复制完之后,我们给四个节点都创建一下软链接,由于步骤同上

ln -s /usr/lgip_fastdfs/fastdfs-storage-log/data/  /usr/lgip_fastdfs/fastdfs-storage-log/data/M00

6、创建完软链接之后,我们来配置下nginx,由于四个节点操作一样,我们都进入到/usr/local/nginx/conf/这个目录下,并编辑nginx.conf文件,我们需要修改的地方有listen端口,把它由80改成8888,至于原因,是因为我们在搭建storage的时候使用的端口是8888,因此这里也需要使用8888。另一个修改的地方是location,修改代码如下,路径采用正则表达式来匹配,匹配group0到group9下的M00前缀。由于fastdfs与nginx的模块结合,因此需要在location当中添加该模块。

cd /usr/local/nginx/conf/

vim nginx.conf

在server添加如下内容

location ~/group[1-2]/M00 { 
    root /usr/lgip_fastdfs/fastdfs-file-save/data;
    ngx_fastdfs_module; 
}

7、修改完192.168.2.8之后,我们把这个配置文件再复制到其它设备上。在用scp复制文件到其它设备的时候,反应很慢,加上-o GSSAPIAuthentication=no会快点,但还是不够快,解决办法是我们可以在/etc/hosts文件当中配置所有要通信的设备的IP和名称的映射,这样scp就很快了。

设备都启动nginx,我们在下面的输入框中输入/usr/local/nginx/sbin/nginx并按回车,设备同时启动nginx。

/usr/local/nginx/sbin/nginx

8、启动完nginx之后,我们现在便可以通过http的方式访问上传到FastDFS上的文件了,比如我们现在再把那个aa.jpg文件上传一次并拿回显地址去访问,如下所示(注意:上传是在192.168.2.7(tracker)上进行的)

/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf /usr/local/aa.jpg

9、开启访问页面访问端口

/sbin/iptables -I INPUT -p tcp --dport 8888 -j ACCEPT

访问http://192.168.2.9:8888/group2/M00/00/00/wKgCCVr0RFaAXhsSAAFIIQxiGbQ950.jpg,这时我们便可以看到图片了,如下图所示:

results matching ""

    No results matching ""