分布式文件系统FastDFS动态扩容
当用户量越来越大,则集群中某个group总会到达其极限,这时就得扩展集群的容量了。
FastDFS的扩容分为对group纵向扩容和横向扩容
纵向扩容 指在同一个group组中增加服务器,实现数据冗余,数据备份。同一个group中最大容量取决于最小的storage的存储容量。因此如果还想继续使用此group,则需要对此group对应的所有服务器挂载同样容量的磁盘,指定store_path1……,但这样做的话成本相当的高,不推荐。
横向扩容是通过集群实现,指新增一个group,增加整个FastDFS的存储空间。fastDFS的存储空间指的是所有group加起来的存储容量。
下面就横向扩容来做介绍
在 高可用高性能分布式文件系统FastDFS进阶keepalived+nginx对多tracker进行高可用热备 中已经讲了如何配置集群的2个tracker和4个storage,分group1和group2,下面增加一组group3,也由2台服务器组成 group3:36、37。
安装storage
按照 高可用高性能分布式文件系统FastDFS进阶keepalived+nginx对多tracker进行高可用热备 分别布署storage存储节点。
安装 nginx和fastdfs-nginx-module 到 storage存储节36、37。
将/etc/fdfs/storage.conf里面的 group_name=group3 其它内容与其它storage存储节一样。
然后开启这两个storage,并加入开机启动:
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf chkconfig fdfs_storaged on
查看集群状态,会显示整体内容:
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
安装配置nginx
/opt/nginx/conf/nginx.conf 文件内容与其它结点一样。
但修改/etc/fdfs/mod_fastdfs.conf
base_path=/data/fastdfs/storage
tracker_server=192.168.80.30:22122
tracker_server=192.168.80.31:22122
storage_server_port=23000
group_name=group3 # 第一组storage的组名
url_have_group_name=true
store_path0=/data/fastdfs/storage
group_count=2
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/data/fastdfs/storage
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/data/fastdfs/storage
[group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/data/fastdfs/storage
注意:
将存储结点32到37的/etc/fdfs/mod_fastdfs.conf里面都加上
[group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/data/fastdfs/storage
启动Nginx,并加和自启动
shell> /opt/nginx/sbin/nginx
上传测试文件到group3上。
浏览器访问测试时上传的文件,应该都能正常访问。 http://192.168.80.36:8888/group3/M00/00/00/CgNXGVpddOKANpzbAABdrZgsqUU369_big.jpg http://192.168.80.37:8888/group3/M00/00/00/CgNXGVpddOKANpzbAABdrZgsqUU369_big.jpg
配置Nginx,设置tracker负载均衡以及缓存
vi /opt/nginx/conf/nginx.conf
添加以下内容
#设置 group3 的服务器
upstream fdfs_group3 {
server 192.168.80.36:8888 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.80.37:8888 weight=1 max_fails=2 fail_timeout=30s;
}
和
location /group3/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_group3;
expires 30d;
}
再重启nginx就行了。
从上面来看,给集群增加group,storage的安装配置很简单,主要是 nginx和fastdfs-nginx-module的配置比较麻烦,需要手动添加组,因此要注意以上要注意的地方不要漏掉了。
- Leetcode 287. Find the Duplicate Number
- Leetcode 284. Peeking Iterator
- Leetcode 283. Move Zeroes
- Leetcode 282. Expression Add Operators
- Leetcode 279. Perfect Squares
- Leetcode 278. First Bad Version
- Leetcode 275. H-Index II
- Leetcode 274. H-Index
- 值得 .NET 开发者了解的15个特性
- Angular和Vue.js 深度对比
- 前端开发者常用的9个JavaScript图表库
- 1000多个项目中的十大JavaScript错误以及如何避免
- SoapUI实践:自动化测试、压力测试、持续集成
- 如何把kotlin+spring boot开发的项目部署在tomcat上
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法