docker-compose、kubernetes安装部署fastdfs文件集群系统

fastdfs简介

一、docker部署fastdfs

fastdfs 的Dockerfile

FROM centos:7

LABEL maintainer "luhuiguo@gmail.com"

ENV FASTDFS_PATH=/opt/fdfs \
    FASTDFS_BASE_PATH=/var/fdfs \
    PORT= \
    GROUP_NAME= \
    TRACKER_SERVER=

  

#get all the dependences
RUN yum install -y git gcc make

#create the dirs to store the files downloaded from internet
RUN mkdir -p ${FASTDFS_PATH}/libfastcommon \
 && mkdir -p ${FASTDFS_PATH}/fastdfs \
 && mkdir ${FASTDFS_BASE_PATH}

#compile the libfastcommon
WORKDIR ${FASTDFS_PATH}/libfastcommon

RUN git clone --branch V1.0.36 --depth 1 https://github.com/happyfish100/libfastcommon.git ${FASTDFS_PATH}/libfastcommon \
 && ./make.sh \
 && ./make.sh install \
 && rm -rf ${FASTDFS_PATH}/libfastcommon

#compile the fastdfs
WORKDIR ${FASTDFS_PATH}/fastdfs

RUN git clone --branch V5.11 --depth 1 https://github.com/happyfish100/fastdfs.git ${FASTDFS_PATH}/fastdfs \
 && ./make.sh \
 && ./make.sh install \
 && rm -rf ${FASTDFS_PATH}/fastdfs


EXPOSE 22122 23000 8080 8888
VOLUME ["$FASTDFS_BASE_PATH", "/etc/fdfs"]   

