美文网首页
FastDFS部署&双IP

FastDFS部署&双IP

作者: wangmuke | 来源:发表于2019-12-20 15:09 被阅读0次

FastDFS部署

目录

FastDFS部署 1

一、 环境准备 2

(一) 使用的系统软件 2

(二) 编译环境 2

(三) 磁盘目录 3

(四) 安装libfatscommon 3

(五) 安装FastDFS 3

(六) 安装fastdfs-nginx-module 4

(七) 安装nginx 4

二、 单机部署 4

(一) tracker配置 4

(二) storage配置 4

(三) client测试 5

(四) 配置nginx访问 5

三、 分布式部署 6

(一) tracker配置 6

(二) storage配置 6

(三) client测试 6

(四) 配置nginx访问 7

四、 启动 8

(一) 防火墙 8

(二) tracker 8

(三) storage 8

(四) nginx 8

(五) 检测集群 8

五、 说明 9

(一) 配置文件 9

六、 双IP设置说明 9

(一) Tracker server服务器双IP设置 9

(二) Storage server服务器双IP设置 9

七、 涉及的配置文件 9

(一) tracker配置文件说明 10

(二) storage.conf配置说明 13

一、环境准备

(一)使用的系统软件

名称 说明
centos 7.x
libfatscommon FastDFS分离出的一些公用函数包
FastDFS FastDFS本体
fastdfs-nginx-module FastDFS和nginx的关联模块
nginx nginx1.15.4

(二)编译环境

yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y

(三)磁盘目录

说明 位置
所有安装包 /usr/local/src
数据存储位置 /home/dfs/
#这里我为了方便把日志什么的都放到了dfs
mkdir /home/dfs #创建数据存储目录
cd/usr/local/src #切换到安装目录准备下载安装包

(四)安装libfatscommon

git clone https://github.com/happyfish100/libfastcommon.git --depth 1

cd libfastcommon/

##git checkout V1.0.42

./make.sh clean && ./make.sh &&./make.sh install #编译安装

(五)安装FastDFS

cd../ #返回上一级目录

git clone https://github.com/happyfish100/fastdfs.git --depth 1

cd fastdfs/

./make.sh &&./make.sh install #编译安装#配置文件准备

./setup.sh /etc/fdfs ##这一步设置包括下列的配置文件拷贝

~~cp /usr/etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf~~
~~cp /usr/etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf~~
~~cp /usr/etc/fdfs/client.conf.sample /etc/fdfs/client.conf~~ ~~#客户端文件,测试用~~
~~cp /usr/local/src/fastdfs/conf/http.conf /etc/fdfs/~~ ~~#供nginx访问使用~~
~~cp /usr/local/src/fastdfs/conf/mime.types /etc/fdfs/~~ ~~#供nginx访问使用~~

(六)安装fastdfs-nginx-module

cd../ #返回上一级目录

git clone https://github.com/happyfish100/fastdfs-nginx-module.git --depth 1

cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs

(七)安装nginx

wget http://nginx.org/download/nginx-1.15.4.tar.gz #下载nginx压缩包

tar -zxvf nginx-1.15.4.tar.gz #解压

cd nginx-1.15.4/ 

#添加fastdfs-nginx-module模块

./configure --add-module=/usr/local/src/fastdfs-nginx-module/src/

make &&make install #编译安装

一、单机部署

(一)tracker配置

服务器ip为 192.168.52.1#我建议用ftp下载下来这些文件 本地修改

vim /etc/fdfs/tracker.conf #需要修改的内容如下

port=22122  # tracker服务器端口(默认22122,一般不修改)

base_path=/home/dfs  # 存储日志和数据的根目录

(二)storage配置

vim /etc/fdfs/storage.conf #需要修改的内容如下

port=23000  # storage服务端口(默认23000,一般不修改)

base_path=/home/dfs  # 数据和日志文件存储根目录

store_path0=/home/dfs  # 第一个存储目录

tracker_server=192.168.52.1:22122  # tracker服务器IP和端口

http.server_port=8888  # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)

(三)client测试

vim /etc/fdfs/client.conf #需要修改的内容如下

base_path=/home/dfs

tracker_server=192.168.52.1:22122    #tracker服务器IP和端口

#保存后测试,返回ID表示成功 如:group1/M00/00/00/xx.tar.gz

fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz

(四)配置nginx访问

vim /etc/fdfs/mod_fastdfs.conf #需要修改的内容如下

tracker_server=192.168.52.1:22122  #tracker服务器IP和端口

url_have_group_name=true

store_path0=/home/dfs 

#配置nginx.config

