1. 架构设计

1.1 架构图

FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

1.2 服务器配置

192.168.22.173  tracker-group1

192.168.22.174  tracker-group2

192.168.22.175  storage-group1-1

192.168.22.176  storage-group1-2

192.168.22.177  storage-group2-1

192.168.22.178  storage-group2-2

2. FastDFS安装和配置

2.1. 安装libfastcommon

上述所有服务器均进行安装。

参照《fastDFS分布式文件系统安装教程》

2.2. 安装FastDFS

上述所有服务器均进行安装。

参照《fastDFS分布式文件系统安装教程》

2.3. 配置跟踪器

2.3.1. 配置(192.168.22.173  tracker-group1)tracker.conf

disabled=false #启用配置文件

base_path=/home/fastdfs/tracker #设置tracker的数据文件和日记目录(预先创建)

store_lookup=0 #0:轮询,1:指定组,2:负载均衡(测试效果,改为0)

port=22122 #设置tracker的端口号,一般使用默认的

2.3.2. 配置(192.168.22.174  tracker-group2)tracker.conf

disabled=false #启用配置文件

base_path=/home/fastdfs/tracker #设置tracker的数据文件和日记目录(预先创建)

store_lookup=0 #0:轮询,1:指定组,2:负载均衡(测试效果,改为0)

port=22122 #设置tracker的端口号,一般使用默认的

2.4. 配置存储器

2.4.1. 配置(192.168.22.175  storage-group1-1)storage.conf

disabled=false #启用配置文件

base_path=/home/fastdfs/storage#设置storage的数据文件和日记目录(预先创建):

port=23000 #设置端口号,默认值23000,同一组的的storage端口号必须相同

group_name=group1 #组名,第一组group1,第二组group2

store_path0=/home/fastdfs/storage #存储路径

store_path_count=1 #存储路径个数,需要和store_path个数匹配

tracker_server=192.168.22.173:22122 #tracker服务器的ip地址和端口号

tracker_server=192.168.22.174:22122 #多个tracker添加多条配置

Http_server_port=8888 #设置http端口号

2.4.2. 配置(192.168.22.176  storage-group1-2)storage.conf

disabled=false #启用配置文件

base_path=/home/fastdfs/storage#设置storage的数据文件和日记目录(预先创建):

port=23000 #设置端口号,默认值23000,同一组的的storage端口号必须相同

group_name=group1 #组名,第一组group1,第二组group2

store_path0=/home/fastdfs/storage #存储路径

store_path_count=1 #存储路径个数,需要和store_path个数匹配

tracker_server=192.168.22.173:22122 #tracker服务器的ip地址和端口号

tracker_server=192.168.22.174:22122 #多个tracker添加多条配置

Http_server_port=8888 #设置http端口号

2.4.3. 配置(192.168.22.177  storage-group2-1)storage.conf

disabled=false #启用配置文件

base_path=/home/fastdfs/storage#设置storage的数据文件和日记目录(预先创建):

port=23000 #设置端口号,默认值23000,同一组的的storage端口号必须相同

group_name=group2 #组名,第一组group1,第二组group2

store_path0=/home/fastdfs/storage #存储路径

store_path_count=1 #存储路径个数,需要和store_path个数匹配

tracker_server=192.168.22.173:22122 #tracker服务器的ip地址和端口号

tracker_server=192.168.22.174:22122 #多个tracker添加多条配置

Http_server_port=8888 #设置http端口号

 

2.4.4. 配置(192.168.22.178  storage-group2-2)storage.conf

disabled=false #启用配置文件

base_path=/home/fastdfs/storage#设置storage的数据文件和日记目录(预先创建):

port=23000 #设置端口号,默认值23000,同一组的的storage端口号必须相同

group_name=group2 #组名,第一组group1,第二组group2

store_path0=/home/fastdfs/storage #存储路径

store_path_count=1 #存储路径个数,需要和store_path个数匹配

tracker_server=192.168.22.173:22122 #tracker服务器的ip地址和端口号

tracker_server=192.168.22.174:22122 #多个tracker添加多条配置

Http_server_port=8888 #设置http端口号

2.5. 测试

2.5.1. 主从自动切换

先启动tracker,在启动storage

查看日志信息:

tail -f /home/fastdfs/storage/logs/storaged.log

自动选举一个leader(tracker节点),同一组是互通的

关闭一个tracker,验证是否自动切换主从leader

2.5.2. 集群信息查看

查看命令:cd /usr/bin/ && ll | grep fdfs

查看存储集群信息:/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

2.5.3. 上传文件

修改tracker节点的client.conf配置信息

base_path=/home/fastdfs/tracker #存放路径

tracker_server=192.168.22.173:22122  #tracker服务器ip地址和端口

