Skip to main content

File 启用对象存储

服务器IP主机角色
192.168.10.16File Node01
192.168.10.17File Node02
  • File 各节点都需要提前安装 docker
  • 启用对象存储模式下,各 File 节点部署文件存储方式相同

部署文件存储

  1. 下载镜像

    docker pull registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-file:1.7.0
  2. 创建数据目录

    mkdir -p /data/file/volume/{cache,data,fetchtmp,multitmp,tmp}
  3. 创建配置文件存放目录

    mkdir -p /usr/local/MDPrivateDeployment/clusterMode/config
  4. 创建对接存储的 s3-config.json 文件 ,模板如下

    cat > /usr/local/MDPrivateDeployment/clusterMode/config/s3-config.json << EOF
    {
    "mode": 1,
    "accessKeyID": "${Key}",
    "secretAccessKey": "${Secret}",
    "bucketEndPoint": "oss-cn-beijing.aliyuncs.com",
    "bucketName": {
    "mdmedia": "oss-mdtest",
    "mdpic": "oss-mdtest",
    "mdpub": "oss-mdtest",
    "mdoc": "oss-mdtest"
    },
    "region": "oss-cn-beijing"
    }
    EOF
    • 目前明道云系统共使用 mdmediamdpicmdpubmdoc 4个 bucket,你可以在配置文件的 bucketName 字段中映射实际使用的 bucket
  5. 创建 file.yaml 文件

    cat > /usr/local/MDPrivateDeployment/clusterMode/file.yaml <<EOF
    version: '3'
    services:
    file:
    image: registry.cn-hangzhou.aliyuncs.com/mdpublic/mingdaoyun-file:1.7.0
    volumes:
    - /usr/share/zoneinfo/Etc/GMT-8:/etc/localtime
    - /data/file/volume:/data/storage
    - /usr/local/MDPrivateDeployment/clusterMode/config/s3-config.json:/usr/local/file/s3-config.json
    ports:
    - "9000:9000"
    environment:
    MINIO_ACCESS_KEY: storage
    MINIO_SECRET_KEY: 123456
    ENV_MINGDAO_PROTO: "http"
    ENV_MINGDAO_HOST: "mdy.domain.com"
    ENV_MINGDAO_PORT: "80"
    # Redis 主从模式
    ENV_FILE_CACHE: "redis://:123456@192.168.10.13:6379"
    # Redis 哨兵模式
    #ENV_REDIS_SENTINEL_ENDPOINTS: "192.168.10.13:26379,192.168.10.14:26379,192.168.10.15:26379"
    #ENV_REDIS_SENTINEL_MASTER: "mymaster"
    #ENV_REDIS_SENTINEL_PASSWORD: "password"
    ENV_FILECACHE_EXPIRE: "false"
    ENV_FILE_ID: "file1"
    command: ["./main", "server", "/data/storage/data"]
    EOF
    • 变量中指定的访问地址,在部署中注意替换为实际的系统主地址
    • redis 连接信息在实际部署中注意替换为实际的密码与IP
    • ENV_FILE_ID 每个实例的此变量值需要不同,如 file1file2
  6. 创建启动脚本

    mkdir -p /usr/local/MDPrivateDeployment/clusterMode
    cat > /usr/local/MDPrivateDeployment/start.sh <<EOF
    docker stack deploy -c /usr/local/MDPrivateDeployment/clusterMode/file.yaml file
    EOF
    chmod +x /usr/local/MDPrivateDeployment/start.sh
  7. 初始化 swarm

docker swarm init
  1. 启动服务

    bash /usr/local/MDPrivateDeployment/start.sh
  2. 加入开机自启动

    echo "bash /usr/local/MDPrivateDeployment/start.sh" >> /etc/rc.local
    chmod +x /etc/rc.local
  3. 初始化预制文件

    你可以使用各对象存储厂商所提供的工具,将 预制文件包中的内容(mdmediamdpicmdpubmdoc 4个文件夹下的数据)根据 bucketName 映射关系上传到云端对应的 bucket 中。

    示例:明道云私有部署阿里云OSS初始化说明