Copy of Kubernetes
1. 前言
最新Ubuntu参考:UbuntuTips10:Ubuntu挂载NFS
- 存储层
- Glusterfs
- NFS
- CephFS
数据存储层实现机器数据共享
- 这里以NFS为例,后续考虑搭建数据库集群,如MongoDB分片集群
2. 环境准备
确保主机Master与Node节点SSH连接
2.1 所有节点安装NFS
# 1. 安装NFS root@docker01:/home# sudo apt install nfs-kernel-server # 2. 查看NFS状态 root@docker03:~# sudo systemctl status nfs-server
2.2 主节点
docker01
- 创建共享目录
# NFS主节点,暴露文件夹 echo "/nfs/data/ *(insecure,rw,sync,no_subtree_check,no_root_squash)" > /etc/exports # 创建文件 root@docker01:/# mkdir -p /nfs/data # 开机启动,--now现在启动 root@docker01:/# systemctl enable rpcbind --now root@docker01:/# systemctl enable nfs-server --now # 配置生效 root@docker01:/# exportfs -r # 检查一下暴露的目录 root@docker01:/# exportfs /nfs/data <world>
对于出口的基本选择:
选项 | 描述 |
rw | 允许在NFS卷上进行读写请求。 |
ro | 仅允许读取NFS卷上的请求。 |
anongid=GID | 阅读以上内容(anonuid = UID) |
anonuid=UID | 这些选项显式设置匿名帐户的uid和gid。此选项主要对PC / NFS客户端有用,在PC / NFS客户端上,您可能希望所有请求看起来都来自一个用户。例如,请在下面的示例部分中考虑/ home / joe的导出条目,该条目将所有请求映射到uid 150。 |
no_all_squash | 关闭所有壁球。(默认) |
all_squash | 将所有uid和gid映射到匿名用户。对于NFS导出的公共FTP目录,新闻假脱机目录等有用。 |
no_root_squash | 关闭根挤压。此选项主要对无磁盘客户端有用。 |
root_squash | 将请求从uid / gid 0映射到匿名uid / gid。请注意,这不适用于可能同样敏感的任何其他uid或gid,例如用户bin或组人员。 |
no_subtree_check | 此选项禁用子树检查,这对安全性有轻微的影响,但在某些情况下可以提高可靠性。 |
subtree_check | 此选项启用子树检查。(默认) |
no_wdelay | 如果还设置了异步,则此选项无效。如果NFS服务器怀疑另一个相关的写请求可能正在进行中或可能很快到达,则通常会稍稍延迟向磁盘提交写请求。这样一来,就可以将多个写入请求提交到磁盘,从而提高性能。如果NFS服务器主要接收小的无关请求,则此行为实际上可能会降低性能,因此no_wdelay可用于将其关闭。 |
wdelay | 如果怀疑另一个相关的写请求可能正在进行中或可能很快到达,请稍稍延迟向磁盘提交写请求。(默认) |
insecure | 此选项接受所有端口。 |
secure | 此选项要求请求源自小于IPPORT_RESERVED(1024)的Internet端口。(默认) |
async | 此选项允许NFS服务器违反NFS协议并在对该请求进行的任何更改提交到稳定存储之前答复该请求。 |
sync | 仅在将更改提交到稳定存储后才回复请求。(默认) |
2.3 从节点
docker02、docker03、docker04
# 在Ubuntu20.04中安装客户端:nfs-common bob@ubuntu-20-04:~$ sudo apt install nfs-common
# 1. 检查哪个目录可以挂载,showmount -e 主节点地址, showmount -e 192.168.92.138 # 2. 给从节点每台机器创建目录,目录名无所谓,我这里保持一致 root@docker02:/home# mkdir -p /nfs/data # 3. 挂载 root@docker02:/home# mount -t nfs 192.168.92.138:/nfs/data /nfs/data # 4开机自动挂载,在/etc/fstab里添加 192.168.92.138:/nfs/data /nfs/datat nfs rw 0
来到主节点创建文件,写入文件
root@docker01:/nfs/data# ls root@docker01:/nfs/data# echo "Hello,Master_NFS" > a root@docker01:/nfs/data# ls a
在docker02等从节点查看,内容同步
root@docker02:/home# cd /nfs/data/ root@docker02:/nfs/data# ls a root@docker02:/nfs/data# cat a Hello,Master_NFS # 给a文件追加信息 root@docker02:/nfs/data# echo "Hello,Docker02_NFS" >> a root@docker02:/nfs/data# cat a Hello,Master_NFS Hello,Docker02_NFS
在docker01中也能同步
root@docker01:/nfs/data# cat a Hello,Master_NFS Hello,Docker02_NFS root@docker01:/nfs/data#