改造前
公司的FastDFS环境是采用Vmware+三个Centos7,改造前所有服务都是可用的,但是每次不小心关机以后启动的服务太多,太麻烦
一台Tracker服务器+两台Storage
改造原因
- 配置复杂,尽管写了个文档维护,还是配置比较多,麻烦
- 启动麻烦,配置Nginx+Tracker,两台Storage+Nginx
- 占用大量资源
改造
下载FastDFS镜像
DockerHub地址:
https://hub.docker.com/r/season/fastdfs/
下载FastDFS的镜像:
docker pull morunchang/fastdfs
完毕以后使用docker images
可查看镜像已经下载完毕
运行
运行Tracker服务
docker run -d --name tracker --net=host morunchang/fastdfs sh tracker.sh
运行Storage服务
docker run -d --name storage --net=host -e TRACKER_IP=<your tracker server address>:22122 -e GROUP_NAME=<group name> morunchang/fastdfs sh storage.sh
- 因为使用的网络模式是–net=host,所以此处的
<your tracker server address>
是你的宿主机的IP <group name>
是组名,表示Storage的组- 如果你想再增加一个Storage服务器,就再运行一下命令,换个
<group name>
使用docker images
查看
[root@tracker1 conf]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a106d032aac7 morunchang/fastdfs "sh storage.sh" 55 minutes ago Up 55 minutes storage
400b8c6a7d5c morunchang/fastdfs "sh tracker.sh" About an hour ago Up About an hour tracker
修改Nginx的配置,对上传的配置不拦截
Nginx其实可以不配置代理,也是可以上传成功文件的,但是不配置代理的话,我们就无法从浏览器看到上传的图片
Nginx配置
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;
}
测试
使用https://github.com/happyfish100/fastdfs
可以测试
默认的端口是80,fdfs_client.conf
配置如下:
connect_timeout = 2
network_timeout = 30
charset = UTF-8
http.tracker_http_port = 80
http.anti_steal_token = no
tracker_server = IP:22122
使用测试类测试,测试成功
此测试类是基于https://github.com/happyfish100/fastdfs
重新封装了的,并支持多线程的方式和心跳链接的方式
浏览器可以访问,证明Nginx代理成功
改造效果
只启动一个Centos即可。
因为Centos还是Vmware里面运行的,而我们的服务器是Windows Server2003上面,所以还是必须要有一个Linux的,由原来的启动三个Centos变成一个,效果显著,服务器资源也不会浪费!