tracker_server=192.168.22.174:22122  #tracker服务器ip地址和端口

上传:/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /usr/local/1.img

在storage服务器查看/home/fastdfs/storage/data中的数据

75和76服务器数据一致

75.76和77.78根据之前设置的轮询进行数据存储

3. Nginx安装(storage)

3.1. 安装fastdfs-nginx-module包进行整合

上述四个存储节点都进行安装。

参照《fastDFS分布式文件系统安装教程》

3.2. Fastdfs与Nginx进行集成

上述四个存储节点都进行安装。

参照《fastDFS分布式文件系统安装教程》

3.3. nginx-module.conf配置

3.3.1. 配置(192.168.22.175  storage-group1-1)

connect_timeout=10 #连接超时时间

tracker_server=192.168.22.173:22122 #跟踪ip

tracker_server=192.168.22.174:22122 #跟踪ip

storage_server_port=23000

url_have_group_name=true #启用url访问

store_path0=/home/fastdfs/storage #与之前一致

group_name=group1 #第一组

group_count=2 #有多少个组

[group1]

group_name=group1

storage_server_port=23000

store_path_count=1

store_path0=/home/fastdfs/storage

[group2]

group_name=group2

storage_server_port=23000

store_path_count=1

store_path0=/home/fastdfs/storage

 

3.3.2. 配置(192.168.22.176  storage-group1-2)

connect_timeout=10 #连接超时时间

tracker_server=192.168.22.173:22122 #跟踪ip

tracker_server=192.168.22.174:22122 #跟踪ip

storage_server_port=23000

url_have_group_name=true #启用url访问

store_path0=/home/fastdfs/storage #与之前一致

group_name=group1 #第一组

group_count=2 #有多少个组

[group1]

group_name=group1

storage_server_port=23000

store_path_count=1

store_path0=/home/fastdfs/storage

[group2]

group_name=group2

storage_server_port=23000

store_path_count=1

store_path0=/home/fastdfs/storage

3.3.3. 配置(192.168.22.177  storage-group2-1)

connect_timeout=10 #连接超时时间

tracker_server=192.168.22.173:22122 #跟踪ip

tracker_server=192.168.22.174:22122 #跟踪ip

storage_server_port=23000

url_have_group_name=true #启用url访问

store_path0=/home/fastdfs/storage #与之前一致

group_name=group2 #第二组

group_count=2 #有多少个组

[group1]

group_name=group1

storage_server_port=23000

store_path_count=1

store_path0=/home/fastdfs/storage

[group2]

group_name=group2

storage_server_port=23000

store_path_count=1

store_path0=/home/fastdfs/storage

3.3.4. 配置(192.168.22.178  storage-group2-2)

connect_timeout=10 #连接超时时间

tracker_server=192.168.22.173:22122 #跟踪ip

tracker_server=192.168.22.174:22122 #跟踪ip

storage_server_port=23000

url_have_group_name=true #启用url访问

store_path0=/home/fastdfs/storage #与之前一致

group_name=group2 #第二组

group_count=2 #有多少个组

[group1]

group_name=group1

storage_server_port=23000

store_path_count=1

store_path0=/home/fastdfs/storage

[group2]

group_name=group2

storage_server_port=23000

store_path_count=1

store_path0=/home/fastdfs/storage

3.4. 安装nginx缓存模块

需要在所有跟踪器上安装nginx,以提供反向代理服务,目的是使用统一的一个ip地址对外提供服务。

3.4.1. 安装nginx缓存模块

上传并解压Nginx缓存模块,ngx_cache_purge

安装依赖库文件

yum install pcre

yum install pcre-deve

yum install zlib

yum install zlib-devel

安装Nginx,并加入缓存模块

加入模块:./configure  --add-module=/usr/local/fastdfs/ngx_cache_purge

编译:make && make install

3.4.2. 配置nginx负载均衡和缓存(192.168.22.173  tracker-group1)

编辑nginx.conf

# 缓存配置start

server_names_hash_bucker_size 128;

client_header_buffer_size 32k;

large_client_header_buffers 4 32k;

client_max_body_size 300m;

proxy_redirect off;

proxy_set_header Host $http_host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarder_for;

proxy_connect_timeout 90;

proxy_send_timeout 90;

proxy_read_timeout 90;

proxy_buffer_size 16k;

proxy_buffers 4 64k;

proxy_busy_buffers_size 128k;

proxy_temp_file_write_size 128k;

# 缓存文件夹

proxy_cacher_path /home/fastdfs/cache/nginx/proxy_cache levels=1:2

keys_zone=http-cache:200m max_size=1g inactive=30d;

proxy_temp_path /home/fastdfd/cache/nginx/proxy_cache/tmp;

# group的服务设置

