docker swarm 集群解析文件共享问题

问题描述

如:有三台机器 160 161 和189 (docker swarm 集群)
如果需要解析160机器上的虚拟机上文件,docker容器启动服务时,需要将宿主机器的解析目录挂载到容器解析目录上。当docker swarm 启动分配服务到161或者189子节点时,容器解析目录无法访问160主节点目录。

解决方案

1、搭建文件服务器,不管在服务在160或者161或者189上时,解析目录都指向文件服务器work 目录。服务接收和解析都指向同一个地方。
2、在manger 160机器上 搭建 NFS共享存储。不管在哪台服务上解析,都是在指向共享目录中。

实际操作

用docker使用nfs 做跨主机存储共享目录结构
构建容错应用程序时,可能需要配置同一服务的多个副本才能访问相同的文件。

  1. 安装nfs

    yum install nfs-utils rpcbind -y (yum安装nfs)
    mkdir -p /data/nfs/docker (指定一个目录)
    echo “/data/nfs *(rw,no_root_squash,sync)”>>/etc/exports (写入)
    exportfs -r
    systemctl start rpcbind nfs-server (启动)
    systemctl enable rpcbind nfs-server (开机启动)
    showmount -e localhost (查看)

  2. docker节点需要安装nfs 客户端 (在不同机器上执行)

    sudo apt install nfs-common
    showmount -e 192.168.1.160
    docker volume create --driver local --opt type=nfs --opt o=addr=192.168.1.160,rw --opt device=:/data/nfs volume-nfs
    

    docker volume inspect volume-nfs

  3. 编排docker-swarm 文件

	version: "3.4"
		services:
		  oms-bulk:
		    image: docker-image
		    deploy:
		      endpoint_mode: dnsrr
		      resources:
		        limits:
		          memory: "2048M"
		    volumes:
		      - /etc/localtime:/etc/localtime:ro
		      - "volume-nfs:/mnt"    (指向共享目录)
		     
		volumes:
		  volume-nfs:
		    driver: local
		    driver_opts:
		      type: "nfs"
		      o: "addr=192.168.1.160,rw"
		      device: ":/data/nfs/docker" 
		
		networks:
		  default:
		    external:
		      name: cnpl-oms
发布了3 篇原创文章 · 获赞 0 · 访问量 64
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览