分佈式文件系統FastDFS實戰

(4kb-500MB之間)php

角色:java

    clientnode

    tracker羣nginx

    storage羣git


環境:兩臺 分別安裝    tracker羣    storage羣github

Tracker Server:vim

跟蹤服務器,主要作調度工做,在訪問中起負載均衡的做用。在內存中記錄集羣中group和storage的狀態信息,是鏈接client和storage server的樞紐,由於相關信息所有在內存中,tracker server的性能很是高,一個較大的集羣(上百group)3臺便可。centos

Storage Server:bash

存儲服務器,文件和文件屬性(meta data)都保存在上面。服務器

https://github.com/happyfish100

安裝依賴:

git clone https://github.com/happyfish100/libfastcommon.git
cd libfastcommon/
./make.sh
./make.sh install

安裝軟件:

https://github.com/happyfish100/fastdfs/releases
tar zxf fastdfs-5.05.tar.gz 
cd fastdfs-5.05
./make.sh 
./make.sh install

[root@node1-197 fastdfs-5.05]# ll /etc/fdfs/

總用量 20

-rw-r--r-- 1 root root 1461 8月  24 14:05 client.conf.sample
-rw-r--r-- 1 root root 7829 8月  24 14:05 storage.conf.sample
-rw-r--r-- 1 root root 7102 8月  24 14:05 tracker.conf.sample
[root@node1-197 fastdfs-5.05]# ll /usr/bin/fdfs_
fdfs_appender_test    fdfs_delete_file      fdfs_storaged         fdfs_upload_appender
fdfs_appender_test1   fdfs_download_file    fdfs_test             fdfs_upload_file
fdfs_append_file      fdfs_file_info        fdfs_test1            
fdfs_crc32            fdfs_monitor          fdfs_trackerd         
[root@node1-197 fastdfs-5.05]# ll /etc/init.d/fdfs_
fdfs_storaged  fdfs_trackerd  
[root@node1-197 fastdfs-5.05]# sed -i 's#/usr/local/bin/#/usr/bin/#' /etc/init.d/fdfs_*
cd /etc/fdfs/
cp tracker.conf.sample tracker.conf
vim tracker.conf

建立目錄:

[root@centos6-vm-53 fdfs]# tree /data/

/data/
├── fdfs_storage
│   ├── base
│   └── store
└── fdfs_tracker
    ├── data
    │   ├── fdfs_trackerd.pid
    │   └── storage_changelog.dat
    └── logs
        └── trackerd.log
/etc/init.d/fdfs_trackerd start
lsof -i:22122
lsof -i:23000

>-----------------------------------------------------

[root@node1-197 ~]# tree /etc/fdfs/