upstream fdfs_group1{

server 192.168.22.175:8888 weight=1 max_fails=2 fail_timeout=30s;

server 192.168.22.176:8888 weight=1 max_fails=2 fail_timeout=30s;

}

upstream fdfs_group2{

server 192.168.22.177:8888 weight=1 max_fails=2 fail_timeout=30s;

server 192.168.22.178:8888 weight=1 max_fails=2 fail_timeout=30s;

}

# 缓存配置end

server {

listen       8000;

server_name  localhost;

#charset koi8-r;

#access_log  logs/host.access.log  main;

location /group1/M00 {

proxy_next_upstream http_502 http_504 error timeout invalid_header;

proxy_cache http-cache;

proxy_cache_valid 200 304 12h;

proxy_cache_key $uri$is_args$args;

proxy_pass   http://fdfs_group1;

expires 30d;

}

location /group2/M00 {

proxy_next_upstream http_502 http_504 error timeout invalid_header;

proxy_cache http-cache;

proxy_cache_valid 200 304 12h;

proxy_cache_key $uri$is_args$args;

proxy_pass   http://fdfs_group2;

expires 30d;

}

#缓存清空权限设置

location ~purge(/.*) {

allow 127.0.0.1;

allow 127.0.0.1;

deny all;

proxy_cache_purge http-cache $1$si_args$args;

}

3.4.3. 配置nginx负载均衡和缓存(192.168.22.174  tracker-group2)

在/fastdfs/storage文件存储目录下创建软连接,将其链接到实际存放数据的目录:

# 缓存配置start

server_names_hash_bucker_size 128;

client_header_buffer_size 32k;

large_client_header_buffers 4 32k;

client_max_body_size 300m;

proxy_redirect off;

proxy_set_header Host $http_host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarder_for;

proxy_connect_timeout 90;

proxy_send_timeout 90;

proxy_read_timeout 90;

proxy_buffer_size 16k;

proxy_buffers 4 64k;

proxy_busy_buffers_size 128k;

proxy_temp_file_write_size 128k;

# 缓存文件夹

proxy_cacher_path /home/fastdfs/cache/nginx/proxy_cache levels=1:2

keys_zone=http-cache:200m max_size=1g inactive=30d;

proxy_temp_path /home/fastdfd/cache/nginx/proxy_cache/tmp;

# group的服务设置

upstream fdfs_group1{

server 192.168.22.175:8888 weight=1 max_fails=2 fail_timeout=30s;

server 192.168.22.176:8888 weight=1 max_fails=2 fail_timeout=30s;

}

upstream fdfs_group2{

server 192.168.22.177:8888 weight=1 max_fails=2 fail_timeout=30s;

server 192.168.22.178:8888 weight=1 max_fails=2 fail_timeout=30s;

}

# 缓存配置end

server {

listen       8000;

server_name  localhost;

#charset koi8-r;

#access_log  logs/host.access.log  main;

location /group1/M00 {

proxy_next_upstream http_502 http_504 error timeout invalid_header;

proxy_cache http-cache;

proxy_cache_valid 200 304 12h;

proxy_cache_key $uri$is_args$args;

proxy_pass   http://fdfs_group1;

expires 30d;

}

location /group2/M00 {

proxy_next_upstream http_502 http_504 error timeout invalid_header;

proxy_cache http-cache;

proxy_cache_valid 200 304 12h;

proxy_cache_key $uri$is_args$args;

proxy_pass   http://fdfs_group2;

expires 30d;

}

#缓存清空权限设置

location ~purge(/.*) {

allow 127.0.0.1;

allow 127.0.0.1;

deny all;

proxy_cache_purge http-cache $1$si_args$args;

}

3.4.4. 创建缓存文件夹

命令:mkidr -p /home/fastdfs/cache/nginx/proxy_cache

命令:mkidr -p /home/fastdfd/cache/nginx/proxy_cache/tmp

3.4.5. 启动nginx进行测试

命令: /usr/local/nginx/sbin/nginx

3.4.6. 使用keepalive虚拟ip地址(可在173和174上代理)

upstream fastdfs_tracker{

server 192.168.22.173:8000 weight=1 max_fails=2 fail_timeout=30s;

server 192.168.22.174:8000 weight=1 max_fails=2 fail_timeout=30s;

}

server {

listen       80;

server_name  localhost;

#charset koi8-r;

#access_log  logs/host.access.log  main;

location /fastdfs {

root html;

index index.html index.htm;

proxy_pass   http://fastdfs_tracker;

proxy_set_header Host $http_host;

proxy_set_header Cookie $http_cookie;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarder_for;

proxy_set_header X-Forwarded-Proto $scheme;

client_max_body_size 300m;

}

基于【 centos7】四 || FastDFS集群+Nginx负载均衡的更多相关文章

  1. Tomcat集群 Nginx负载均衡 shell脚本实时监控Nginx

    第一步,安装Tomcat 系统环境:Centos7 第1步:下载tomcat安装包 tomcat官网:https://tomcat.apache.org/ 第2步:安装包上传至linux中 第3步:下 ...

  2. Graylog+elasticsearch+mongodb集群+nginx负载均衡前端

    网上有张图画的很好,搜索有关它的配置文章,google里有几篇英文的,都是依靠haproxy等或别的什么实现,没有纯粹的Graylog+elasticsearch+mongodb集群,项目需要,只有自 ...

  3. Nginx实现tomcat集群进行负载均衡

    一.背景 随着业务量和用户数量的激增,单一的tomcat部署应用已经无法满足性能需求,而且对于每次发布项目期间服务不可用的问题也凸显,既然出现了这个问题,那么我们本文就借助nginx来完美的解决这个问 ...

  4. 10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡

    分布式,集群,云计算机.大数据.负载均衡.高并发······当耳边响起这些词时,做为一个菜鸟程序猿无疑心中会激动一番(或许这是判断是否是一个标准阿猿的标准吧)! 首先自己从宏观把控一下,通过上网科普自 ...

  5. 架构之路:nginx与IIS服务器搭建集群实现负载均衡(三)

    参考网址:https://blog.csdn.net/zhanghan18333611647/article/details/50811980 [前言] 在<架构之路:nginx与IIS服务器搭 ...

  6. Windows7系统中nginx与IIS服务器搭建集群实现负载均衡

    10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡   分布式,集群,云计算机.大数据.负载均衡.高并发······当耳边响起这些词时,做为一个菜鸟程序猿无疑 ...

  7. 搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡

    转载:https://www.cnblogs.com/xiongze520/p/10308720.html 分布式,集群,云计算机.大数据.负载均衡.高并发······当耳边响起这些词时,做为一个菜鸟 ...

  8. 注意这几点,轻轻松松配置 Nginx + Tomcat 的集群和负载均衡

    Tomcat 集群是当单台服务器达到性能瓶颈,通过横向扩展的方式提高整体系统性能的有效手段.Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,可以通过简单的配置实现 Tomcat 集群 ...

  9. centos7配置fastdfs集群(5.09)

    centos7配置fastdfs集群(5.09) 2017年03月10日 23:34:26 带鱼兄 阅读数 1564    版权声明:本文为博主原创文章,转载请注明出处. https://blog.c ...

随机推荐

  1. hwclock设置时间的调用过程是怎样的?

    调用过程如下: hwclock -w -> xioctl(RTC_SET_TIME); -> rtc_dev_ioctl() -> rtc_set_time()

  2. libcurl在mac上编译

    wget http://ftp.gnu.org/gnu/m4/m4-1.4.17.tar.gz wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.t ...

  3. LC 375. Guess Number Higher or Lower II

    We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have to gues ...

  4. 简易的CRM系统案例之Struts2+JSP+MySQL版本

    对简易的CRM系统案例之Servlet+Jsp+MySQL版本改进 Servlet优化为Struts2 学习 <?xml version="1.0" encoding=&qu ...

  5. 阶段5 3.微服务项目【学成在线】_day16 Spring Security Oauth2_12-SpringSecurityOauth2研究-JWT研究-生成私钥和公钥

    3.6.3 JWT入门 Spring Security 提供对JWT的支持,本节我们使用Spring Security 提供的JwtHelper来创建JWT令牌,校验JWT令牌 等操作. 3.6.3. ...

  6. 一百四十六:CMS系统之帖子按照发布时间和评论数量排序

    按照不同选项进行排序 视图 @bp.route('/')def index(): board_id = request.args.get('board_id', type=int, default=N ...

  7. SpringCloud学习成长之路七 高可用配置中心

    上一篇文章讲述了一个服务如何从配置中心读取文件,配置中心如何从远程git读取配置文件,当服务实例很多时,都从配置中心读取文件,这时可以考虑将配置中心做成一个微服务,将其集群化,从而达到高可用,架构图如 ...

  8. HmacSHA256算法(C# 和 Java)

    Java代码: /** * HmacSHA256算法,返回的结果始终是32位 * @param key 加密的键,可以是任何数据 * @param content 待加密的内容 * @return 加 ...

  9. mysql使用truncate截断带有外键的表时报错--解决方案

    报错内容如:1701 - Cannot truncate a table referenced in a foreign key constraint 一.为什么要使用truncate 使用trunc ...

  10. php 字典升序从小到大方法

    /* 字典升序*/ function formatParaMap($paraMap) { $buff = ""; ksort($paraMap); foreach ($paraMa ...