vim /usr/local/nginx/conf/nginx.conf #添加如下配置

server {

    listen       8888;    ## 该端口为storage.conf中的http.server_port相同

    server_name  localhost;

location ~/group[0-9]/ {

        ngx_fastdfs_module;

    }

    error_page   500 502 503 504  /50x.html;

    location = /50x.html {

    root   html;

    }

}

测试下载,用外部浏览器访问刚才已传过的nginx安装包,引用返回的ID

http://192.168.52.1:8888/group1/M00/00/00/wKgAQ1pysxmAaqhAAA76tz-dVgg.tar.gz

弹出下载单机部署全部跑通

二、分布式部署

(一)tracker配置

服务器ip为 192.168.52.2,192.168.52.3,192.168.52.4

我建议用ftp下载下来这些文件 本地修改

vim /etc/fdfs/tracker.conf#需要修改的内容如下

port=22122  # tracker服务器端口(默认22122,一般不修改)

base_path=/home/dfs  # 存储日志和数据的根目录

(二)storage配置

vim /etc/fdfs/storage.conf #需要修改的内容如下

port=23000  # storage服务端口(默认23000,一般不修改)

base_path=/home/dfs  # 数据和日志文件存储根目录

store_path0=/home/dfs  # 第一个存储目录

tracker_server=192.168.52.2:22122  # 服务器1

tracker_server=192.168.52.3:22122  # 服务器2

tracker_server=192.168.52.4:22122  # 服务器3

http.server_port=8888  # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)

(三)client测试

vim /etc/fdfs/client.conf #需要修改的内容如下

base_path=/home/moe/dfs

tracker_server=192.168.52.2:22122  # 服务器1

tracker_server=192.168.52.3:22122  # 服务器2

tracker_server=192.168.52.4:22122  # 服务器3

#保存后测试,返回ID表示成功 如:group1/M00/00/00/xx.tar.gz

fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz

(四)配置nginx访问

vim /etc/fdfs/mod_fastdfs.conf #需要修改的内容如下

tracker_server=192.168.52.2:22122  # 服务器1

tracker_server=192.168.52.3:22122  # 服务器2

tracker_server=192.168.52.4:22122  # 服务器3

url_have_group_name=true

store_path0=/home/dfs #配置nginx.config

vim /usr/local/nginx/conf/nginx.conf #添加如下配置

server {

    listen       8888;    ## 该端口为storage.conf中的http.server_port相同

    server_name  localhost;

location ~/group[0-9]/ {

        ngx_fastdfs_module;

    }

    error_page   500 502 503 504  /50x.html;

    location = /50x.html {

    root   html;

    }

}

三、启动

(一)防火墙

不关闭防火墙的话无法使用

systemctl stop firewalld.service #关闭

systemctl restart firewalld.service #重启

(二)tracker

/etc/init.d/fdfs_trackerd start #启动tracker服务

/etc/init.d/fdfs_trackerd restart #重启动tracker服务

/etc/init.d/fdfs_trackerd stop #停止tracker服务

chkconfig fdfs_trackerd on #自启动tracker服务

(三)storage

/etc/init.d/fdfs_storaged start #启动storage服务

/etc/init.d/fdfs_storaged restart #重动storage服务

/etc/init.d/fdfs_storaged stop #停止动storage服务

chkconfig fdfs_storaged on #自启动storage服务

(四)nginx

/usr/local/nginx/sbin/nginx #启动nginx

/usr/local/nginx/sbin/nginx -s reload #重启nginx

/usr/local/nginx/sbin/nginx -s stop #停止nginx

(五)检测集群

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf# 会显示会有几台服务器 有3台就会 显示 Storage 1-Storage 3的详细信息

四、说明

(一)配置文件

tracker_server #有几台服务器写几个

group_name #地址的名称的命名

bind_addr #服务器ip绑定

store_path_count #store_path(数字)有几个写几个

store_path(数字) #设置几个储存地址写几个 从0开始

五、双IP设置说明

(一)Tracker server服务器双IP设置

vim /etc/fdfs/storage.conf

添加多个

tracker_server=192.168.52.1:22122

tracker_server=192.168.52.2:22122

(二)Storage server服务器双IP设置

storage server要使用双IP的话,需要启动storage server id特性,在tracker.conf中将use_storage_id设置为true,需要将storage server双IP配置到storage_ids.conf中

内网 两个ip用逗号隔开

100001   group1  10.122.1.71,172.16.0.221   

外网

100002   group1  10.200.116.40

六、涉及的配置文件

追踪服务器配置文件

vim /etc/fdfs/tracker.conf 

