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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值