fastdfs配合nginx部署

一:Fastdfs 概括:

 

1.libevent 事件触发的网络库安装

 # yum install libevent libevent-devel

 

因为fastdfs的编译安装依赖libevent库。

 

   2.Fastdfs源码下载安装:

https://code.google.com/p/fastdfs/downloads/list官方下载列表。

 

(1):解构浅谈:Fastdfs分为Tracker server 和 Storage server两部分,基本结构如下图所示。

wKiom1QZYxvjw0U1AAFH69W4ZbE396.jpg

客户端对于文件的上传和下载都需要和tracke rserver建立连接,并通过tracker的查询与调度,然后分配给客户端“合适”的存储空间storage server组进行数据的存储,大概流程如下图所示:

wKioL1QZY3Dj7LF8AABmbUMA0wE740.jpg

                                                                                                                                          文件上传流程

 wKiom1QZY2yy8aBYAABpWeEr3cE089.jpg

文件下载流程

不难看出Tracker server对于整个fastdfs集群的重要性,fastdfs是对等分组的,因此不存在单点,Trackerstorage都可以横向扩展。此处不做详细解释,可参考:http://blog.csdn.net/luyee2010/article/details/9335591进行学习。

二:安装与配置:

(1):基本安装fastdfs是不支持mount方式挂载的,任何形式的数据存储都需要API的方式来连接,因此fastdfs也支持了很多应用场景的模块:如nginx、php、java模块等(https://code.google.com/p/fastdfs/downloads/list)。

下面以nginx模块安装为测试,tracker端和storage端都需要安装源码包,只不过启动的时候是以不同的配置文件来区分,如:tracker.conf、storage.conf、client.conf等。

参考博文:http://250688049.blog.51cto.com/643101/1067985 (部署与问题汇总)

          http://250688049.blog.51cto.com/643101/1069632 (问题汇总)

 

# wget http://fastdfs.googlecode.com/files/FastDFS_v3.03.tar.gz

tar -zxvf FastDFS_v3.03.tar.gz 

cd FastDFS

vim  make.sh  将#WITH_HTTPD=1 修改成WITH_HTTPD=1 以支持 http 

./make.sh

./make.sh install

 

(2):配置:tracker server端配置

 安装:

 # mkdir /data/fastdfs  

 # vi /etc/fdfs/tracker.conf  

 # base_path=/home/yuqing/fastdfs  修改为: base_path=/data/fastdfs  

 # http.server_port=8080  修改为:http.server_port=80 

 # ##include http.conf  修改为 #include http.conf   “这里一个#紧跟字符串的方式代表include,注意这里的include http.conf不开启有可能会导致fastdfs启动失败。取决于编译的时候是否支持http。

 #reserved_storage_space = 4GB -> reserved_storage_space = 1GB “预留空间设置”

 

启动:

/usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf

启动之后可以通过检查tracker日志的方式来看tracker进程是否启动成功:              tail -f /data/fastdfs/logs/trackerd.log:

如下所示:tracker server端启动成功。

 

 wKiom1QZY4vSFVYTAAQ8Rk4E94Q534.jpg

 

Tracker server集群添加新节点

只需在storage server端修改配置文件并且重启即可。注意这里是个小坑:之前以为多个tracker节点的IP都写在同一行以空格或者逗号的形式隔开,而实际上是每行一个。

# vim /etc/fdfs/storage.conf

 

tracker_server=10.20.216.171:22122  # 多个tracker server的话每行一个。

tracker_server=10.20.216.172:22122  # 多个tracker server的话每行一个。

修改完配置文件后,重新启动即可:

# cp -r /usr/local/software/FastDFS/init.d/ /etc/init.d/         #将源码目录下的启动脚本复制到系统启动目录下

[root@yw-0-0 ~]# /etc/init.d/fdfs_trackerd restart

Usage: /etc/init.d/fdfs_trackerd {start|stop|status|restart|condrestart}

如下图:172和171分别为两个tracker节点。

 wKiom1QZZAWh1nc4AAIEvt2q5pg173.jpg

 

  (3) storage节点配置

Nginx服务器是安装在Storeage服务器上的,也就是说一般情况下它只提供对本Storeage服务器上的资源提供服务。只有在本机并没有需要获取的资源的情况下,才会进行特殊的处理。

安装nginx、fastdfs_nginx_module、FastDFS源码包。

Fastdfs:

解压完FastDFS源码包后,在执行./make的时候,之前提到过的#WITH_HTTPD=1 修改成WITH_HTTPD=1 以支持 http操作可以省略。因为nginx模块支持。

Fastdfs_nginx_module:

https://fastdfs-nginx-module.googlecode.com/files/fastdfs-nginx-module_v1.10.tar.gz #下载Fastdfs的nginx模块。(注意:这里的nginx模块版本如果和nginx不匹配会make不过去。这个1.10的版本和nginx的1.2.*都匹配。)

http://nginx.org/download/nginx-1.2.9.tar.gz                                         #下载nginx的源码包。

 

解压Fastdfs_nginx_module。

[root@yw-0-0 src]# tar -zxvf fastdfs-nginx-module_v1.10.tar.gz

编译nginx支持Fastdfs。

[root@yw-0-0 nginx-1.2.3]# ./configure --prefix=/usr/local/nginx --add-module=/usr/local/software/fastdfs-nginx-module/src --with-pcre=/usr/local/software/pcre-8.30

[root@yw-0-0 nginx-1.2.3]# make && make install

 

配置:

修改storage server配置文件

]# vi /etc/fdfs/storage.conf              #主要修改以下几项

