CentOS6.5环境搭建分布式存储FastDFS-5.0.5集群详细过程

FastDFS架构简介

FastDFS是一款开源的、分布式文件系统(Distributed File System),由淘宝开发平台部资深架构师余庆开发。FastDFS 是包括一组 Tracker Server 和 Storage Server 的。Tracker Server 与 Storage Server 之间不直接通信,其基本的信息由配置文件在系统启动加载时获知。多台 Tracker Server 之间保证了 Tracker 的分布式,Tracker Server 之间是对等的,防止了单点故障。 Storage Server 是分成多个 Group,每个 Group 中的Storage 都是互相备份的,也就是说,如果 Group1 有 Storage1、Storage2、Storage3,其容量分别是100GB、100GB、100GB,那么 Group1 的存储能力是 100GB,而不是 300GB,这就是互相备份的意思。进一步说,整个 Group 的存储能力由该组中该储能力最小的 Storage 决定。多个 Group 之间的存储方式,可以采用 round robin(轮训)、load balanced(负载均衡)或指定 Group 的方式。另一点相对于MS(Master-Slave)模式的优势,就是 Tracker Server 与 Master 是决然不同的,不仅 master 有上面可能提到的单点故障问题,而且 client 与 master 之间可能会出现瓶颈。但 FastDFS 架构中,Tracker Server 不会称为系统瓶颈,数据最终是与一个 available 的 Storage Server 进行传输的。

上传流程

我们可以通过 FastDFS 对文件的上传过程,来初步了解 FastDFS 的基本架构。首先客户端 client 发起对 FastDFS 的文件传输动作,是通过连接到某一台 Tracker Server 的指定端口来实现的,Tracker Server 根据目前已掌握的信息,来决定选择哪一台 Storage Server ,然后将这个Storage Server 的地址等信息返回给 client,然后 client 再通过这些信息连接到这台 Storage Server,将要上传的文件传送到给 Storage Server上。

总结

简单总结一下,FastDFS的特点包括(1)高可靠性:无单点故障;(2)高吞吐量:只要 Group 足够多,数据流量是足够分散的。

FastDFS部署:

1、机器分布

Tracker 192.168.100.106:22122 CentOS

Group1-Storage1 192.168.100.106:23001 CentOS

Group1-Storage1 192.168.100.125:23001 CentOS

2、需要到的软件和版本(软件存放位置:/root/soft)

说明:nginx主要实现负载均衡、缓存等功能

3、创建相关文件夹

配置tracker所需的base_path: /opt/fastdfs_tracker

配置storage所需的日志目录:fastdfs_storage_info。备注:存储storage之间同步文件等日志的

配置storage所需的存储文件目录: /opt/fastdfs_storage_data。备注: 这个目录是用来存储文件的

以上三个文件将在后续的tracker.conf和storage.conf、mod_fastdfs.conf中用到

4、安装libfastcommon-1.0.7.zip (注意:先检查是否安装unzip、zip、gcc、perl等)

unzip libfastcommon-1.0.7.zip

cd libfastcommon-1.0.7

sh make.sh && sh make.sh install

perl安装:

wget http://www.cpan.org/src/5.0/perl-5.20.2.tar.gz

tar zxvf perl-5.20.2.tar.gz

mkdir /usr/local/perl

./Configure -des -Dprefix=/usr/local/perl -Dusethreads -Uversiononly

make

make install

perl -version

注意:上述安装路径在/usr/lib64/,FastDFS主程序设置lib目录是/usr/local/lib,创建软连接如下:

ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so

ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so

ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so

ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

5、安装fastdfs-5.05.tar.gz:

tar -zxvf fastdfs-5.05.tar.gz

cd fastdfs-5.05

./make.sh && ./make.sh install

进入/etc/fdfs这个目录,如果有配置文件存在,则安装成功

以上步骤在tracker和storage机器上都需要执行

6、配置tracker (192.168.100.106)

进入/etc/fdfs文件夹,执行命令: cp  tracker.conf.sample  tracker.conf。

编辑tracker.conf,执行命令: vi  tracker.conf ,配置成如下:

disabled=false #false代表开启配置文件

bind_addr= #空代表所有host,也可以指定host

port=22122 #tracker默认开启的端口号

connect_timeout=30 #连接超时时间

network_timeout=60 #网络超时时间

base_path=/opt/fastdfs_tracker #存放store的数据和日志文件

max_connections=256 #允许最大连接数

accept_threads=1 #允许的线程数

work_threads=4 #工作线程数,必须小于等于max_connections

store_lookup=2 #选择上传文件方式0:轮询,1:指定组,2:负载均衡

store_group=group1 #上传到组group1

store_server=0 #上传到storage,0:轮询,1:IP顺序,2:服务器顺序