/etc/fdfs/
|-- client.conf
|-- client.conf.sample
|-- storage.conf
|-- storage.conf.sample
|-- tracker.conf
`-- tracker.conf.sample
0 directories, 6 files

>-----------------------------------------------------

存儲節點:

/etc/fdfs
cp storage.conf.sample storage.conf
修改內容:
base_path=/data/fdfs_storage/base
store_path0=/data/fdfs_storage/store
tracker_server=192.168.1.61:22122
tracker_server=192.168.1.53:22122

客戶端操做:

 cp client.conf.sample client.conf
base_path=/tmp
tracker_server=192.168.1.61:22122
tracker_server=192.168.1.53:22122

[root@node1-197 /]# fdfs_upload_file /etc/fdfs/client.conf /etc/passwd
group1/M00/00/00/wKjrxVXawRCAHqZqAAAKU60-8sE9427256
[root@node1-197 00]# pwd
/data/fdfs_storage/store/data/00/00
[root@node1-197 00]# ls
wKjrxVXawRCAHqZqAAAKU60-8sE9427256
[root@node1-197 ~]# md5sum  wKjrxVXawRCAHqZqAAAKU60-8sE9427256
78d23b6ae5271f6ecfd0e51d2dc1d164  wKjrxVXawRCAHqZqAAAKU60-8sE9427256
[root@node1-197 ~]# md5sum /etc/passwd
78d23b6ae5271f6ecfd0e51d2dc1d164  /etc/passwd
fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKjrxVXawRCAHqZqAAAKU60-8sE9427256
[root@node1-197 ~]# fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/wKjrxVXawRCAHqZqAAAKU60-8sE9427256    
source storage id: 0
source ip address: 192.168.235.197
file create timestamp: 2015-08-24 15:00:32
file size: 2643
file crc32: 2906583745 (0xAD3EF2C1)
[root@node1-197 ~]# fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKjrxVXawRCAHqZqAAAKU60-8sE9427256

上傳可追加的文件:

fdfs_upload_appender /etc/fdfs/client.conf xx.txt

下載後追加:

fdfs_append_file

命令:

[root@node1-197 ~]# fdfs_
fdfs_appender_test    fdfs_delete_file      fdfs_storaged         fdfs_upload_appender
fdfs_appender_test1   fdfs_download_file    fdfs_test             fdfs_upload_file
fdfs_append_file      fdfs_file_info        fdfs_test1            
fdfs_crc32            fdfs_monitor          fdfs_trackerd     
[root@node1-197 ~]# fdfs_monitor /etc/fdfs/storage.conf

php客戶端:

cd /usr/local/src/fastdfs-5.05/php_client/
/usr/local/php56/bin/phpize 
./configure --with-php-config=/usr/local/php56/bin/php-config 
make && make install

提示:

Installing shared extensions:     /usr/local/php56/lib/php/extensions/no-debug-non-zts-20131226/


[root@centos6-vm-53 php_client]# cat fastdfs_client.ini >> /usr/local/php56/etc/php.i


測試:

[root@centos6-vm-53 php_client]# /usr/local/php56/bin/php fastdfs_test.php


java客戶端:

cd /usr/local/src/
git clone https://github.com/happyfish100/fastdfs-client-java.git
cd fastdfs-client-java/src

執行ant:


[root@zhong-61 src]# ant

Buildfile: build.xml


init:


compile:

    [mkdir] Created dir: /usr/local/src/fastdfs-client-java/src/build/classes

    [javac] Compiling 32 source files to /usr/local/src/fastdfs-client-java/src/build/classes

    [javac] Note: Some input files use unchecked or unsafe operations.

    [javac] Note: Recompile with -Xlint:unchecked for details.


jar:

      [jar] Building jar: /usr/local/src/fastdfs-client-java/src/build/fastdfs_client.jar


BUILD SUCCESSFUL

Total time: 5 seconds


用法:

https://github.com/happyfish100/fastdfs-client-java/tree/master/src
[root@zhong-61 src]# java -cp /usr/local/src/fastdfs-client-java/src/build/fastdfs_client.jar org.csource.fastdfs.test.TestClient /etc/fdfs/client.conf /etc/passwd
[root@zhong-61 src]# java -cp /usr/local/src/fastdfs-client-java/src/build/fastdfs_client.jar org.csource.fastdfs.test.Monitor /etc/fdfs/client.conf

nginx模塊:

[root@centos6-vm-53 src]# git clone https://github.com/happyfish100/fastdfs-nginx-module.git
[root@centos6-vm-53 nginx-1.9.9]# ./configure --prefix=/usr/local/nginx --without-http_memcached_module --user=nginx --group=nginx --with-http_stub_status_module --with-pcre --with-http_ssl_module --add-module=/usr/local/src/fastdfs-nginx-module/src/
make && make install

[root@centos6-vm-53 src]# pwd
/usr/local/src/fastdfs-nginx-module/src
[root@centos6-vm-53 src]# cp mod_fastdfs.conf /etc/fdfs/
[root@centos6-vm-53 src]# cd /usr/local/src/fastdfs-5.05/conf/
[root@centos6-vm-53 conf]# ls
anti-steal.jpg  client.conf  http.conf  mime.types  storage.conf  storage_ids.conf  tracker.conf
[root@centos6-vm-53 conf]# cp anti-steal.jpg http.conf mime.types /etc/fdfs/
[root@centos6-vm-53 conf]# touch /var/log/mod_fastdfs.log
[root@centos6-vm-53 conf]# chown nginx.nginx /var/log/mod_fastdfs.log

nginx  server增長:

    location /group/M00 {
        root /data/fdfs_storage/store/;
        ngx_fastdfs_module;
    }


[root@centos6-vm-53 conf.d]# vim /etc/fdfs/mod_fastdfs.conf 
tracker_server=192.168.1.61:22122
tracker_server=192.168.1.53:22122
url_have_group_name = true
store_path0=/data/fdfs_storage/store
log_filename=/var/log/mod_fastdfs.log

重啓nginx,訪問測試:

http://192.168.1.53:800/group1/M00/00/00/wKgBNVaCV8GAc0CjAAAgVBESXKk681.png
相關文章
相關標籤/搜索