解决两个组轮询存储文件问题

上篇文章中我们搭建了单机版的fastDFS,其中storage有两个group,分别为head和other,我们在测试的时候发现文件每次上传都会到head目录下,如果你希望other和head目录存文件的几率是一样的,那么我们需要修改tracker.conf文件

vi /etc/fdfs/tracker.conf

store_lookup=0

#选择组的方法上传文件

#0:轮转

# 1:指定组

# 2:负载平衡,选择最大的自由空间群上传文件

修改为0后重启tracker服务

/usr/local/fastDFS/FastDFS/tracker/fdfs_trackerd /etc/fdfs/tracker.conf restart

再多次上传文件,则发现head和other的机会是均等的了

轮询后

storage集群环境

实际上在正式的生产环境中,如果只有一台机器是storage,那么当这台机器出现故障 时会影响整个系统都不能存储和访问文件,所以需要再另一台机器上也有同样的storage,

两台机器组成集群环境。

1、环境准备

虚拟机环境

liunx服务器(三):192.168.31.130

2、在192.168.31.130上安装storage

按照上篇文章中安装对应storage及其相关依赖包

安装成功后启动head和other

/usr/local/fastDFS/FastDFS/storage/fdfs_storaged /etc/fdfs/storage.conf restart

/usr/local/fastDFS/FastDFS/storage/fdfs_storaged /etc/fdfs/storage_other.conf restart

查看/fdfs/head/data和/fdfs/other/data生成的目录

256个子目录

3、在192.168.31.130上安装nginx

按照上篇文章中按照nginx及其相关插件包

安装和配置完成后需要修改192.168.31.128中nginx配置文件

vi /usr/local/fastDFS/trackerNginx/conf/nginx.conf

替换之前的这里的信息

#设置head的服务器

upstream fdfs_head {

server 192.168.31.129:8080 weight=1 max_fails=2 fail_timeout=10s;

server 192.168.31.130:8080 weight=1 max_fails=2 fail_timeout=10s;

}

#设置other的服务器

upstream fdfs_other {

server 192.168.31.129:8080 weight=1 max_fails=2 fail_timeout=10s;

server 192.168.31.130:8080 weight=1 max_fails=2 fail_timeout=10s;

}

重启nginx

4、测试文件存储

此时在tracker中上传两次文件

/usr/local/fastDFS/FastDFS/client/fdfs_upload_file /etc/fdfs/client.conf /home/test.png

执行两次上面的命令,如下图所示

上传文件

在192.168.31.129中查看对应head和other目录下文件信息

OK

在192.168.31.130中查看对应head和other目录下文件信息

image.png

OK

清除缓存,停掉129上的storage

缓存清除

http://192.168.31.128:8888/purge/head/M00/00/00/wKgfgVrGEtyANsiaAAENlfmOar0820.JPG

缓存清除

停掉129上storage

ps -ef | grep storage

kill掉对应进程

停止成功

再次访问,任然成功

OK

tracker高可用问题

在实际生产环境中,tracker也是成对出现的,既可以保证tracker的高可用性,也可以起到分流、实现负载均衡。

环境准备

虚拟机环境

liunx服务器(四):192.168.31.131

首先按照上一篇文章中的tracker安装步骤安装好tracker和对应的nginx

1、修改client.conf配置文件

修改四台机器的client.conf配置文件

#之前的基础上修改tracker_server为两个即可

tracker_server=192.168.31.128:22122

tracker_server=192.168.31.131:22122

2、修改/etc/fdfs下面的storage中storage.conf和storage_other.conf

vi /etc/fdfs/storage.conf

#只需要修改下面tracker_server部分即可

tracker_server=192.168.31.128:22122

tracker_server=192.168.31.131:22122

vi /etc/fdfs/storage_other.conf

#只需要修改下面tracker_server部分即可

tracker_server=192.168.31.128:22122

tracker_server=192.168.31.131:22122

3、修改/etc/fdfs下面的mod_fastdfs.conf

vi /etc/fdfs/mod_fastdfs.conf

#只需要修改下面tracker_server部分即可

tracker_server=192.168.31.128:22122

tracker_server=192.168.31.131:22122

4、重启tracker和storage测试文件上传

我们分别重启四台机器上对于的tracker和storage及其nginx

确认都重启成功后,我们进行测试

在128上上传文件如下图所示,分别上传到storage的head和other中

128文件上传

然后在131上传文件如下图所示,分别上传到storage的head和other中

131文件上传

我们到129和130两台storage中都可以找到上面的四张图片

129上的文件

130上的文件

129和130中storage的other下面的文件此处不再截图展示了。

此时停止掉128上的tracker进程,我们会看到131中的日志信息,131的tracker成为了新的leader

131中tracker日志

此时再次上传文件,会发现128中任然可以成功,131中也可以成功,因为client.conf文件中配置了两个tracker服务器,由于我们停止了128中tracker,所以这里会报错

