一、单group 单磁盘 的 FastDFS 集群

  a、前期准备

    1、系统软件说明:

名称 说明
CentOS 7.x(安装系统)
libfastcommon FastDFS分离出的一些公用函数包
FastDFS FastDFS本体
fastdfs-nginx-module FastDFS和nginx的关联模块,解决组内同步延迟问题
nginx Web访问 storage Server 文件  

    2、设备准备

      

    3、基础环境准备

      目录准备:

存放安装包: /opt/fastdfs
日志和数据存储位置: /data/fastdfs
nginx安装目录: /home/software/nginx

        #mkdir -p  /opt/fastdfs  /data/fastdfs  /home/software/nginx

      准备基础系统环境:

1 yum groups install Development Tools -y
2 yum install perl -y
3 yum -y install vim wget lrzsz #基础工具
4 yum -y install gcc-c++ zlib-devel pcre-devel #nginx 依赖

      安装包准备:

libfastcommon https://github.com/happyfish100/libfastcommon/archive/V1.0.39.tar.gz
FastDFS https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
Nginx wget http://nginx.org/download/nginx-1.14.0.tar.gz
fastdfs-nginx-module https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz

         

    b、部署集群

      1、安装软件 

####安装 libfastcommon
$ cd /opt/fastdfs
$ tar -zxvf libfastcommon-1.0.39.tar.gz
$ cd libfastcommon-1.0.39/
$ ./make.sh
$ ./make.sh install ####安装 FastDFS
$ cd /opt/fastdfs
$ tar -zxvf fastdfs-5.11.tar.gz
$ cd fastdfs-5.11/
$ ./make.sh
$ ./make.sh install ####安装 fastdfs-nginx-module
$ cd /opt/fastdfs
$ tar -zxvf fastdfs-nginx-module-1.20.tar.gz ####安装 Nginx
$ cd /opt/fastdfs
$ tar -zxvf nginx-1.14.0.tar.gz
$ cd nginx-1.14.0
$ ./configure --prefix=/home/software/nginx --add-module=/opt/fastdfs/fastdfs-nginx-module-1.20/src
$ make && make install ###如果报错:#include "common_define.h" 报错如下图:
  修改/opt/fastdfs/fastdfs-nginx-module-1.20/src/config 文件为如下:
    ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
    CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
然后重新:
$ ./configure --prefix=/home/software/nginx --add-module=/opt/fastdfs/fastdfs-nginx-module-1.20/src
$ make && make install

      

      

      2、配置 tracker server( node1和node2 配置)  

