FastDFSの基本アーキテクチャ
FastDFSは高性能な分散ファイルシステムで、主に以下の3つのコンポーネントで構成されます:
- Trackerサーバー: ストレージサーバーの管理と負荷分散を行う
- Storageサーバー: 実際のファイル保存とバックアップを担当
- クライアント: ファイル操作を行うアプリケーション
ストレージ戦略
FastDFSではストレージノードをグループ単位で管理します。各グループ内のサーバーは相互にデータを同期し、冗長性と負荷分散を実現します。
# ストレージグループ設定例
group_name = file_group
store_path_count = 1
store_path0 = /data/fastdfs/storage
subdir_count_per_path = 256
インストール手順
1. 依存関係のインストール
# libfastcommonのインストール
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
tar -zxvf V1.0.7.tar.gz
cd libfastcommon-1.0.7
./make.sh && ./make.sh install
2. FastDFS本体のインストール
wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz
tar -zxvf V5.05.tar.gz
cd fastdfs-5.05
./make.sh && ./make.sh install
3. Trackerサーバーの設定
# 設定ファイル編集
vim /etc/fdfs/tracker.conf
# 主要設定項目
port=22122
base_path=/data/fastdfs/tracker
http.server_port=8080
4. Storageサーバーの設定
vim /etc/fdfs/storage.conf
# 主要設定項目
group_name=file_group
port=23000
base_path=/data/fastdfs/storage
store_path0=/data/fastdfs/files
tracker_server=tracker.example.com:22122
Nginx連携設定
1. Nginxモジュールのインストール
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/master.zip
unzip master.zip
cd nginx-1.12.1/
./configure --add-module=../fastdfs-nginx-module-master/src
make && make install
2. Nginx設定
location ~/group([0-9])/M00 {
ngx_fastdfs_module;
}
Javaクライアントの実装例
// ファイルアップロード例
public String uploadFile(File file) {
TrackerClient tracker = new TrackerClient();
TrackerServer trackerServer = tracker.getConnection();
StorageClient1 client = new StorageClient1(trackerServer, null);
String fileId = client.upload_file1(
file.getAbsolutePath(),
file.getName().substring(file.getName().lastIndexOf(".") + 1),
null);
return fileId;
}
セキュリティ設定
# トークン認証の有効化
http.anti_steal.check_token=true
http.anti_steal.token_ttl=1800
http.anti_steal.secret_key=YOUR_SECRET_KEY