仍然OK

下篇文章中将会结合代码进行文件上传。

文件服务器高可用群集,fastDFS文件服务器(三):集群和高可用环境篇相关推荐

  1. nginx两台文件服务器集群,keepalived结合nginx状态检测脚本实现对web服务器集群的高可用...

    实验环境 两台CentOS-7.5虚拟机 web1:10.0.11.203 web2:10.0.11.204 VIP :10.0.11.210 web类型:nginx 客户端:自用笔记本(win10) ...

  2. kubeadm部署k8s_(Ansible)三分钟部署一套高可用/可扩展的kubeadm集群

    介绍 容器的兴起改变了我们开发,部署和维护软件的方式.容器使我们能够将构成应用程序的不同服务打包到单独的容器中,并在一组虚拟机和物理机上部署这些容器.这就产生了容器编排工具,可以自动执行基于容器的应用 ...

  3. 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群

    高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...

  4. 2.redis高可用-持久化-主从复制-哨兵-cluster集群概述与部署,内容依旧多看完直接通透!

    文章目录 一,Redis 高可用 1.持久化 2.主从复制 3.哨兵 4.集群(cluster) 二,Redis 持久化方式 1.持久化的功能 2.持久化的方式 三, RDB 持久化 1.触发条件 2 ...

  5. Redis创建高可用集群教程【Windows环境】

    模仿的过程中,加入自己的思考和理解,也会有进步和收获. 在这个互联网时代,在高并发和高流量可能随时爆发的情况下,单机版的系统或者单机版的应用已经无法生存,越来越多的应用开始支持集群,支持分布式部署了. ...

  6. 【带你重拾Redis】Redis 哨兵集群实现高可用

    Redis 哨兵集群实现高可用 哨兵的介绍 sentinel,中文名是哨兵.哨兵是 Redis 集群架构中非常重要的一个组件,主要有以下功能: 集群监控:负责监控 Redis master 和 sla ...

  7. ActiveMQ的集群与高可用

    ActiveMQ的集群与高可用 针对大量的消息吞吐量.对MQ可用性要求非常严格的场景.或者非常复杂的消息处理关系情况下,单个MQ实例通常已经无法满足我们的需要,这时候ActiveMQ的集群和高可用方案 ...

  8. 蚂蚁集团万级规模 k8s 集群 etcd 高可用建设之路

    蚂蚁集团运维着可能是全球最大的 k8s 集群:k8s 官方以 5k node 作为 k8s 规模化的顶峰,而蚂蚁集团事实上运维着规模达到 10k node 规模的 k8s 集群.一个形象的比喻就是,如 ...

  9. K8S集群Master高可用实践

    本文将在前文基础上介绍k8s集群的高可用实践,一般来讲,k8s集群高可用主要包含以下几个内容: 1.etcd集群高可用 2.集群dns服务高可用 3.kube-apiserver.kube-contr ...

最新文章

  1. 如何动态添加菜单/菜单项、子菜单、右键菜单
  2. 【面试题】python怎么合并两个字典
  3. 树莓派进阶之路 (037) - 设置树莓派3 B+的静态IP
  4. MATLAB自定义函数及局部变量
  5. Eclipse中看java源代码
  6. angularjs探秘五 举足轻重的scope
  7. 域名是如何被墙的_如何快速搭建属于自己的个性网站?
  8. js密码强度正则表达式_知道这20个前端正则表达式,能让你做项目时少写1000行甚至一万行
  9. 【牛客 - 370 I 】Rinne Loves Xor(按位前缀和,异或)
  10. python中itsdangerous模块
  11. android jni java调用c,Android与JNI(一) ---- Java调用C 静态调用
  12. WPF入门教程系列(二) 深入剖析WPF Binding的使用方法
  13. Typename和Class在声明模板时的区别
  14. java 排序 内存_Java内存模型(二)——重排序
  15. Boost C++ 智能指针
  16. HCNA 认证课程笔记(1)
  17. 数据库mysql表常见字段大小_常用数据库的字段类型及大小
  18. 杭电CTF 练习题RE WP
  19. 手机修图软件测试,10款好用的手机图片编辑器软件排行榜
  20. 颜色格式转换: FFmpeg源代码简单分析:libswscale的sws_getContext()

热门文章

  1. Cuboid特征提取算法
  2. 一起学nRF51xx 23 -  s130蓝牙API介绍
  3. Linux快速入门打开你的学习之道
  4. Swift 4正式发布,新功能概览
  5. JAVA大数_棋盘覆盖
  6. 项目常用工具类整理(五)--jar包整理
  7. 异步加载 防止图片混乱
  8. Silverlight同步(Synchro“.NET研究”nous)调用WCF服务
  9. 有些话不知道怎么说才好
  10. lwip之数据收发流程_1