# 12、FastDFS部署迁移
## 一、FastDFS部署
1、安装libevent
FastDFS内部使用libevent作为http服务器,如果使用apache、nginx做代理服务器,可以跳过此步骤
安装依赖包
yum install -y make cmake gcc gcc-c++
安装libevent
yum install -y libevent
yum install -y libevent-devel.x86_64
安装libfastcomon
cd /data
wget https://codeload.github.com/happyfish100/libfastcommon/zip/master
unzip master
cd libfastcommon-master
./make.sh
./make.sh install
2、安装TrackerServer(跟踪服务器)
cd /data
tar -xvf FastDFS_v4.06.tar.gz
cd FastDFS/
vim make.sh
将以下一行注释去掉,更改服务启动方式
WITH_LINUX_SERVICE=1
./make.sh && ./make.sh install
mkdir -p /data/fastdfs/tracker
配置跟踪服务器
修改配置文件
服务端
vim /etc/fdfs/tracker.conf
disabled=false(默认为 false,表示是否无效)
port=22122(默认为 22122)
base_path=/data/fastdfs/tracker
http.server_port=80 #nginx代理端口
store_lookup=2
//该值默认是 2(即负载均衡策略),现在把它修改为 0(即轮询策略,修改成这样方便一会儿我们进行测试,当然,最终还是要改回到 2 的
客户端
vim /etc/fdfs/client.conf
base_path=/data/fastdfs/tracker
tracker_server=ip:22122
#tracker_server=ip:22122 ## tracker_server服务如果有多个就写多个
http.tracker_server_port=80
启动tracker_server
service fdfs_trackerd start
#/etc/init.d/fdfs_tracker start
设置开机自启动
chkconfig --add fdfs_trackerd
启动后在/data/fastdfs/tracker/目录下产生 2 个文件夹 data 和 logs
3、安装storage_server
下载地址
mkdir -p /data/fastdfs/storage
vim /etc/fdfs/storage.conf
一般只需改动以下几个参数即可:
disabled=false
//启用配置文件
group_name=group1
//组名,根据实际情况修改如果是group2修改下名字
port=23000
//设置storage的端口号
base_path=/data/fastdfs/storage
//设置storage的日志目录(需预先创建)
store_path_count=1
//存储路径个数,需要和store_path个数匹配
store_path0=/data/fastdfs/storage
//存储路径
tracker_server=ip:22122
//tracker服务器的IP地址和端口号单个
tracker_server=ip:22122
//tracker服务器的IP地址和端口号多个,在写一行
http.server_port=8888
因为开发者中心storage的配置文件http.server_port的端口为8888,为了避免数据迁移的时候出现以下问题,建议安装FastDFS时将此端口设置为8888.
ERROR - file: tracker_mem.c, line: 4433, client ip: ip, http port 8888 is not same in the group "group1", group http port is 8888
//设置http端口号 如需要进行性能调优,可以参照附录的配置文件的详细说明。 如果是多台tracker,配置多个tracker_server
启动storage
/etc/init.d/fdfs_storaged start
设置开机自启动
chkconfig --add fdfs_storaged
启动成功会自动在/data/fastdfs/tracker目录新建data和logs目录(启动storage server的前提是tracker server必须事先已启动)
4、上传文件测试
fdfs_upload_file /etc/fdfs/client.conf /home/oldcat/imgs/test.jpg
fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/asdfghjklzxcv.jpg
5、安装NGINX
下载fastdfs模块
https://pan.baidu.com/s/1jnJxuZJT8vwv9fMZ0yPoMQ
下载下来的是个文件夹,里面包含fastdfs-nginx-module_v1.16.tar.gz和nginx配置参考等。
解压
tar -xvf fastdfs-nginx-module_v1.16.tar.gz
修改参数
cd /data/fastdfs-nginx-module/src
vim config
命令行模式批量修改替换
:%s+/usr/local/+/usr/+g
将fastdfs-nginx-module模块中的配置文件拷贝到/etc/fdfs
cp -p /data/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
修改配置文件
vim /etc/fdfs/mod_fastdfs.conf
tracker_server=ip:22122
url_have_group_name = true
group_name=group1
建立M00至存储目录的符号链接
ln -s /data/fastdfs/storage/data /data/fastdfs/storage/data/M00
安装nginx依赖
yum install -y glib2-devel openssl-devel pcre-devel bzip2-devel perl-ExtUtils* zlib-devel gd-devel
下载nginx安装包
wget http://nginx.org/download/nginx-1.14.2.tar.gz
解压安装包
tar -xvf nginx-1.14.2.tar.gz
进入目录
cd nginx-1.14.2
编译参数
./configure --prefix=/data/nginx --sbin-path=/data/nginx/sbin/nginx --conf-path=/data/nginx/conf/nginx.conf --error-log-path=/data/nginx/log/error.log --http-log-path=/data/nginx/log/access.log --pid-path=/data/nginx/log/pid/nginx.pid --lock-path=/data/nginx/log/lock/subsys/nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_perl_module --with-ld-opt="-Wl,-E" --with-http_image_filter_module --add-module=/data/fastdfs-nginx-module/src/
make && make install
在nginx下建立目录
mkdir -p /data/nginx/proxy_temp
mkdir -p /data/nginx/proxy_cache
mkdir -p /data/nginx/proxy_cache_image
拷贝fastdfs中的部分配置文件到/etc/fdfs
cp /data/FastDFS/conf/http.conf /etc/fdfs
cp /data/FastDFS/conf/mime.types /etc/fdfs/
修改nginx的配置文件
nginx配置模板
12、FastDFS部署迁移
FastDFS一键部署脚本链接地址如下。
FastDFS.zip
## 二、FastDFS迁移
1、准备一套新的集群环境。新的集群版本需要与开发者中心一致(FastDFS_v4.06)
2、停止所有的storage服务,开发者中心则停止storage容器,
/etc/init.d/fdfs_storage stop
docker ps | grep fastdfs
docker stop fastdfs-storage
docker stop fastdfs-tracker
在新集群的所有storage节点操作
3、修改新的集群storage配置文件,将tracker_server指向开发者中心主节点
vim /etc/fdfs/storage.conf
tracker_server=开发者中心主节点ip:22122
vim /etc/fdfs/client.conf
tracker_server=开发者中心主节点ip:22122
4、启动storage服务,开发者中心启动storage容器
/etc/init.d/fdfs_storage start
docker start fastdfs-storage
docker start fastdfs-tracker
5、查看同步状态
fdfs_monitor /etc/fdfs/storage.conf | grep -A 2 Storage
在新集群的storage节点查看,若状态为ACTIVE,可去/data/fastdfs/storage/data/00/00下查看文件是否同步过来,
开发者中心主节点FastDFS数据存放路径:/data/developercenter_enterprise/data_center/fastdfs/store_path/00/00
ll /data/developercenter_enterprise/data_center/fastdfs/store_path/00/00 | wc -l
ll /data/fastdfs/storage/data/00/00 | wc -l
比对一下两条命令执行结果,查看文件是否全部同步过来,是否有缺失。
storage状态列表:
// FDFS_STORAGE_STATUS:INIT :初始化,尚未得到同步已有数据的源服务器
//FDFS_STORAGE_STATUS:WAIT_SYNC :等待同步,已得到同步已有数据的源服务器
//FDFS_STORAGE_STATUS:SYNCING :同步中
// FDFS_STORAGE_STATUS:DELETED :已删除,该服务器从本组中摘除
// FDFS_STORAGE_STATUS:OFFLINE :离线
// FDFS_STORAGE_STATUS:ONLINE :在线,尚不能提供服务
// FDFS_STORAGE_STATUS:ACTIVE :在线,可以提供服务,同步完成
当storage状态从SYNCING变为ACTIVE,说明同步完成
6、同步完成后,开发者中心主节点操作,修改开发者中新主节点nginx配置 文件
vim /data/developercenter_enterprise/config_center/nginx/nginx.conf
在events下面添加以下内容:
stream {
server {
listen 22122;
proxy_connect_timeout 10s;
proxy_timeout 600s;
proxy_pass ip:22122; #新集群的tracker_server地址
}
}
7、停止storage有关的容器,并设置开机不自启
docker ps | grep fastdfs
docker update --restart=no containname
8、将新集群的tracker_server修改回来,指向自己的tracker_server
vim /etc/fdfs/storage.conf
tracker_server=ip:22122
vim /etc/fdfs/client.conf
tracker_server=ip:22122
9、启动新的集群的storage服务。
/etc/init.d/fdfs_storage start