store_path=0 #上传文件到哪个路径0:轮询,2:负载均衡

download_server=0 #指定下载服务器0:轮询,1:使用源服务器

reserved_storage_space = 10% #保留的存储空间

log_level=info #日志等级

run_by_group= #选择用户组,空代表当前用户组

run_by_user= #选择用户,空代表当前用户

allow_hosts=* #允许访问的IP,*代表全部

sync_log_buff_interval = 10 #同步日志buff到磁盘的间隔时间

check_active_interval = 120 #检查storage状态间隔时间

thread_stack_size = 64KB #线程的堆栈大小,必须大于等于64KB

storage_ip_changed_auto_adjust = true #storageIP改变是自动调整

storage_sync_file_max_delay = 86400 #同步文件的最大延迟

storage_sync_file_max_time = 300 #同步文件的最大时间

use_trunk_file = false #是否使用中继文件存储小文件

slot_min_size = 256 #存储文件的最小单位,必须大于等于4KB

slot_max_size = 16MB #存储文件的最大单位,必须大于slot_min_size

trunk_file_size = 64MB #中继文件的大小,必须大于等于4MB

trunk_create_file_advance = false #是否允许创建中继文件超前

trunk_create_file_time_base = 02:00 #创建trunk文件的时间基准

trunk_create_file_interval = 86400 #创建trunk文件的时间间隔

trunk_create_file_space_threshold = 20G

trunk_init_check_occupying = false

trunk_init_reload_from_binlog = false

trunk_compress_binlog_min_interval = 0

use_storage_id = false

storage_ids_filename = storage_ids.conf

id_type_in_filename = ip

store_slave_file_use_link = false

rotate_error_log = false

error_log_rotate_time=00:00

rotate_error_log_size = 0

log_file_keep_days = 0

use_connection_pool = false

connection_pool_max_idle_time = 3600

http.server_port=8080

http.check_alive_interval=30

http.check_alive_type=tcp

http.check_alive_uri=/status.htm

配置文件详细注解参考:

http://blog.csdn.net/xingjiarong/article/details/50752586

启动tracker: /usr/local/bin/fdfs_trackerd  /etc/fdfs/tracker.conf  start (start\stop\restart)

检测是否启动成功:netstat -lntup|grep fdfs_trackerd

设置开机启动:

echo "/usr/bin/fdfs_trackerd  /etc/fdfs/tracker.conf  start" >> /etc/rc.d/rc.local

7、配置storage (192.168.100.106\192.168.100.125)

进入/etc/fdfs文件夹,执行命令: cp  storage.conf.sample  storage.conf

编辑storage.conf,执行命令: vi storage.conf ,配置成如下:

disabled=false

group_name=group1

bind_addr=

client_bind=true

port=23001

connect_timeout=30

network_timeout=60

heart_beat_interval=30

stat_report_interval=60

base_path=/opt/fastdfs_storage_info

max_connections=256

buff_size = 256KB

accept_threads=1

work_threads=4

disk_rw_separated = true

disk_reader_threads = 1

disk_writer_threads = 1

sync_wait_msec=50

sync_interval=0

sync_start_time=00:00

sync_end_time=23:59

write_mark_file_freq=500

store_path_count=1

store_path0=/opt/fastdfs_storage_data

subdir_count_per_path=256

tracker_server=192.168.100.106:22122

log_level=info

run_by_group=

run_by_user=

allow_hosts=*

file_distribute_path_mode=0

file_distribute_rotate_count=100

fsync_after_written_bytes=0

sync_log_buff_interval=10

sync_binlog_buff_interval=10

sync_stat_file_interval=300

thread_stack_size=512KB

upload_priority=10

if_alias_prefix=

check_file_duplicate=0

file_signature_method=hash

key_namespace=FastDFS

keep_alive=0

use_access_log = false

rotate_access_log = false

access_log_rotate_time=00:00

rotate_error_log = false

error_log_rotate_time=00:00

rotate_access_log_size = 0

rotate_error_log_size = 0

log_file_keep_days = 0

file_sync_skip_invalid_record=false

use_connection_pool = false

connection_pool_max_idle_time = 3600

http.domain_name=

http.server_port=8888

配置文件详细注解参考:

http://blog.csdn.net/xingjiarong/article/details/50752586

启动storage: /usr/local/bin/fdfs_storage  /etc/fdfs/storage.conf  start

检测是否启动成功:netstat -lntup|grep fdfs_storaged

检测启动状态:/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

查看192.168.100.106:23001 是ACTIVE状态即可

设置开机自动启动:

echo "/usr/bin/fdfs_trackerd  /etc/fdfs/storage.conf  start" >> /etc/rc.d/rc.local

8、安装nginx

