美文网首页
单机上使用Docker测试go-fastdfs单集群

单机上使用Docker测试go-fastdfs单集群

作者: KN郑某某 | 来源:发表于2020-08-16 12:24 被阅读0次

    1. 安装并启动

    go-fastdfs为了高可用,限制了一个IP只能对应一个服务(能不能在一台机器部置多个服务端?);我们可以使用Docker安装的方式,同时指定容器的IP的方式,来启动多个 go-fastdfs 服务

    启动两个 go-fastdfs 服务,内网IP设置分别设置为 10.88.0.310.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.ziphttp://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中。

    相关文章

      网友评论

          本文标题:单机上使用Docker测试go-fastdfs单集群

          本文链接:https://www.haomeiwen.com/subject/yastjktx.html