手把手教你搭建FastDFS集群(中)

上一篇博客,咱们一块儿搭建了storage和tracker集群,FastDFS集群还未搭建完毕,不过因为篇幅过长,所以须要分红两篇来写。html

1、tracker和storage集群上传图片测试nginx

        因为目前尚未搭建完集群,所以咱们暂且在tracker的一台设备上(咱们就选择192.168.156.5这台设备)使用client来上传图片进行测试。正则表达式

        1.进入到/etc/fdfs/目录下,咱们能够看到client.conf.sample这么一个配置文件,以下图所示。shell

        2.咱们使用命令:cp client.conf.sample client.conf复制一份该文件并命名为client.conf,以下图所示。vim

        3.修改client.conf配置文件,使用命令:vim client.conf,须要修改的配置有base_path=/fastdfs/tracker、tracker_server=192.168.156.5:22122和
tracker_server=192.168.156.6:22122,以下图所示。其中/fastdfs/tracker这个目录咱们已经建立过了,所以这时不须要再建立了。tcp

       4.下面咱们来上传一张图片,我把/usr/local目录下一张3.jpg图片上传,使用的命令:/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf /usr/local/3.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, 若是有多个磁盘,那就M0一、M02...等等。00/00表明磁盘上的两级目录,每级目录下是从00到FF共256个文件夹,两级就是256*256个。wKicB1jjiFmAOUdkAAHk-VzqZ6w720.jpg表示被存储到storage上的3.jpg被重命名的名字,这样作的目的是为了防止图片名字重复。测试

       咱们到两组group所在的四台设备的/fastdfs/storage/data/00/00目录下查看一下是否有咱们刚才上传的图片,发现192.168.156.7和192.168.156.8两台设备上有该图片,而192.168.156.9和192.168.156.10两台设备上没有该图片。这是因为192.168.156.7和192.168.156.8两台设备属于group1,而192.168.156.9和192.168.156.10属于group2,返回的图片信息中明确说明了存储在了group1下面,所以可group2下面是没有该图片的。url

        咱们在搭建集群的时候,配置的策略是轮询策略,那么咱们如今再上传一次该图片,看是否会存储到group2下面。以下图所示,发现此次返回的路径信息中显示存储到了group2下面。.net

        下面再到四台设备下的/fastdfs/storage/data/00/00目录下查看下图片信息,发现192.168.156.7和192.168.156.8这两台设备的图片仍是刚才那一张,并无新增图片。而192.168.156.9和192.168.156.10这两台设备上新增了咱们刚才上传的图片,这说明第二次上传确实是存储到了group2上面。rest

         你们能够屡次上传图片,就能够看到存储确实是一次group1,一次group2,轮询进行存储的,以下图所示。

      这里说一个状况,那就是同处一个组的某台设备若是发生了故障,那么这时上传的文件将只能存放到其它同组设备上,等故障设备修复后,同组的其它设备会自动将数据同步到该故障设备上,这个不用咱们干预。

2、配置Ngnix

        1.到目前为止,咱们仍是不可以使用http方式来上传或下载文件的,所以咱们须要配置下nginx来达到这个目的。咱们先关闭除两个组所在的四台以外的其它全部设备,而后把剩下的这四台设备切换到/usr/local/software目录下,以下图所示。

       2.这四台设备都须要执行同一个操做,那就是解压fastdfs-nginx-module_v1.16.tar.gz,咱们把命令:tar -zxvf fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/fast/复制到下面那个输入框中,默认状况下,在这个输入框中输入命令并按回车,命令执行的范围是当前会话,为了同时在四台设备上执行一样的命令,咱们能够切换到"所有Xshell(X)"。以下图所示。

      切换到"所有Xshell(X)"后,以下图所示,能够看到输入框左边的那个图标切换成了多个窗口的图标。这时咱们把鼠标放到输入框中,按回车即可同时在四台设备上执行相同的命令。

       解压信息以下图所示,其它设备我就不一一截图了。

     3.四台设备都须要进入到/usr/local/fast/fastdfs-nginx-module/src/这个目录下,所以咱们把cd /usr/local/fast/fastdfs-nginx-module/src/命令放到下面的输入框中并按回车。

       咱们能够看到在/usr/local/fast/fastdfs-nginx-module/src/这个目录下有个config配置文件,咱们须要修改下该文件。

       咱们在下面的全局输入框中输入"vim config"同时打开四台设备的该配置文件,以下图所示,该配置文件的第四行咱们须要作下修改,这是由于咱们前面为了查看方便而把东西放到了/usr/local/include下,可是实际执行make install安装时却安装在了/usr/include下面,也就是咱们多了一层local目录,所以咱们须要把该行的两个local目录去掉。

      去掉local目录后以下图所示。一样的,咱们把其它三台设备的这行配置也都去掉local目录。

       4.安装nginx依赖包

        把下面四条命令执行一遍。

        yum install pcre

        yum install pcre-devel

        yum install zlib

        yum install zlib-devel

      5.安装nginx

       四台设备都进入到/usr/local/software目录下,该目录下nginx-1.6.2.tar.gz是nginx安装包。

     把解压命令:tar -zxvf nginx-1.6.2.tar.gz -C /usr/local/输入到下面的输入框中,回车便可在这四台设备上同时执行解压操做。

        安装完以后,咱们都进入到/usr/local/nginx-1.6.2/目录下,而后在下面的输入框中输入命令:./configure --add-module=/usr/local/fast/fastdfs-nginx-module/src/并按回车,在四台设备上都加入下模块并进行检查。

      检查信息以下图所示。

      检查完以后,咱们在下面输入框中输入命令make && make install,回车,四台设备同时执行编译安装操做。

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

       下面咱们到/usr/local/fast/fastdfs-nginx-module/src/目录下,咱们仍是在输入框中输入cd /usr/local/fast/fastdfs-nginx-module/src/并回车,四台设备都进入到该目录下。

        咱们将cp mod_fastdfs.conf /etc/fdfs/复制到/etc/fdfs/目录下,咱们在下面输入框中输入命令cp mod_fastdfs.conf /etc/fdfs/并按回车,四台设备同时进行复制操做。

        复制完以后,咱们修改/etc/fdfs/目录下的mod_fastdfs.conf,咱们使用命令vim /etc/fdfs/mod_fastdfs.conf来编辑192.168.156.7上的该文件。

        须要修改的地方以下:

connect_timeout=10
tracker_server=192.168.156.5:22122
tracker_server=192.168.156.6:22122
storage_server_port=23000//默认就是2300,不用作修改
url_have_group_name=true
store_path0=/fastdfs/storage
group_name=group1
group_count=2


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


[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/fastdfs/storage

         修改后以下图所示。

       咱们把192.168.156.7上的这个配置文件复制到其它三台设备上,先到/etc/fdfs/目录下,以下图所示。

       使用命令:scp  mod_fastdfs.conf 192.168.156.8:/etc/fdfs/、scp  mod_fastdfs.conf 192.168.156.9:/etc/fdfs/、scp  mod_fastdfs.conf 192.168.156.10:/etc/fdfs/进行复制。

       复制完以后,咱们到八、九、10这三台设备上看下配置文件是否就是咱们刚才复制过去的文件。因为192.168.156.8这台设备与192.168.156.7这台设备同属group1,所以192.168.156.8这台设备不用作修改。咱们只需把192.168.156.9和192.168.156.10这两台设备的这个配置文件的group名称改成group2便可。192.168.156.9的修改以下图所示,192.168.156.10与之同样。

       接下来,咱们须要把/usr/local/fast/FastDFS/conf/目录下的http.conf和mime.types两个文件复制到/etc/fdfs/目录下,因为这四台设备的这步操做都同样,所以咱们在下面的输入框中输入cd /usr/local/fast/FastDFS/conf/并回车,都进入到该目录下,而后输入命令cp http.conf mime.types /etc/fdfs/并回车,在四台设备同时进行复制操做。

       复制完以后,咱们给四个节点都建立一下软连接,因为步骤都同样,所以在下面输入框中输入建立软连接命令:ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00并同时执行就能够了。以下图所示。

       建立完软连接以后,咱们来配置下nginx,因为四个节点操做同样,咱们都进入到/usr/local/nginx/conf/这个目录下,并使用命令vim nginx.conf来编辑该文件,咱们须要修改的地方有listen端口,把它由80改为8888,至于缘由,是由于咱们在上篇博客搭建storage的时候使用的端口是8888,所以这里也须要使用8888。另外一个修改的地方是location,修改代码以下,路径采用正则表达式来匹配,匹配group0到group9下的M00前缀。因为fastdfs与nginx的模块结合,所以须要在location当中添加该模块。

 

[html] view plain copy

  1. location ~/group([0-9])/M00 {  
  2.               ngx_fastdfs_module;   
  3.         }  


 

 

       修改完192.168.156.7以后,咱们把这个配置文件再复制到其它三台设备上。在用scp复制文件到其它设备的时候,反应很慢,加上-o GSSAPIAuthentication=no会快点,但仍是不够快,解决办法是咱们能够在/etc/hosts文件当中配置全部要通讯的设备的IP和名称的映射,这样scp就很快了。

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

       7.启动完nginx以后,咱们如今即可以经过http的方式访问上传到FastDFS上的文件了,好比咱们如今再把那个3.jpg文件上传一次并拿回显地址去访问,以下所示(注意:上传是在192.168.156.5上进行的)。

 

[html] view plain copy

  1. [root@itcast05 local]# /usr/bin/fdfs_upload_file  /etc/fdfs/client.conf /usr/local/3.jpg  
  2. group1/M00/00/00/wKicCFjj1xqAcN8EAAHk-VzqZ6w619.jpg  
  3. [root@itcast05 local]#   

       咱们在地址栏输入:http://192.168.156.7:8888/group1/M00/00/00/wKicCFjj1xqAcN8EAAHk-VzqZ6w619.jpg,这时咱们访问不到图片,以下图所示。

        缘由是咱们的虚拟机的防火墙把端口8888给阻拦了,禁止外界访问,解决方法有两个:

       1.关闭虚拟机的防火墙,并禁止开启自启动,你们能够参考:http://blog.csdn.NET/u012453843/article/details/52411019这篇博客进行防火墙的关闭操做。

       2.不关闭防火墙,只是让外界能够访问8888端口,这在实际环境中更实用,所以,咱们采用方法2。

方法2的操做方法以下:

       使用命令:vim /etc/sysconfig/iptables打开编辑界面,以下图所示,咱们添加的一行内容是:-A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT

        编辑完以后,保存退出,以后须要从新启动防火墙,重启的命令:service iptables restart,以下图所示。

        这样192.168.156.7这台设备的防火墙咱们便配置好了,其它三台设备咱们也都配置一下防火墙。

        配置过防火墙以后,咱们再访问http://192.168.156.7:8888/group1/M00/00/00/wKicCFjj1xqAcN8EAAHk-VzqZ6w619.jpg,这时咱们即可以看到图片了,以下图所示:


相关文章
相关标签/搜索