Group1 的储存技能是 100GB

图片 11

法斯特DFS结构简要介绍

FastDFS是风度翩翩款开源的、布满式文件系统(Distributed File
System卡塔尔国,由Taobao开荒平台部资深架构师余庆开辟。法斯特DFS
是归纳风流洒脱组 Tracker Server 和 Storage Server 的。Tracker Server 与
Storage Server
之间不直接通讯,其主干的新闻由安插文件在系统运行加载时获悉。多台 Tracker
Server 之间保险了 Tracker 的布满式,Tracker Server
之间是对等的,防止了单点故障。 Storage Server 是分成多少个 Group,各类Group 中的Storage 都以互相备份的,约等于说,如若 Group1 有
Storage1、Storage2、Storage3,其体积分别是100GB、100GB、100GB,那么
Group1 的仓库储存才能是 100GB,并不是300GB,这正是并行备份的意味。进一层说,整个 Group
的蕴藏技艺由该组中该储本事最小的 Storage 决定。多少个 Group
之间的存放方式,能够利用 round robin(轮流培训卡塔尔国、load
balanced(负载均衡卡塔 尔(阿拉伯语:قطر‎或内定 Group
的办法。另一些针锋相对于MS(Master-Slave卡塔尔形式的优势,正是 Tracker Server 与
Master 是自然不一样的,不唯有 master 有上边恐怕涉嫌的单点故障难题,况兼client 与 master 之间或者会现身瓶颈。但 法斯特DFS 布局中,Tracker Server
不会称呼系统瓶颈,数据最后是与一个 available 的 Storage Server
实行传输的。

上传流程

咱俩得以因而 法斯特DFS 对文件的上传进度,来起头摸底 法斯特DFS
的主干构造。首先客户端 client 发起对 法斯特DFS
的文件传输动作,是透过连接到某风流罗曼蒂克台 Tracker Server
的钦命端口来落到实处的,Tracker Server
依据当前已调整的新闻,来调整选用哪风流洒脱台 Storage Server
,然后将以此Storage Server 之处等音信重回给 client,然后 client
再通过那几个消息连接到那台 Storage Server,将在上传的公文字传递送到给 Storage
Server上。

总结

轻巧易行计算一下,法斯特DFS的天性包含(1卡塔 尔(阿拉伯语:قطر‎高可信赖性:无单点故障;(2卡塔 尔(阿拉伯语:قطر‎高吞吐量:只要
Group 充足多,数据流量是十足分散的。

 

FastDFS部署:

1、机器遍及

Tracker 192.168.100.106:22122 CentOS

Group1-Storage1 192.168.100.106:23001 CentOS

Group1-Storage1 192.168.100.125:23001 CentOS

 

2、要求到的软件和本子(软件寄放地点:/root/soft卡塔 尔(英语:State of Qatar)

 图片 1

证实:nginx首要实现负载均衡、缓存等效果

 

3、创设连锁文书夹

配置tracker所需的base_path: /opt/fastdfs_tracker

配置storage所需的日志目录:fastdfs_storage_info。备注:存储storage之间同步文件等日志的

配置storage所需的积累文件目录: /opt/fastdfs_storage_data。备注:
那一个目录是用来积存文件的

 

上述多个公文就要三回九转的tracker.conf和storage.conf、mod_fastdfs.conf中用到

 

4、安装libfastcommon-1.0.7.zip
(注意:先检查是不是安装unzip、zip、gcc、perl等)

unzip libfastcommon-1.0.7.zip

cd libfastcommon-1.0.7

sh make.sh && sh make.sh install

 

perl安装:

wget

              tar zxvf perl-5.20.2.tar.gz               

              mkdir /usr/local/perl

              ./Configure -des -Dprefix=/usr/local/perl
-Dusethreads -Uversiononly

              make

              make install

              perl -version   

 

注意:上述安装路线在/usr/lib64/,法斯特DFS主程序设置lib目录是/usr/local/lib,成立软连接如下: 

             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

 

5、安装fastdfs-5.05.tar.gz:

tar -zxvf fastdfs-5.05.tar.gz

cd fastdfs-5.05

./make.sh && ./make.sh install

 

跻身/etc/fdfs那些目录,如若有布署文件存在,则设置成功

图片 2

 

 

 

 

以上步骤在tracker和storage机器上都须要实行

 

6、配置tracker (192.168.100.106)

步向/etc/fdfs文件夹,实行命令: cp  tracker.conf.sample  tracker.conf。

      编辑tracker.conf,实行命令: vi  tracker.conf ,配置成如下:

disabled=false #false代表开启配置文件

bind_addr= #空代表享有host,也足以钦命host

port=22122 #tracker默许开启的端口号

connect_timeout=30 #连续几日超时时间

network_timeout=60 #网络超时时间

base_path=/opt/fastdfs_tracker #贮存store的数量和日志文件

max_connections=256 #同意最亚松森接数

accept_threads=1 #同意的线程数

work_threads=4 #专业线程数,必需低于等于max_connections

store_lookup=2 #分选上传文件情势0:轮询,1:内定组,2:负载均衡

store_group=group1 #上传到组group1

store_server=0 #上传到storage,0:轮询,1:IP顺序,2:服务器顺序

store_path=0 #上传文件到哪些路线0:轮询,2:负载均衡

download_server=0 #点名下载服务器0:轮询,1:使用源服务器

reserved_storage_space = 10% #封存的存放空间

log_level=info #日志等第

run_by_group= #选用顾客组,空代表当前客户组

run_by_user= #慎采客户,空代表当前顾客

allow_hosts=* #同意访谈的IP,*意味着全部

sync_log_buff_interval = 10 #联合日志buff到磁盘的间距时间

check_active_interval = 120 #检查storage状态间隔时间

thread_stack_size = 64KB #线程的仓库大小,必得超过等于64KB

storage_ip_changed_auto_adjust = true #storageIP改换是半自动调治

storage_sync_file_max_delay = 86400 #大器晚成道文件的最大延迟

storage_sync_file_max_time = 300 #一同文件的最大时间

use_trunk_file = false #是或不是选择中继文件存款和储蓄小文件

slot_min_size = 256 #积累文件的渺小单位,必需大于等于4KB

slot_max_size = 16MB #储存文件的最大单位,必需超过slot_min_size

trunk_file_size = 64MB #对接文件的高低,必须超过等于4MB

trunk_create_file_advance = false #是或不是允许成立中继文件超前

trunk_create_file_time_base = 02:00 #始建trunk文件的时光标准

trunk_create_file_interval = 86400 #开创trunk文件的小运间隔

trunk_create_file_space_threshold = 20G

trunk_init_check_occupying = false

trunk_init_reload_from_binlog = false

trunk_compress_binlog_min_interval = 0

use_storage_id = false

storage_ids_filename = storage_ids.conf

id_type_in_filename = ip

store_slave_file_use_link = false

rotate_error_log = false

error_log_rotate_time=00:00

rotate_error_log_size = 0

log_file_keep_days = 0

use_connection_pool = false

connection_pool_max_idle_time = 3600

http.server_port=8080

http.check_alive_interval=30

http.check_alive_type=tcp

http.check_alive_uri=/status.htm

 

结构文件详细评释参谋:

 

启动tracker: /usr/local/bin/fdfs_trackerd  /etc/fdfs/tracker.conf
 start (startstoprestart)

检查评定是不是运维成功:netstat -lntup|grep fdfs_trackerd

图片 3 

 

安装开机运维:

echo “/usr/bin/fdfs_trackerd  /etc/fdfs/tracker.conf  start” >>
/etc/rc.d/rc.local

 

7、配置storage (192.168.100.106192.168.100.125)

跻身/etc/fdfs文件夹,推行命令: cp  storage.conf.sample  storage.conf

编辑storage.conf,施行命令: vi storage.conf ,配置成如下:

disabled=false

group_name=group1

bind_addr=

client_bind=true

port=23001

connect_timeout=30

network_timeout=60

heart_beat_interval=30

stat_report_interval=60

base_path=/opt/fastdfs_storage_info

max_connections=256

buff_size = 256KB

accept_threads=1

work_threads=4

disk_rw_separated = true

disk_reader_threads = 1

disk_writer_threads = 1

sync_wait_msec=50

sync_interval=0

sync_start_time=00:00

sync_end_time=23:59

write_mark_file_freq=500

store_path_count=1

store_path0=/opt/fastdfs_storage_data

subdir_count_per_path=256

tracker_server=192.168.100.106:22122

log_level=info

run_by_group=

run_by_user=

allow_hosts=*

file_distribute_path_mode=0

file_distribute_rotate_count=100

fsync_after_written_bytes=0

sync_log_buff_interval=10

sync_binlog_buff_interval=10

sync_stat_file_interval=300

thread_stack_size=512KB

upload_priority=10

if_alias_prefix=

check_file_duplicate=0

file_signature_method=hash

key_namespace=FastDFS

keep_alive=0

use_access_log = false

rotate_access_log = false

access_log_rotate_time=00:00

rotate_error_log = false

error_log_rotate_time=00:00

rotate_access_log_size = 0

rotate_error_log_size = 0

log_file_keep_days = 0

file_sync_skip_invalid_record=false

use_connection_pool = false

connection_pool_max_idle_time = 3600

http.domain_name=

http.server_port=8888

 

陈设文件详细注明参谋:

 

启动storage: /usr/local/bin/fdfs_storage  /etc/fdfs/storage.conf  start

检验是还是不是运转成功:netstat -lntup|grep fdfs_storaged

 图片 4

检测运营状态:/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

       查看192.168.100.106:23001 是ACTIVE状态就能够

 

安装开机自动运行:

echo “/usr/bin/fdfs_trackerd  /etc/fdfs/storage.conf  start” >>
/etc/rc.d/rc.local

 

8、安装nginx

storage中装置nginx,首要是为着为提供http的拜见服务,同偶然候缓慢解决group中storage服务器的生龙活虎道延迟难题。而tracker中安装nginx,首若是为了提供http访谈的反向代理、负载均衡以致缓存服务 

yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl
openssl-devel

 

a、在storage中安装nginx (192.168.100.106192.168.100.125)

tar -zxvf nginx1.7.8.tar.gz

tar -zxvf fastdfs-nginx-module_v1.16.tar.gz

cd /root/soft/fastdfs-nginx-module/src

编排config文件,找到包涵CORE_INCS那一个大器晚成行,将路线中local全体去掉,变为CORE_INCS=”$CORE_INCS
/usr/include/fastdfs /usr/include/fastcommon/”

cd nginx1.7.8

–prefix=/opt/nginx –add-module=/root/soft/fastdfs-nginx-module/src

make && make install

 

编辑nginx.conf文件如下:

图片 5 

 

 

 

 

 

 

 

 

 

 

 

将http.conf和mime.types拷贝到/etc/fdfs/下,若是不进行这一步,运营nginx时会报错。

cp /root/soft/fastdfs-5.05/conf/http.conf /etc/fdfs/

cp /root/soft/fastdfs-5.05/conf/mime.conf /etc/fdfs/

将mod_fastdfs.conf那一个文件拷贝到 /etc/fdfs 目录下

cp /root/soft/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

编辑mod_fastdfs.conf 文件如下:

connect_timeout=2

network_timeout=30

base_path=/opt/fastdfs_storage_info

load_fdfs_parameters_from_tracker=true

storage_sync_file_max_delay = 86400

use_storage_id = false

storage_ids_filename = storage_ids.conf

tracker_server=192.168.100.106:22122

storage_server_port=23001

group_name=group1

url_have_group_name = true

store_path_count=1

store_path0=/opt/fastdfs_storage_data

log_level=info

log_filename=

response_mode=proxy

if_alias_prefix=

flv_support = true

flv_extension = flv

group_count = 1

[group1]

group_name=group1

storage_server_port=23001

store_path_count=1

store_path0=/opt/fastdfs_storage_data

store_path1=/opt/fastdfs_storage_data

 

配置文件详细证明仿照效法:

 

创建软连接:

ln  -s  /opt/fastdfs_storage_data/data
 /opt/fastdfs_storage_data/data/M00

 

启动nginx: /opt/nginx/sbin/nginx

 

b、在tracker中安装nginx

tar -zxvf nginx1.7.8.tar.gz

tar -zxvf fastdfs-nginx-module_v1.16.tar.gz

cd /root/soft/fastdfs-nginx-module/src

编排config文件,找到包括CORE_INCS那几个生龙活虎行,将路线中local全体去掉,变为CORE_INCS=”$CORE_INCS
/usr/include/fastdfs /usr/include/fastcommon/”

cd nginx1.7.8

–prefix=/opt/nginx –add-module=/root/soft/fastdfs-nginx-module/src
–add-module=/root/soft/ngx_cache_purge-2.1 –with-http_ssl_module
–with-pcre=/root/soft/pcre-8.40 –with-zlib=/root/soft/zlib-1.2.11

make && make install

 

编辑nginx.conf文件如下:

 图片 6

启动nginx:/opt/nginx/sbin/nginx

 

9、测量检验并上传文件

编排client.conf 文件,编辑内容如下:

图片 7 

 

 

 

 

 

测量检验上传文件:

echo “this is a test file — hello world” >> test.txt

/usr/bin/fdfs_test /etc/fdfs/client.conf upload test.txt #上传

变动如下url,并复制到浏览器访谈

 

图片 8

 图片 9

图片 10

如上测量试验注解成功,并且两台stroage同步成功了

 

测量试验负载均衡办法:停掉192.168.100.125要么192.168.100.106的storage再开展上传测量检验

 /usr/local/bin/fdfs_storage  /etc/fdfs/storage.conf  stop

 

 

10、PHP安装FasfDFS扩张模块

cd /root/soft/fastdfs-5.05/client

make && make install

cd /root/soft/fastdfs-5.05/php_client

 

/usr/local/php/bin/phpize

./configure –with-php-config=/usr/local/php/bin/php-config

make && make install

cd /etc/fdfs

vi client.conf

tracker_server=192.168.100.106:22122 //依据条件填写IP地址及端口号

 

在php.ini配置文件中加载fastdfs

cat fastdfs_client.ini >> /usr/local/php/etc/php.ini

 

新扩张nginx配置如下:

server {

listen 8080;

server_name localhost;

access_log /data/wwwlogs/access_nginx_cms.log combined;

root /opt/nginx/html;

index index.html index.htm index.php forum.php;

location /nginx_status {

access_log off;

allow 127.0.0.1;

deny all;

}

error_page 404 /404.html;

location ~ [^/].php(/|$) {

fastcgi_pass 192.168.100.106:9000;

fastcgi_index index.php;

include /usr/local/nginx/conf/fastcgi_params;

include fastcgi.conf;

}

location (gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {

expires 30d;

access_log off;

}

location (js|css)?$ {

expires 7d;

access_log off;

}

}

 

重启nginx和php

/opt/nginx/sbin/nginx -s reload

或者

pkill -9 nginx

/opt/nginx/sbin/nginx

 

kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

或者

pkill -9 php

/usr/local/php/sbin/php-fpm

 

测量检验:在浏览器中输入:

比方现身相像于以下截图则象征成功

 图片 11