group_name=group1                         #fastdfs storage组名,因为存储是以组名区别的。

base_path=/data/fdfs_storage1             #放置data存储卷属性、状态和logs的目录。多个存储组可用同一个/data/fdfs_storage1目录。

store_path0=/data/fdfs_storage1    #放置存储数据的目录,实际都存储在/data/fdfs_storage1/data下(多个存储路径可设置多个,每个路径储存在单盘上提高IO吞吐)。

tracker_server=172.16.23.176:22122        # tracker组定义,多个组时每行一个。注意:fastdfs都是storage端主动去和tracker端进行连接的,当添加storage时只需在新增的storage端修改一下配置文件的tracker-server 地址就可以,当启动时会自动同步同组storage的数据

tracker_server=172.16.23.177:22122

http.disabled=true                        #是否关闭自身的http模块,true为关闭、false为开启。利用nginx承载HTTP服务时,应当关闭内置HTTP服务。

http.server_port=80#HTTP-server的端口号,注意:所有storage-server集群中的http端口号需要一致,否则不一致的添加不到集群中。

 

Storage server多组设置:

当同一个storage节点机器上,需要创建多个(2个以上)storage组时(1个组1个mount目录,每个目录挂载到单盘上,不要有硬raid,单盘提升IO吞吐量),方法如下:

]# vi /etc/fdfs/storage.conf 

group_name=group1          # 组名定义

group_name=meinv           # 新增的组名meinv。注意:这里如果新增组的话,此storage组中的其他节点机器也要新增相同的组名,换句话说同一个集群中的storage.conf配置文件需要一致(如下内容必须一致,否则同组内的机器建立不了对等关系,不一样的状态为OFFLine)。

# path(disk or mount point) count, default value is 1

store_path_count=1         # 存储空间目录个数

# store_path#, based 0, if store_path0 not exists, it's value is base_path

# the paths must be exist         #

store_path0=/data/fdfs_stroge1    # 数据存储的路径,路径个数与上面的count个数一致。并且此路径下的所有数据,存储的都是上面指定组下的数据。

#store_path1=/data/fdfs_stroge2

http.server_port=80

因此,如果需要建立多个组,并且严格要求以业务来区分的话。建议单独新建一个storage配置文件,如storage_liebao.conf,

[root@yw-0-0 fdfs]# cp /etc/fdfs/storage.conf /etc/fdfs/storage_liebao.conf

[root@yw-0-0 fdfs]# vim /etc/fdfs/storage_liebao.conf

group_name=liebao1

port=23001                                           # 由于默认的23000端口已被占用,因此开启一个新的23001端口。注意storage server集群中相同组的端口号需相同。

base_path=/data/fdfs_stroge_liebao

store_path_count=1

store_path0=/data/fdfs_stroge_liebao

 

如果需要删除组内一台storage节点的话,方法如下:

/usr/local/bin/fdfs_monitor /etc/fdfs/client.conf -h 172.16.23.176 delete group1 172.16.23.173   # 注意:如果被删除的storage server的状态是ACTIVE,也就是该storage server还在线上服务的情况下,是无法删除掉的

[root@yw-0-0 fdfs_storage_game_pic]# fdfs_monitor 

Usage: fdfs_monitor <config_file> [-h <tracker_server>] [list|delete <group_name> [storage_ip]]

 

 

修改mod_nginx―fastdfs配置模块。

]# cp /usr/local/software/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

]# vim /etc/fdfs/mod_fastdfs.conf

base_path=/home/storage               # 和storage的base一样

tracker_server=172.16.23.176:22122    #

tracker_server=172.16.23.175:22122    #

group_name=group1                     此台storage server所属的服务器组名

url_have_group_name =true             在URL中是否包含group名称

store_path0=/home/storage             # 放置存储数据的目录。和storage的一样。

http.need_find_content_type=true     nginx下需要将http.conf中的参数http. need_find_content_type设置为true,apache设置为false(文档建议,个人测试中未设置)

 

修改nginx配置,添加到fastdfs的跳转

[root@storage]# vi /usr/local/nginx/conf/nginx.conf

location /group1/M00    # 不同的组可以设置多个跳转。

  {

root /home/storage/data;

ngx_fastdfs_module;

  }

启动:

依次启动tracker端、storage端、和storage端的nginx

]# /etc/init.d/fdfs_trackerd start

]# /etc/init.d/fdfs_storaged start

]# nginx 

启动完毕后,可以通过fdfs自带的stat程序查看集群状态:

[root@yw-0-0 ~]# fdfs_monitor 

Usage: fdfs_monitor <config_file> [-h <tracker_server>] [list|delete <group_name> [storage_ip]]

[root@yw-0-0 ~]# fdfs_monitor /etc/fdfs/storage.conf           # 如下图

 

 wKioL1QZY-uiduPAAAMHHZ_x4bU291.jpg

至此,fastdfs的安装部署基本都已经完成,并且可以正常运行。下面就可以根据各自的场景创建自己的fastdfs存储集群啦!


你可能感兴趣的:(fastDFS,初步部署安装)