简介
本文主要用来记录下FastDFS高可用部署方案;高可用方案其实也就是一主一备,防止数据丢失,以及提供多个分组实现负载均衡;
环境准备
两台服务器:10.123.25.82和10.12.91.122
82服务器部署分别group1和group2的一个storage;
122服务器部署分别group2和group1的一个storage;
82和122部署分别部署一个tracker;
材料准备
- libfastcommon-1.0.40.tar.gz点击下载
- fastdfs-5.12.tar.gz点击下载;
其他可选模块fastdfs-nginx-module-master点击下载
安装配置
安装libfastcommonn
tar -zxvf libfastcommon-1.0.40.tar.gz -C /usr/local/src/;
cd /usr/local/src/libfastcommon-1.0.40;
./make.sh;
./make.sh install;
最后界面输出即安装成功:
mkdir -p /usr/lib64
mkdir -p /usr/lib
mkdir -p /usr/include/fastcommon
install -m 755 libfastcommon.so /usr/lib64
install -m 644 common_define.h hash.h chain.h logger.h base64.h shared_func.h pthread_func.h ini_file_reader.h _os_define.h sockopt.h sched_thread.h http_func.h md5.h local_ip_func.h avl_tree.h ioevent.h ioevent_loop.h fast_task_queue.h fast_timer.h process_ctrl.h fast_mblock.h connection_pool.h fast_mpool.h fast_allocator.h fast_buffer.h skiplist.h multi_skiplist.h flat_skiplist.h skiplist_common.h system_info.h fast_blocked_queue.h php7_ext_wrapper.h id_generator.h char_converter.h char_convert_loader.h common_blocked_queue.h multi_socket_client.h skiplist_set.h fc_list.h json_parser.h /usr/include/fastcommon
if [ ! -e /usr/lib/libfastcommon.so ]; then ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so; fi
安装fastDFS
将安装包安装到/opt下
tar -zxvf fastdfs-5.12.tar.gz -C /opt;
cd /otp/fastdfs-5.12;
./make.sh;
./make.sh install;
接下来会有如下输出:
mkdir -p /usr/bin
mkdir -p /etc/fdfs
mkdir -p /usr/lib64
mkdir -p /usr/lib
cp -f fdfs_monitor fdfs_test fdfs_test1 fdfs_crc32 fdfs_upload_file fdfs_download_file fdfs_delete_file fdfs_file_info fdfs_appender_test fdfs_appender_test1 fdfs_append_file fdfs_upload_appender /usr/bin
if [ 0 -eq 1 ]; then cp -f libfdfsclient.a /usr/lib64; cp -f libfdfsclient.a /usr/lib/;fi
if [ 1 -eq 1 ]; then cp -f libfdfsclient.so /usr/lib64; cp -f libfdfsclient.so /usr/lib/;fi
mkdir -p /usr/include/fastdfs
cp -f ../common/fdfs_define.h ../common/fdfs_global.h ../common/mime_file_parser.h ../common/fdfs_http_shared.h ../tracker/tracker_types.h ../tracker/tracker_proto.h ../tracker/fdfs_shared_func.h ../storage/trunk_mgr/trunk_shared.h tracker_client.h storage_client.h storage_client1.h client_func.h client_global.h fdfs_client.h /usr/include/fastdfs
if [ ! -f /etc/fdfs/client.conf.sample ]; then cp -f ../conf/client.conf /etc/fdfs/client.conf.sample; fi
然后到/etc/fdfs目录下进行conf配置;
cd /etc/fdfs;
cp client.conf.sample client.conf;
cp storage.conf.sample storage_1.conf;
cp storage.conf.sample storage_2.conf;
cp tracker.conf.sample tracker.conf;
另外启动脚本位于/etc/init.d/fdfs_storaged和/etc/init.d/fdfs_trackerd;
安装tracker和storage
创建数据存储目录
mkdir /data/fdfs_data/tracker;
mkdir /data/fdfs_data/storage_1;
mkdir /data/fdfs_data/storage_2;
配置tracker和storage
配置tracker,修改如下属性:
disabled=false //启用配置文件
port=22122 //tracker的端口号,一般采用这个端口
base_path=/data/fdfs_data/tracker //trakcer的数据文件和日志目录
# the method of selecting group to upload files
# 0: round robin,0表示采取轮巡方式选择要上传的组进行存储
# 1: specify group 指定组上传
# 2: load balance, select the max free space group to upload file选择最大空闲组上传
store_lookup=0
store_group=group2 //指定上传文件组,如果store_lookup为1,则必须指定store_group名称
关闭防火墙或者添加22122跟踪端口
/etc/init.d/iptables stop;
添加22122跟踪端口
如果iptables防火墙中开启的话,则需要打开跟踪器端口(默认为 22122)
vim /etc/sysconfig/iptables;
## FastDFS Tracker Port
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT
启动tracker服务
service fdfs_trackerd start;##或者通过systemctl start fdfs_trackerd
启动成功后会在/data/fdfs_data/tracker目录下新增data和logs目录;
配置storage_1和storage_2(两台服务器都需要配置)
需要修改storage_1.conf和storage_2.conf配置信息如下:
disabled=false //启用配置文件
group_name=group1 //组名(第一组为 group1,第二组为 group2)
port=23000 //storage 的端口号,同一个组的 storage 端口号必须相同
base_path=/data/fdfs_data/storage_1 //设置 storage1 的日志和数据基础目录
store_path0=/data/fdfs_data/storage_1/data/ //设置数据存储路径
store_path_count=1 //存储路径个数,需要和 store_path 个数匹配
tracker_server=10.12.91.122:22122 //tracker 服务器的 IP 地址和端口
tracker_server=10.123.25.82:22122 //多个 tracker 直接添加多条配置
http.server_port=8888 //设置 http 端口号,group2为8889
accept_threads=1 //并发较高的情况下,可以适当提高接收线程数,避免接收请求出现瓶颈
work_threads=4 //并发较高的情况下,可以适当提高工作线程数,来加快读写
启动storage和关闭storage
任意目录下执行
fdfs_storaged /etc/fdfs/storage_1.conf ;
关闭或者重启storage
fdfs_storaged /etc/fdfs/storage_1.conf [restart|stop];
查看集群信息
在任意storage上执行:
fdfs_monitor /etc/fdfs/storage_x.conf
client配置
client是在服务器端启动一个fdfs的client,用来上传文件或者下载文件的;如果自己写一个后端对接服务,就不需要配置client;
client配置只需要在client.conf中添加tracker.server的地址和端口就好,如下:
base_path=/data/fdfs_data/tracker #tracker服务器文件路径
tracker_server=192.168.150.132:22122 #tracker服务器IP地址和端口号
http.tracker_server_port=6666 # tracker 服务器的 http端口号,必须和tracker的设置对应起来
```cd长度