网络文件系统(英语:Network File System,缩写作 NFS)是一种分布式文件系统协议,最初由Sun Microsystems公司开发,并于1984年发布。其功能旨在允许客户端主机可以像访问本地存储一样通过网络访问服务器端文件。

NFS和其他许多协议一样,是基于开放网络运算远程过程调用(ONC RPC)协议之上的。它是一个开放、标准的RFC协议,任何人或组织都可以依据标准实现它。
参见维基百科

与之类似的还有很多CIFS、HDFS等,它们实现不同,但是解决的问题都差不多:提供一个共用的存储系统。大部分很多情况下,我们的分布式系统都是无状态的,但是也有很多有状态的应用(需要存储数据),例如dcos中的有状态应用gitlab、jenkins、数据库等,它们每次创建都会有一个新的沙盒来存储数据,之前的数据就会消失,这时候就需要一个统一的存储系统,就需要NFS等网络存储来解决。

安装服务端

  • 安装应用
$ sudo yum install nfs-utils
  • 配置目录
$ sudo mkdir /var/lib/nfs
$ sudo chmod 777 /var/lib/nfs
  • 编辑/etc/exports:配置能够访问共享资源的ip和目录
$ cat /etc/exports
/data 10.0.1.0/24(rw,async,no_subtree_check,no_root_squash,fsid=0)
# /data :共享的NFS目录
# 192.168.0.0/24:ip地址是192.168.0.250/24的nfs客户端可以访问共享目录;也可以指定多个客户端ip,如 1.1.1.1,*.topspeedsnail.com
# rw:指定nfs客户端可以读写共享目录

详细配置查看
修改了/etc/exports需要配置,使用$ sudo exportfs -a使其生效。

  • 启动服务并设置开机启动
$ sudo systemctl start rpcbind
$ sudo systemctl start nfs-server
# 设置开机启动
$ sudo systemctl enable rpcbind
$ sudo systemctl enable nfs-server

安装客户端

$ sudo yum install nfs-utils
  • 创建一个共享的映射目录
$ mkdir /mnt/data
  • 挂载目录
$ sudo mount -t nfs 192.168.0.250:/data /mnt/data

现在在目录/mnt/data 下新建一个文件:touch test.txt,回到192.168.0.250/data目录看看是否已经同步创建了test.txt。

很多小伙伴安装完成后,发现WebUI上的PUBLIC_IP不能获取:!!file
或者执行某些命令的时候提示:
file
或者访问接口的时候PUBLIC_IPV4是空的:
file
这时候可以检查一下是否安装的时候有把public-ip配置正确,在每一个节点上包括master节点检查:

cat /opt/mesosphere/bin/detect_ip_public 

#!/usr/bin/env bash
set -o nounset -o errexit
export PATH=/usr/sbin:/usr/bin:$PATH
echo $(ip addr show enp0s8 | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1)

如果配置的获取IP的方式不是这样的,可以修改成这样,注意最后一行的enp0s8 这个是网卡名称。可以执行命令:

ip addr show enp0s8 | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1

192.168.0.250

如果正确显示了IP就算是配置正确了。
这时候上面三个问题,就不会出现了。