$ mv /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf  #准备配置文件
$ vim /etc/fdfs/tracker.conf #需要修改的内容如下
bind_addr=服务器IP
port=22122 # tracker服务器端口(默认22122,一般不修改)
base_path=/data/fastdfs # 存储日志和数据的根目录
max_connections=1024
work_threads=4
store_lookup=2 #load balance, select the max free space group to upload file
store_server=0 #"0"代表轮询,下同
store_path=0
download_server=0
reserved_storage_space = 25%
log_level=debug
run_by_group=root
run_by_user=root
#编辑启动文件
$ vim /usr/lib/systemd/system/fastdfs-tracker.service
[Unit]
Description=The FastDFS File server
After=network.target remote-fs.target nss-lookup.target [Service]
Type=forking
ExecStart=/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
ExecStop=/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf stop
ExecRestart=/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart [Install]
WantedBy=multi-user.target #### 加载配置,启动服务 ####
$ systemctl daemon-reload
$ systemctl enable fastdfs-tracker.service
$ systemctl start fastdfs-tracker.service
$ netstat -tulnp #查看服务是否启动,端口是否打开

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1034/master
tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 2263/fdfs_trackerd

      3、配置 Storage server (node1,node2,node3 配置      

$ mv /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
$ vim /etc/fdfs/storage.conf #需要修改的内容如下
bind_addr=每服务器IP
port=23000 # storage服务端口(默认23000,一般不修改)
base_path=/data/fastdfs # 数据和日志文件存储根目录
max_connections=1024
work_threads=4
sync_wait_msec=50 #同步文件时,如果从binlog中没有读到要同步的文件,休眠N毫秒后重新读取。0表示不休眠,立即再次尝试读取。出于CPU消耗考虑,不建议设置为0。如何希望同步尽可能快一些,可以将本参数设置得小一些,比如设置为10ms
sync_interval=0
sync_start_time=00:00
sync_end_time=23:59
write_mark_file_freq=500 # 同步完N个文件后,把storage的mark文件同步到磁盘.注:如果mark文件内容没有变化,则不会同步
store_path0=/data/fastdfs # 第一个存储目录
subdir_count_per_path=256
tracker_server=192.168.3.50:22122 # tracker服务器IP和端口
tracker_server=192.168.3.53:22122 # tracker服务器IP和端口
log_level=debug
run_by_group=root
run_by_user=root
http.server_port=8888 # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致) #编辑启动文件
$ vim /usr/lib/systemd/system/fastdfs-storage.service [Unit]
Description=The FastDFS File server
After=network.target remote-fs.target nss-lookup.target [Service]
Type=forking
ExecStart=/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
ExecStop=/usr/bin/fdfs_storaged /etc/fdfs/storage.conf stop
ExecRestart=/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart [Install]
WantedBy=multi-user.target #### 加载配置,启动服务 ####
$ systemctl daemon-reload
$ systemctl enable fastdfs-storage.service
$ systemctl start fastdfs-storage.service
$ netstat -tulnp #查看服务是否启动,端口是否打开

Active Internet connections (only servers)
  Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1034/master
  tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 2263/fdfs_trackerd
  tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 597/rpcbind
  tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1115/sshd
  tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 2338/fdfs_storaged

#### 查看集群状态 ####
$ fdfs_monitor /etc/fdfs/storage.conf list

      

      4、配置测试 Client(任意node上配置,用于测试上传文件)  

$ mv /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
$ vim /etc/fdfs/client.conf #需要修改的内容如下
connect_timeout=30
network_timeout=60
base_path=/data/fastdfs
tracker_server=192.168.3.50:22122 # tracker服务器IP和端口
tracker_server=192.168.3.53:22122 # tracker服务器IP和端口 #### 测试上传文件 aa.jpg ####
$ fdfs_upload_file /etc/fdfs/client.conf aa.jpg #aa.jpg 为要上传的图片
注:返回的文件名需要记录下后期web 访问时需要用到。
返回如下:group1/M00/00/00/wKgDMmD5PSGAUexsAAYevEPlQIk762.jpg

      

    

    5、配置astdfs-nginx-module 和 Nginx (node1,node2,node3 配置)

####配置 fastdfs-nginx-module ####
$ cp /opt/fastdfs/fastdfs-nginx-module-1.20/src/mod_fastdfs.conf /etc/fdfs
$ vim /etc/fdfs/mod_fastdfs.conf #需要修改的内容如下
connect_timeout=2
network_timeout=30
group_name=group1
tracker_server=192.168.3.50:22122 # tracker服务器IP和端口
tracker_server=192.168.3.53:22122 # tracker服务器IP和端口
base_path=/data/fastdfs
load_fdfs_parameters_from_tracker=true
storage_sync_file_max_delay = 86400
use_storage_id = false
url_have_group_name = true #设置url中是否包含group名字,必须包含,否则无法正常反问到文件
store_path0=/data/fastdfs
log_level=info

#### 配置 Nginx ####
$ cp /opt/fastdfs/fastdfs-5.11/conf/http.conf /etc/fdfs/ #供nginx访问使用
$ cp /opt/fastdfs/fastdfs-5.11/conf/mime.types /etc/fdfs/ #供nginx访问使用
$ vim /home/software/nginx/conf/nginx.conf #修改和添加如下配置
修改端口:8888
添加配置:location /group1/ {
root /data/fastdfs;
ngx_fastdfs_module;
}
#具体如下图 $ cd /home/software/nginx/sbin
$ ./nginx -V #查看安装详情
$ ./nginx -v #查看版本
$ ./nginx -t -c /home/software/nginx/conf/nginx.conf #检测配置文件
$ ./nginx #启动nginx
$ pkill -9 nginx #停止nginx

       

      检测结果如下:is ok,表示配置没有问题

      

    6、浏览器访问:访问如下链接,均返回相同结果。

      http://192.168.3.50:8888/group1/M00/00/00/wKgDMmD5PSGAUexsAAYevEPlQIk762.jpg 

      http://192.168.3.53:8888/group1/M00/00/00/wKgDMmD5PSGAUexsAAYevEPlQIk762.jpg

      http://192.168.3.58:8888/group1/M00/00/00/wKgDMmD5PSGAUexsAAYevEPlQIk762.jpg   

         

二、多group 多磁盘 的 FastDFS 集群  

较之前变化如下:

  1、目录准备:

存放安装包: /opt/fastdfs
数据存储位置: /data/fastdfs
nginx安装目录: /home/software/nginx
磁盘存储目录: /data/dataN(N:表示磁盘编号)

#mkdir -p  /opt/fastdfs  /data/fastdfs  /home/software/nginx

  2、设备变化

      

  3、配置变化:    

#### storage.conf 、mod_fastdfs.conf  #####
group_name= 更具规划分组写入名称,例:group1,group2,group3
store_path_count= 2 # 磁盘数量,本案例中有两个磁盘
store_path0=/data/data1
store_path1=/data/data2 #### nginx.conf ####
添加配置:location /group1/ { #此处名称为所属组名称,本案例:group1-3
root /data/fastdfs;
ngx_fastdfs_module;
}

  4、多组模式。组内的每个Nginx 只能提供访问本组内部的数据,不能访问其他组数据,因此前边需要在加一层Nginx 代理。

yum -y install vim nginx
vim /etc/nginx/nginx.conf
user root;
include /etc/nginx/conf.d/*.conf;
## 添加如下信息
upstream fdfs_group01 {
server 192.168.3.20:8888 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.3.51:8888 weight=1 max_fails=2 fail_timeout=30s;
}
upstream fdfs_group02 {
server 192.168.3.38:8888 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.3.53:8888 weight=1 max_fails=2 fail_timeout=30s;
}
upstream fdfs_group03 {
server 192.168.3.49:8888 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.3.58:8888 weight=1 max_fails=2 fail_timeout=30s;
} server {
listen 80;
server_name 192.168.3.55;
#root /usr/share/nginx/html; location /group1/ {
proxy_pass http://fdfs_group01;
}
location /group2/ {
proxy_pass http://fdfs_group02;
}
location /group3/ {
proxy_pass http://fdfs_group03;
}

注:如果没有关闭SElinux,临时关闭,需要在fastdfs 节点上执行以下下命令Nginx 才可以被正常代理。

  # setenforce 0

  # setsebool -P httpd_can_network_connect 1

在客户端访问如下链接均显示正常:

  192.168.3.55/group1/M00/00/00/wKgDFGD6b9KALiDLAAYevEPlQIk376.jpg
  192.168.3.55/group1/M01/00/00/wKgDFGD6cNGAXGzwAAT4rd1P2iI215.jpg
  192.168.3.55/group2/M00/00/00/wKgDNWD6cFyAEm30AAYevEPlQIk448.jpg
  192.168.3.55/group2/M01/00/00/wKgDJmD6cQOAXzi1AAT4rd1P2iI341.jpg
  192.168.3.55/group3/M00/00/00/wKgDOmD6cHuAcdpIAAT4rd1P2iI451.jpg
  192.168.3.55/group3/M01/00/00/wKgDMWD6cH6AD1ZQAAT4rd1P2iI173.jpg

最新文章

  1. Microsoft Loves Linux
  2. Hibernate —— Session
  3. android应用刷新系统多媒体库(增加or删除多媒体文件)
  4. java 获取主机IP
  5. jquery ajax 序列化表单传参提交实体对象到后台action
  6. springMvc(三)session、HandlerInterceptorAdapter
  7. Leetcode 解题 Median of Two sorted arrays
  8. 201521123100《Java程序设计》第14周学习总结
  9. centos安装rabbitmq
  10. html禁止页面滚动
  11. php 函数小技巧(一)
  12. 为什么开启子进程 一定要放在 if __name__ == '__main__' 下面
  13. 洛谷P4281 紧急集合 / 聚会
  14. pycharm 3.4 破解
  15. ASP.NET MVC下使用AngularJs语言(八):显示html
  16. PHP魔术方法实例
  17. [ZJOI2006]书架
  18. 【PPT大放送】MPD软件工作坊北京站圆满落幕 深圳站即将开幕!
  19. vue核心之响应式原理(双向绑定/数据驱动)
  20. java int and Integer

热门文章

  1. PHP设计模式之原型模式
  2. PHP的引用计数是什么意思?
  3. Nginx系列(6)- nginx: [error] CreateFile() "D:\nginx-1.20.1/logs/nginx.pid" failed (2: The system cannot find the file specified)
  4. Chrome插件 - Modify Headers for Google Chrome(IP欺骗)
  5. Linux系列(26) - 强制杀死进程
  6. Jenkins持续集成体系 | 最完整的介绍及资料
  7. Appium Capability使用进阶
  8. fiddler抓包工具 https抓取 ios手机端抓取
  9. 1.4redis小结--队列在抢购活动的实现思路
  10. IDEA Web渲染插件开发(一)— 使用JCEF