存储服务器配置文件

vim /etc/fdfs/storage.conf 

客户端配置文件

vim /etc/fdfs/client.conf

FastDFS关于Nginx模块的配置文件

vim /etc/fdfs/mod_fastdfs.conf

Nginx配置文件

vim /usr/local/nginx/conf/nginx.conf

Storage服务器双IP配置文件

vim /etc/fdfs/storage_ids.conf

(一)tracker配置文件说明

disabled=false#配置是否生效

bind_addr=192.168.6.102#绑定IP

port=22122#服务端口

connect_timeout=30#连接超时时间

network_timeout=60# tracker server的网络超时,单位为秒。

base_path=/home/yangzi#目录地址,里面会创建data(存放存储服务器信息)、logs,日志文件

max_connections=256#系统提供服务最大连接数

work_threads=4#线程数,通常设置CPU数

store_lookup=2上传组(卷)的方式 0:轮询方式 1:指定组 2: 平衡负载(选择最大剩余空间的组(卷)上传)

这里如果在应用层指定了上传到一个固定组,那么这个参数被绕过

store_group=group1

当上一个参数设定为1 时 (store_lookup=1,即指定组名时),必须设置本参数为系统中存在的一个组名。如果选择其他的上传方式,这个参数就没有效了

store_server=0

选择哪个storage server 进行上传操作(一个文件被上传后,这个storage server就相当于这个文件的storage server源,会对同组的storage server推送这个文件达到同步效果)

# 0: 轮询方式

# 1: 根据ip 地址进行排序选择第一个服务器(IP地址最小者)

# 2: 根据优先级进行排序(上传优先级由storage server来设置,参数名为upload_priority)

store_path=0

选择storage server 中的哪个目录进行上传。storage server可以有多个存放文件的base path(可以理解为多个磁盘)。

# 0: 轮流方式,多个目录依次存放文件

# 2: 选择剩余空间最大的目录存放文件(注意:剩余磁盘空间是动态的,因此存储到的目录或磁盘可能也是变化的)

download_server=0

 选择哪个 storage server 作为下载服务器

# 0: 轮询方式,可以下载当前文件的任一storage server

# 1:哪个为源storage server 就用哪一个 (前面说过了这个storage server源 是怎样产生的) 就是之前上传到哪个storage server服务器就是哪个了

reserved_storage_space = 4GB

storage server 上保留的空间,保证系统或其他应用需求空间(指出 如果同组的服务器的硬盘大小一样,以最小的为准,也就是只要同组中有一台服务器达到这个标准了,这个标准就生效,原因就是因为他们进行备份)

log_level=info#选择日志级别

run_by_group=#操作系统运行FastDFS的用户组

run_by_user=#操作系统运行FastDFS的用户

allow_hosts=*#可以连接到此 tracker server 的ip范围(对所有类型的连接都有影响,包括客户端,storage server)

sync_log_buff_interval = 10# 同步或刷新日志信息到硬盘的时间间隔,单位为秒

# 注意:tracker server 的日志不是时时写硬盘的,而是先写内存。

check_active_interval = 120# 检测 storage server 存活的时间隔,单位为秒。

# storage server定期向tracker server 发心跳,如果tracker server在一个check_active_interval内还没有收到storage server的一次心跳,那边将认为该storage server已经下线。所以本参数值必须大于storage server配置的心跳时间间隔。通常配置为storage server心跳时间间隔的2倍或3倍。

thread_stack_size = 64KB# 线程栈的大小。FastDFS server端采用了线程方式。更正一下,tracker server线程栈不应小于64KB,不是512KB。

# 线程栈越大,一个线程占用的系统资源就越多。如果要启动更多的线程(V1.x对应的参数为max_connections,

V2.0为work_threads),可以适当降低本参数值。

storage_ip_changed_auto_adjust = true# 这个参数控制当storage server IP地址改变时,集群是否自动调整。注:只有在storage server进程重启时才完成自动调整。

storage_sync_file_max_delay = 86400# V2.0引入的参数。存储服务器之间同步文件的最大延迟时间,缺省为1天。根据实际情况进行调整

storage_sync_file_max_time = 300# V2.0引入的参数。存储服务器同步一个文件需要消耗的最大时间,缺省为300s,即5分钟。

http.disabled=true# HTTP服务是否不生效 当然编译的时候我已经把 with_httpd宏去掉了,

http.server_port=80# HTTP服务端口

# 下列参数只有 开启http服务才有用

http.check_alive_interval=30

http.check_alive_type=tcp

http.check_alive_uri=/status.html

