1. 安装并启动
go-fastdfs
为了高可用,限制了一个IP只能对应一个服务(能不能在一台机器部置多个服务端?);我们可以使用Docker
安装的方式,同时指定容器的IP的方式,来启动多个 go-fastdfs
服务
启动两个 go-fastdfs
服务,内网IP设置分别设置为 10.88.0.3
和 10.88.0.5
$ docker run --name fastdfs1 --network bridge --ip 10.88.0.3 -d -v /opt/fastdfs_data1:/data -p 10001:8080 -e GO_FASTDFS_DIR=/data sjqzhang/go-fastdfs
$ docker run --name fastdfs2 --network bridge --ip 10.88.0.5 -d -v /opt/fastdfs_data2:/data -p 10002:8080 -e GO_FASTDFS_DIR=/data sjqzhang/go-fastdfs
如果不需要外部访问,可以不映射端口
$ docker run --name fastdfs1 --network bridge --ip 10.88.0.3 -d -v /opt/fastdfs_data1:/data -e GO_FASTDFS_DIR=/data sjqzhang/go-fastdfs
$ docker run --name fastdfs2 --network bridge --ip 10.88.0.5 -d -v /opt/fastdfs_data2:/data -e GO_FASTDFS_DIR=/data sjqzhang/go-fastdfs
2. 修改配置并重启
10.88.0.3
修改配置,配置文件 /opt/fastdfs_data1/conf/cfg.json
,主要修改的参数:
"PeerID": "集群内唯一,请使用0-9的单字符,默认自动生成",
"peer_id": "3",
"本主机地址": "本机http地址,默认自动生成(注意端口必须与addr中的端口一致),必段为内网,自动生成不为内网请自行修改,下同",
"host": "http://10.88.0.3:8080",
"集群": "集群列表,注意为了高可用,IP必须不能是同一个,同一不会自动备份,且不能为127.0.0.1,且必须为内网IP,默认自动生成",
"peers": ["http://10.88.0.3:8080","http://10.88.0.5:8080"],
10.88.0.5
修改配置,配置文件 /opt/fastdfs_data2/conf/cfg.json
,主要修改的参数:
"PeerID": "集群内唯一,请使用0-9的单字符,默认自动生成",
"peer_id": "5",
"本主机地址": "本机http地址,默认自动生成(注意端口必须与addr中的端口一致),必段为内网,自动生成不为内网请自行修改,下同",
"host": "http://10.88.0.5:8080",
"集群": "集群列表,注意为了高可用,IP必须不能是同一个,同一不会自动备份,且不能为127.0.0.1,且必须为内网IP,默认自动生成",
"peers": ["http://10.88.0.3:8080","http://10.88.0.5:8080"],
重启
$ docker restart fastdfs1 fastdfs2
3. 本地测试
浏览器打开 http://10.88.0.3:8080
,选择文件上传,例如 demo-subpackages.b42a3adb.zip
上传返回结果:
{
"data": {
"domain": "http://10.88.0.3:8080",
"md5": "b42a3adbf89bd645d94a2d5834720843",
"mtime": 1597546859,
"path": "/group1/default/20200816/11/00/4/demo-subpackages.b42a3adb.zip",
"retcode": 0,
"retmsg": "",
"scene": "default",
"scenes": "default",
"size": 242389,
"src": "/group1/default/20200816/11/00/4/demo-subpackages.b42a3adb.zip",
"url": "http://10.88.0.3:8080/group1/default/20200816/11/00/4/demo-subpackages.b42a3adb.zip"
},
"message": "",
"status": "ok"
}
测试 http://10.88.0.3:8080/group1/default/20200816/11/00/4/demo-subpackages.b42a3adb.zip
和 http://10.88.0.5:8080/group1/default/20200816/11/00/4/demo-subpackages.b42a3adb.zip
下载没问题即可。
4. nginx 单集群配置
修改nginx配置,根据需要设置好server_name和其他配置,例如映射到域名 file.izqy.top
中
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/html;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log error;
sendfile on;
keepalive_timeout 65;
client_max_body_size 0;
proxy_redirect ~/big/upload/(.*) /big/upload/$1; #继点续传一定要设置(注意)
upstream go-fastdfs {
server 10.88.0.3:8080;
server 10.88.0.5:8080;
ip_hash; #notice:very important(注意)
}
server {
listen 80;
server_name localhost file.izqy.top;
location / {
proxy_set_header Host $host; #notice:very important(注意)
proxy_set_header X-Real-IP $remote_addr; #notice:very important(注意)
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #notice:very important(注意)
proxy_pass http://go-fastdfs;
}
}
}
重启nginx后,访问 http://file.izqy.top
测试上传了下载,检查上传的文件是否同时保存到 /opt/fastdfs_data1/files/default
和 /opt/fastdfs_data2/files/default
中。
网友评论