介绍
FastDFS是一款开源的轻量级分布式文件系统纯C实现,支持Linux、FreeBSD等UNIX系统类google FS,不是通用的文件系统,只能通过专有API访问,目前提供了C、Java和PHP API为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性FastDFS可以看做是基于文件的key value pair存储系统,称作分布式文件存储服务更为合适.
tracker-server:
跟踪服务器, 主要做调度工作, 起负载均衡的作用。 在内存中记录集群中所有存储组和存储服务器的状态信息, 是客户端和数据服务器交互的枢纽。 相比GFS中的master更为精简, 不记录文件索引信息, 占用的内存量很少。
storage-server:
存储服务器( 又称:存储节点或数据服务器) , 文件和文件属性( metadata) 都保存到存储服务器上。 Storage server直接利用OS的文件系统调用管理文件。
group:
组, 也可称为卷。 同组内服务器上的文件是完全相同的 ,同一组内的storage server之间是对等的, 文件上传、 删除等操作可以在任意一台storage server上进行 。
meta data:
meta data:文件相关属性,键值对( Key Value Pair) 方式,如:width=1024,heigth=768 。
部署
由于应用全部迁移到kubernetes平台部署,之前用的fastdfs也不例外需要进行迁移,中间遇到的问题很多,后面会提到,总之fastDFS当前版本不是很适合在K8S平台部署,官方好像也很久没更新了。。。可以理解为不适合吧
本次部署的版本为6.0.7,镜像基于alpine制作。部署1个tacker和2个storage,部署2套。
先部署headlessservice,给后面的statefulset服务用.这里有一点,storage在注册到tracker的时候默认是使用的podIP而不会使用clusterIP,所以storage是支持使用域地址的,因而直接使用了无头的网络服务,通过域地址链接到tracker。docker上部署的时候一般使用–network=host,也是这个原因。
apiVersion: v1
kind: Service
metadata:
name: fdfs1
labels:
name: fdfs1
spec:
clusterIP: None
ports:
- name: tracker
port: 22122
targetPort: 22122
selector:
app: fdfs1
---
apiVersion: v1
kind: Service
metadata:
name: fdfs2
labels:
name: fdfs2
spec:
clusterIP: None
ports:
- name: tracker
port: 22122
targetPort: 22122
selector:
app: fdfs2
再创建nodePort给外网访问storage的文件时使用
apiVersion: v1
kind: Service
metadata:
name: fdfs1-ngx
labels:
app: fdfs1-ngx
spec:
type: NodePort
ports:
- name: group1
port: 8888
targetPor