storage中安装nginx,主要是为了为提供http的访问服务,同时解决group中storage服务器的同步延迟问题。而tracker中安装nginx,主要是为了提供http访问的反向代理、负载均衡以及缓存服务

yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

a、在storage中安装nginx (192.168.100.106\192.168.100.125)

tar -zxvf nginx1.7.8.tar.gz

tar -zxvf fastdfs-nginx-module_v1.16.tar.gz

cd /root/soft/fastdfs-nginx-module/src

编辑config文件,找到包含CORE_INCS这个一行,将路径中local全部去掉,变为CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

cd nginx1.7.8

--prefix=/opt/nginx --add-module=/root/soft/fastdfs-nginx-module/src

make && make install

编辑nginx.conf文件如下:

将http.conf和mime.types拷贝到/etc/fdfs/下,如果不执行这一步,启动nginx时会报错。

cp /root/soft/fastdfs-5.05/conf/http.conf /etc/fdfs/

cp /root/soft/fastdfs-5.05/conf/mime.conf /etc/fdfs/

将mod_fastdfs.conf这个文件拷贝到 /etc/fdfs 目录下

cp /root/soft/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

编辑mod_fastdfs.conf 文件如下:

connect_timeout=2

network_timeout=30

base_path=/opt/fastdfs_storage_info

load_fdfs_parameters_from_tracker=true

storage_sync_file_max_delay = 86400

use_storage_id = false

storage_ids_filename = storage_ids.conf

tracker_server=192.168.100.106:22122

storage_server_port=23001

group_name=group1

url_have_group_name = true

store_path_count=1

store_path0=/opt/fastdfs_storage_data

log_level=info

log_filename=

response_mode=proxy

if_alias_prefix=

flv_support = true

flv_extension = flv

group_count = 1

[group1]

group_name=group1

storage_server_port=23001

store_path_count=1

store_path0=/opt/fastdfs_storage_data

store_path1=/opt/fastdfs_storage_data

配置文件详细注解参考:

http://blog.csdn.net/xingjiarong/article/details/50752586

建立软连接:

ln  -s  /opt/fastdfs_storage_data/data  /opt/fastdfs_storage_data/data/M00

启动nginx: /opt/nginx/sbin/nginx

b、在tracker中安装nginx

tar -zxvf nginx1.7.8.tar.gz

tar -zxvf fastdfs-nginx-module_v1.16.tar.gz

cd /root/soft/fastdfs-nginx-module/src

编辑config文件,找到包含CORE_INCS这个一行,将路径中local全部去掉,变为CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

cd nginx1.7.8

--prefix=/opt/nginx --add-module=/root/soft/fastdfs-nginx-module/src --add-module=/root/soft/ngx_cache_purge-2.1 --with-http_ssl_module --with-pcre=/root/soft/pcre-8.40 --with-zlib=/root/soft/zlib-1.2.11

make && make install

编辑nginx.conf文件如下:

启动nginx:/opt/nginx/sbin/nginx

9、测试并上传文件

编辑client.conf 文件,编辑内容如下:

测试上传文件:

echo "this is a test file -- hello world" >> test.txt

/usr/bin/fdfs_test /etc/fdfs/client.conf upload test.txt #上传

生成如下url,并复制到浏览器访问

以上测试说明成功,并且两台stroage同步成功了

测试负载均衡办法:停掉192.168.100.125或者192.168.100.106的storage再进行上传测试

/usr/local/bin/fdfs_storage  /etc/fdfs/storage.conf  stop

10、PHP安装FasfDFS扩展模块

cd /root/soft/fastdfs-5.05/client

make && make install

cd /root/soft/fastdfs-5.05/php_client

/usr/local/php/bin/phpize

./configure --with-php-config=/usr/local/php/bin/php-config

make && make install

cd /etc/fdfs

vi client.conf

tracker_server=192.168.100.106:22122 //根据环境填写IP地址及端口号

在php.ini配置文件中加载fastdfs

cat fastdfs_client.ini >> /usr/local/php/etc/php.ini

新增nginx配置如下:

server {

listen 8080;

server_name localhost;

access_log /data/wwwlogs/access_nginx_cms.log combined;

root /opt/nginx/html;

index index.html index.htm index.php forum.php;

location /nginx_status {

access_log off;

allow 127.0.0.1;

deny all;

}

error_page 404 /404.html;

location ~ [^/]\.php(/|$) {

fastcgi_pass 192.168.100.106:9000;

fastcgi_index index.php;

include /usr/local/nginx/conf/fastcgi_params;

include fastcgi.conf;

}

location \(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {

expires 30d;

access_log off;

}

location \(js|css)?$ {

expires 7d;

access_log off;

}

}

重启nginx和php

/opt/nginx/sbin/nginx -s reload

或者

pkill -9 nginx

/opt/nginx/sbin/nginx

kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

或者

pkill -9 php

/usr/local/php/sbin/php-fpm

测试:在浏览器中输入:http://192.168.100.106:8080/fastdfs_test.php

如果出现类似于以下截图则表示成功

时间: 2024-10-10 09:47:45

CentOS6.5环境搭建分布式存储FastDFS-5.0.5集群详细过程的相关文章

hadoop3.0.0 分布式集群安装过程

1. 环境 主机名 ip 角色 hdp01 192.168.184.61 ResourceManager/NameNode/SecondaryNameNode hdp02 192.168.184.62 NodeManager/DataNode hdp03 192.168.184.63 NodeManager/DataNode (1个namenode 2个datanode) 2.准备工作 windows10(物理机系统) VMware12 workstation(虚拟机软件) centos7.0(

Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程详解

作为重量级的跨平台开发的游戏引擎,Cocos2d-x在现今的手游开发领域占有重要地位.那么问题来了,作为Cocos2dx的学习者,它的可移植特性我们就需要掌握,要不然总觉得少一门技能.然而这个时候各种各样的问题也就来了,之前网上一直有零零碎碎的移植教程,但是都不完整,或是有这样或者那样的问题.今天刚刚研究成功了Cocos2dx-3.0版本项目的安卓平台移植问题,本人亲自完成了整个过程,将Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程 一起分享给大家.

Hadoop-1.0.4集群搭建笔记

这篇文章介绍的是简单的配置Hadoop集群的方法,适合实验和小型项目用,正式运行的集群需要用更正规的方法和更详细的参数配置,不适合使用这篇文章. 安装 JDK 在终端输入 $ java -version 如果有反应,说明已安装过jdk.如果显示的信息里出现了类似OpenJDK的字样,如 java version "1.6.0_20" OpenJDK Runtime Environment (IcedTea6 1.9.2) (6b20-1.9.2-0ubuntu1~10.04.1) Op

基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:3.安装Oracle RAC-3.6.集群管理命令

3.6. 集群管理命令 3.6.1. RAC的启动与关闭 oracle rac默认会开机自启动,如需维护时可使用以下命令: 关闭: crsctl stop cluster 停止本节点集群服务 crsctl stop cluster –all 停止所有节点服务 开启: crsctl start cluster 开启本节点集群服务 crsctl stop cluster –all 开启所有节点服务 注:以上命令需以 root用户执行 3.6.2.RAC检查运行状况 以grid 用户运行 [[emai

一步一步教你搭建基于docker的MongoDB复制集群环境

一步一步教你搭建基于docker的MongoDB复制集群环境 1.安装docker 2.创建MongoDB的Image 3.搭建MongoDB的集群 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中. 1.ubuntu14.04安装docker 参考文档 http://docs.docker.com/installation/ubuntulinux/ 参考文档 http://docs.docker.com/mac/started/ pc@pc-Th

Centos7搭建redis5.0.5集群

Centos7搭建redis5.0.5集群 发表于 2019-09-06 | 分类于 Linux, Redis Redis是一个开源(BSD许可),内存数据结构存储,用作数据库,缓存和消息代理.它支持数据结构,如字符串,散列,列表,集合,带有范围查询的排序集,位图,超级日志,具有半径查询和流的地理空间索引.Redis具有内置复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel提供高可用性并使用Redis Cluster自动分区. 官网地址 一.集群方案比较

Redis 4.0.1集群搭建

Redis 4.0.1集群搭建 一.概述 Redis3.0版本之后支持Cluster. 1.1.redis cluster的现状 目前redis支持的cluster特性: 1):节点自动发现 2):slave->master 选举,集群容错 3):Hot resharding:在线分片 4):进群管理:cluster xxx 5):基于配置(nodes-port.conf)的集群管理 6):ASK 转向/MOVED 转向机制. 1.2.redis cluster 架构 1)redis-clust

Nginx+Keepalived搭建高可用负载平衡WEB 集群

Nginx+Keepalived搭建高可用负载平衡WEB 集群 1.1环境规划: Nginx_master:192.168.5.129 Nginx_backup:192.168.5.131 Tomcat:192.168.5.132 端口:8080,9080 操作系统:CentOS6.5 x86_64 内核版本:2.6.32-696.el6.x86_64 Nginx版本:nginx/1.12.0 nginx-1.12.0 Keepalived版本:Keepalived v1.2.13 前端双Ngi

keepalived+nginx搭建高可用and负载均衡集群

keepalived+nginx搭建高可用and负载均衡集群 前言 因生产环境需要,现需要搭建一个前端为nginx的HA双向互备.后端为nginx代理的loadbalance负载均衡集群.nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能.在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都由主进程发出,Slave(worke