FastDFS 集群搭建
準(zhǔn)備環(huán)境
- 文件準(zhǔn)備
nginx-1.14.0.tar.gz
FastDFS_v5.08.tar.gz
fastdfs-nginx-module_v1.16.tar.gz
libfastcommon-master.zip
- 服務(wù)器
tracker服務(wù)器:192.168.1.85/86
storage服務(wù)器:192.168.1.72/73/74/75
安裝依賴包(全部服務(wù)器)
- 在安裝FastDFS和Nginx之前,需確保gcc、gcc-c++、 libstdc++-devel、make等依賴庫和工具已經(jīng)安裝
yum -y install gcc gcc-c++ libstdc++-devel pcre-devel zlib-devel wget make
yum -y groupinstall 'Development Tools'
安裝libfastcommon類庫(全部服務(wù)器)
unzip libfastcommon-master.zip -d /usr/local/
cd /usr/local/
cd libfastcommon-master/
./make.sh
./make.sh install
安裝Fastdfs(全部服務(wù)器)
tar -xvzf FastDFS_v5.08.tar.gz -C /usr/local/
cd /usr/local/FastDFS/
./make.sh
./make.sh install
FastDFS安裝完成之后,所有配置文件在/etc/fdfs目錄下,tracker需要tracker.conf配置文件,storage需要storage.conf配置文件。
安裝 tracker(服務(wù)器 85/86)
- 將tracker.conf.sample文件重命名為tracker.conf,然后修改配置文件/etc/fdfs/tracker.conf
# 存儲日志和數(shù)據(jù)的根目錄
mkdir /root/fastdfs
cd /etc/fdfs
cp tracker.conf.sample tracker.conf
- 修改配置文件
vi tracker.conf
#啟用配置文件
disabled=false
#設(shè)置tracker的端口號
port=22122
#設(shè)置tracker的數(shù)據(jù)文件和日志目錄(需手動創(chuàng)建)
base_path=/root/fastdfs
#設(shè)置http端口號
http.server_port=8080
- 啟動 tracker
# 啟動
fdfs_trackerd /etc/fdfs/tracker.conf restart
- 判斷是否啟動成功
[root@localhost ~]# netstat -unltp | grep fdfs
tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 6078/fdfs_trackerd
安裝 storage (服務(wù)器 72/73/74/75)
- 創(chuàng)建存儲目錄和配置文件
mkdir /root/fastdfs
cd /etc/fdfs
cp storage.conf.sample storage.conf
- 修改配置
vi /etc/fdfs/storage.conf
# 內(nèi)容
group_name=group1 # 組名(第一組為group1,第二組為group2,依次類推...)
base_path=/root/fastdfs # 數(shù)據(jù)和日志文件存儲根目錄
store_path0=/root/fastdfs #第一個存儲目錄,第二個存儲目錄起名為:store_path1=xxx,其它存儲目錄名依次類推...
store_path_count=1 # 存儲路徑個數(shù),需要和store_path個數(shù)匹配
tracker_server=192.168.1.85:22122 # tracker服務(wù)器IP和端口
tracker_server=192.168.1.86:22122 # tracker服務(wù)器IP和端口
- 啟動Storage
[root@localhost fdfs]# fdfs_storaged /etc/fdfs/storage.conf restart
[root@localhost fdfs]# netstat -unltp | grep fdfs
tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 5551/fdfs_storaged
- 驗證storage是否登記到tracker服務(wù)器
# 可以在任一存儲節(jié)點上使用如下命令查看集群的狀態(tài)信息
fdfs_monitor /etc/fdfs/storage.conf
在storage上安裝nginx
安裝
- 解壓
tar -xvzf fastdfs-nginx-module_v1.16.tar.gz -C /usr/local
tar -xvzf nginx-1.14.0.tar.gz -C /usr/local
- 配置軟鏈接
ln -sv /usr/include/fastcommon /usr/local/include/fastcommon
ln -sv /usr/include/fastdfs /usr/local/include/fastdfs
ln -sv /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
- 添加 fastdfs-nginx-module-master模塊
cd /usr/local/nginx-1.14.0/
./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module/src
- 安裝
make
make install
- 安裝成功,查看版本信息
/usr/local/nginx/sbin/nginx -V
配置
配置fastdfs-nginx-module
- 進入fastdfs-nginx-module的src目錄,將md_fastdfs.conf配置文件拷貝到/etc/fdfs/目錄中
cd /usr/local/fastdfs-nginx-module/src
cp mod_fastdfs.conf /etc/fdfs/
- 配置 mod_fastdfs.conf
vim /etc/fdfs/mod_fastdfs.conf
# 改動參數(shù)
base_path=/root/fastdfs #保存日志目錄
tracker_server=192.168.1.85:22122
tracker_server=192.168.1.86:22122
storage_server_port=23000 #storage服務(wù)器的端口號
group_name=group1 #當(dāng)前服務(wù)器的group名
url_have_group_name = true #文件url中是否有g(shù)roup名
store_path_count=1 #存儲路徑個數(shù),需要和store_path個數(shù)匹配
store_path0=/root/fastdfs #存儲路徑
group_count = 2 #設(shè)置組的個數(shù)
# 在末尾增加組的具體信息
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/root/fastdfs
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/root/fastdfs
- 建立M00至存儲目錄的符號連接
ln -s /root/fastdfs/data /root/fastdfs/data/M00
ll /root/fastdfs/data/M00
配置nginx
- 編輯/usr/local/nginx/conf配置文件目錄下的nginx.conf,設(shè)置添加storage信息并保存。
vim /usr/local/nginx/conf/nginx.conf
# 修改
user root;
listen 8080;
# 在server段中添加
location ~/group[1-2]/M00 {
root /root/fastdfs/data;
ngx_fastdfs_module;
}
- 復(fù)制fastdfs中的http.conf、mime.types文件到/etc/fdfs
cp /usr/local/FastDFS/conf/http.conf /usr/local/FastDFS/conf/mime.types /etc/fdfs
運行
[root@localhost ~]# /usr/local/nginx/sbin/nginx
ngx_http_fastdfs_set pid=12768
[root@localhost ~]# netstat -unltp | grep nginx
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 12769/nginx
# 重啟 nginx
/usr/local/nginx/sbin/nginx -s reload
在tracker上安裝nginx
- 在tracker上安裝的nginx主要為了提供http訪問的反向代理、負(fù)載均衡以及緩存服務(wù)
安裝
- 解壓
tar -xvzf nginx-1.14.0.tar.gz -C /usr/local
- 運行./configure進行安裝前的設(shè)置,主要設(shè)置安裝路徑
cd /usr/local/nginx-1.14.0/
./configure --prefix=/usr/local/nginx
- 安裝
make
make install
配置
- 編輯/usr/local/nginx/conf配置文件目錄下的nginx.conf,設(shè)置負(fù)載均衡
vim /usr/local/nginx/conf/nginx.conf
# 配置信息
worker_processes 4; #根據(jù)CPU核心數(shù)而定
events {
worker_connections 65535; #最大鏈接數(shù)
use epoll; #新版本的Linux可使用epoll加快處理性能
}
http {
#設(shè)置group1的服務(wù)器
upstream fdfs_group1 {
server 192.168.1.72:8080 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.1.73:8080 weight=1 max_fails=2 fail_timeout=30s;
}
#設(shè)置group2的服務(wù)器
upstream fdfs_group2 {
server 192.168.1.74:8080 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.1.75:8080 weight=1 max_fails=2 fail_timeout=30s;
}
server {
#設(shè)置服務(wù)器端口
listen 8080;
#設(shè)置group1的負(fù)載均衡參數(shù)
location /group1/M00 {
proxy_pass http://fdfs_group1;
}
#設(shè)置group2的負(fù)載均衡參數(shù)
location /group2/M00 {
proxy_pass http://fdfs_group2;
}
}
}
運行
- 啟動nginx,確認(rèn)啟動是否成功
[root@localhost ~]# /usr/local/nginx/sbin/nginx
ngx_http_fastdfs_set pid=12768
[root@localhost ~]# netstat -unltp | grep nginx
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 12769/nginx
上傳文件測試
配置client.conf文件
cp client.conf.sample client.conf
vim /etc/fdfs/client.conf
# 修改以下參數(shù)
base_path=/root/fastdfs #日志存放路徑
tracker_server=192.168.1.85:22122
tracker_server=192.168.1.86:22122
http.tracker_server_port=8080
上傳文件測試
[root@localhost fdfs]# fdfs_upload_file /etc/fdfs/client.conf /root/test.jpg
group2/M00/00/00/wKg26VncfamAEqZ0AAu-4Kcs3QI677.jpg
- 使用瀏覽器訪問
http://192.168.1.85:8080/group2/M00/00/00/wKg26VncfamAEqZ0AAu-4Kcs3QI677.jpg
單機版 Nginx 配置
同 Storage Nginx 安裝、配置