http.need_find_content_type=true

## (二)**storage.conf配置说明**

disabled=false#配置是否生效

group_name=group1#storage所在组(卷)

bind_addr=192.168.6.100# 绑定IP,另一太 storage IP为 192.168.6.101

client_bind=true#bind_addr通常是针对server的。当指定bind_addr时,本参数才有效。

port=23000# 是storage 服务端口

connect_timeout=30# 连接超时时间,针对socket套接字函数connect

network_timeout=60# storage server 网络超时时间,单位为秒。

heart_beat_interval=30# 心跳间隔时间,单位为秒

stat_report_interval=60# storage server向tracker server报告磁盘剩余空间的时间间隔,单位为秒。

base_path=/home/eric# base_path 目录地址,根目录必须存在 子目录会自动生成

# 会产生data(数据存储地方)、 logs日志文件

max_connections=256# 最大连接数

buff_size = 256KB# 设置队列结点的buffer大小。

work_threads=4# 工作线程数

disk_rw_separated = true# 磁盘IO读写是否分离,缺省是分离的。

disk_reader_threads = 1# 针对单个存储路径的读线程数,缺省值为1

disk_writer_threads = 1# 针对单个存储路径的写线程数,缺省值为1

sync_wait_msec=200# 同步文件时,如果从binlog中没有读到要同步的文件,休眠N毫秒后重新读取,0表示不休眠,立即再次尝试读取。

sync_interval=0# 同步上一个文件后,再同步下一个文件的时间间隔,单位为毫秒,0表示不休眠,直接同步下一个文件。

sync_start_time=00:00

sync_end_time=23:59# 允许系统同步的时间段 (默认是全天) 。一般用于避免高峰同步产生一些问题而设定,相信sa都会明白。

write_mark_file_freq=500# 把storage的mark文件定期同步到磁盘的时间间隔,单位为秒

store_path_count=1# 存放文件时storage server支持多个路径(例如磁盘)。这里配置存放文件的基路径数目,通常只配一个目录。

store_path0=/home/eric# 逐一配置store_path个路径,索引号基于0。注意配置方法后面有0,1,2 ......,需要配置0到store_path - 1。

# 如果不配置base_path0,那边它就和base_path对应的路径一样。

subdir_count_per_path=32# FastDFS存储文件时,采用了两级目录。这里配置存放文件的目录个数

tracker_server=192.168.6.188:22122# tracker_server 的列表 要写端口的哦

log_level=info# 日志级别

run_by_group=# 运行storage 用户组

run_by_user=# 运行storage 用户

allow_hosts=*# 允许连接IP列表

file_distribute_path_mode=0

# 文件在data目录下分散存储策略。

# 0: 轮流存放

# 1: 随机存储

file_distribute_rotate_count=100# 当上面的参数file_distribute_path_mode配置为0(轮流存放方式)时,本参数有效。

#当一个目录下的文件存放的文件数达到本参数值时,后续上传的文件存储到下一个目录中

fsync_after_written_bytes=0# 当写入大文件时,每写入N个字节,调用一次系统函数fsync将内容强行同步到硬盘。0表示从不调用fsync

sync_log_buff_interval=10# 同步或刷新日志信息到硬盘的时间间隔,单位为秒

sync_binlog_buff_interval=60# 同步binglog(更新操作日志)到硬盘的时间间隔,单位为秒

sync_stat_file_interval=300# 把storage的stat文件同步到磁盘的时间间隔,单位为秒。

thread_stack_size=512KB# 线程栈的大小。FastDFS server端采用了线程方式。

# 线程栈越大,一个线程占用的系统资源就越多。

upload_priority=10

本storage server作为源服务器,上传文件的优先级,可以为负数。值越小,优先级越高。这里就和 tracker.conf 中store_server= 2时的配置相对应了

if_alias_prefix=

check_file_duplicate=0# 是否检测上传文件已经存在。如果已经存在,则不存在文件内容,建立一个符号链接以节省磁盘空间。 结合 fastdfh使用的。 1是检测,0是不检测,我们不使用fastdfh 当然 0

key_namespace=FastDFS# 当上个参数设定为1或 yes时 (true/on也是可以的) , 在FastDHT中的命名空间

keep_alive=0# 与FastDHT servers 的连接方式 (是否为持久连接) 

# 下面是http的配置了就不多说了

http.disabled=true

http.domain_name=

http.server_port=80

http.trunk_size=256KB

http.need_find_content_type=true

相关文章

网友评论

      本文标题:FastDFS部署&双IP

      本文链接:https://www.haomeiwen.com/subject/qbtinctx.html