COPY conf/*.* /etc/fdfs/

COPY start.sh /usr/bin/

#make the start.sh executable 
RUN chmod 777 /usr/bin/start.sh

ENTRYPOINT ["/usr/bin/start.sh"]
CMD ["tracker"]

1、创建docker-compose.yml

version: '3.0'
services:
  tracker:
    container_name: tracker
    image: luhuiguo/fastdfs
    command: tracker # 覆盖容器启动后默认执行的命令, 支持 shell 格式和 [] 格式
    network_mode: host # 指定网络模式 (等同于 docker run --net 的作用, 在使用 swarm 部署时将忽略该选项)
    #volumes:   # 不要映射出来,要不每次重启tracker都要清数据文件
      #- /var/fdfs/tracker:/var/fdfs    
  storage0:
    container_name: storage0
    image: luhuiguo/fastdfs
    command: storage
    network_mode: host  
    environment: # 设置环境变量, environment 的值可以覆盖 env_file 的值 (等同于 docker run --env 的作用)
       - TRACKER_SERVER=192.168.180.35:22122
       - GROUP_NAME=group1
    volumes: 
      - /var/fdfs/storage0:/var/fdfs
      - 
  storage4:
    container_name: storage4
    image: luhuiguo/fastdfs
    command: storage
    network_mode: host
    environment:
      - TRACKER_SERVER=192.168.180.35:22122
      - GROUP_NAME=group2
      - PORT=22222
     volumes:
       - /home/data/fastdfs/storage4:/var/fdfs        

注:docker exec -it tracker sed -i ‘s/192.168.0.197/192.168.180.35/g’ /etc/fdfs/client.conf #不用运行这个语句

2、查看配置

docker exec -it tracker fdfs_monitor /etc/fdfs/client.conf

3、验证

先进入docker容器
root@localhost:/# echo hello>a.txt

/root@localhost:/# /usr/bin/fdfs_test /etc/fdfs/client.conf upload a.txt
This is FastDFS client test program v5.11

Copyright (C) 2008, Happy Fish / YuQing

FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.csource.org/
for more detail.

[2019-11-13 09:16:54] DEBUG - base_path=/var/fdfs, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0

tracker_query_storage_store_list_without_group:
        server 1. group_name=, ip_addr=192.168.180.46, port=23000

group_name=group1, ip_addr=192.168.180.46, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M00/00/00/wKi0Ll3LygaACOgwAAAABncc3SA568.txt
source ip address: 192.168.180.46
file timestamp=2019-11-13 09:16:54
file size=6
file crc32=1998380320
example file url: http://192.168.180.46/group1/M00/00/00/wKi0Ll3LygaACOgwAAAABncc3SA568.txt
storage_upload_slave_by_filename
group_name=group1, remote_filename=M00/00/00/wKi0Ll3LygaACOgwAAAABncc3SA568_big.txt
source ip address: 192.168.180.46
file timestamp=2019-11-13 09:16:54
file size=6
file crc32=1998380320
example file url: http://192.168.180.46/group1/M00/00/00/wKi0Ll3LygaACOgwAAAABncc3SA568_big.txt

查看本地文件的位置
http://192.168.180.46/group1/M00/00/00/wKi0Ll3bji6AKxJiAAAABncc3SA697_big.txt

[root@localhost ~]# cd /var/fdfs/storage0/data/00/00/wKi0Ll3bji6AKxJiAAAABncc3SA697_big.txt
启动:
sudo service fdfs_trackerd start
sudo service fdfs_storaged start

重启:
sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
sudo /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

终止:
sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf stop
sudo /usr/bin/fdfs_storaged /etc/fdfs/storage.conf stop

二、kubernetes部署fastdfs

fastdfs-deploy.yaml


apiVersion: extensions/v1beta1
kind: Deployment
metadata:
    name: tracker-deploy
    namespace: paas-basic
    labels:
        name: tracker-deploy
spec:
    replicas: 1
    template:
        metadata:
            labels:
                app: tracker
        spec:
            nodeSelector:
              tracker: "true"
            terminationGracePeriodSeconds: 0
            containers:
            - name: tracker
              image: sinoeyes.io/library/fastdfs:1.0
              imagePullPolicy: Always
              ports:
              - containerPort: 22122
              - containerPort: 23000
              - containerPort: 8080
              - containerPort: 8888
              volumeMounts:
              - name: tracker-volume
                mountPath: /var/fdfs
              command: ["/usr/bin/start.sh","tracker"]
            volumes:
            - name: tracker-volume
              hostPath:
                path: /home/data/fastdfs/tracker

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
    name: storage0-deploy
    namespace: paas-basic
    labels:
        name: storage0-deploy
spec:
    replicas: 1
    template:
        metadata:
            labels:
                app: storage0
        spec:
            nodeSelector:
              storage: "true"
            terminationGracePeriodSeconds: 0
            containers:
            - name: storage0
              image: sinoeyes.io/library/fastdfs:1.0
              imagePullPolicy: Always
              ports:
              - containerPort: 22122
              - containerPort: 23000
              - containerPort: 8080
              - containerPort: 8888
              volumeMounts:
              - name: storage0-volume
                mountPath: /var/fdfs
              env:
              - name: TRACKER_SERVER
                value: 10.110.110.110:22122
              command: ["/usr/bin/start.sh","storage"]
              # 默认group1
              #- name: GROUP_NAME
              #  value: "group1"
            volumes:
            - name: storage0-volume
              hostPath:
                path: /home/data/fastdfs/storage0

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
    name: storage1-deploy
    namespace: paas-basic
    labels:
        name: storage1-deploy
spec:
    replicas: 1
    template:
        metadata:
            labels:
                app: storage1
        spec:
            nodeSelector: 
              storage: "storage1"
            terminationGracePeriodSeconds: 0  
            containers:                
            - name: storage1
              image: sinoeyes.io/library/fastdfs:1.0
              imagePullPolicy: Always
              ports:
              - containerPort: 22122
              - containerPort: 23000
              - containerPort: 8080
              - containerPort: 8888
              volumeMounts:
              - name: storage1-volume
                mountPath: /var/fdfs
              env:
              - name: TRACKER_SERVER
                value: tracker.paas-basic:22122
                #value: 10.110.110.110:22122
              - name: GROUP_NAME
                value: "group2"
              command: ["/usr/bin/start.sh","storage"]
            volumes:
            - name: storage1-volume
              hostPath:
                path: /home/data/fastdfs/storage1

fastdfs-service.yaml

apiVersion: v1
kind: Service
metadata:
    name: tracker
    labels:
        app: tracker
    namespace: paas-basic
spec:
    selector:
        app: tracker
    type: NodePort
    clusterIP: 10.110.110.110
    ports:
    - name: "22122"
      port: 22122
      targetPort: 22122
      protocol: TCP
    - name: "23000"
      port: 23000
      targetPort: 23000
      protocol: TCP
    - name: "8080"
      port: 8080
      targetPort: 8080
      protocol: TCP
    - name: "8888"
      port: 8888
      targetPort: 8888
      protocol: TCP

注意:
1、nodeSelector根据 label 指定pod起在哪台机器上,根据自身所需进行修改
2、注意集群中不同node网络是否相通
storage.conf配置文件
tracker.conf配置文件
luhuiguo/fastdfs镜像参考
season/fastdfs镜像参考
其他参考1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值