单机上使用Docker测试go-fastdfs单集群
为了高可用,限制了一个IP只能对应一个服务(能不能在一台机器部置多个服务端?);我们可以使用安装的方式,同时指定容器的IP的方式,来启动多个 服务
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-fastdfs10.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浏览器打开 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下载没问题即可。
修改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中。