基于NFS的分布式持久化
基于容器的微服务架构中,分布式持久化方案并没有一个默认的最好方案,这里使用NFS来作为容器持久化方案。
NFS服务需要在服务器及需要挂载的客户端上分别安装配置。
nfs-utils包含服务:
rpcbind : The rpcbind server converts RPC program numbers into universal addresses.
nfs-server : It enables the clients to access NFS shares.
nfs-lock / rpc-statd : NFS file locking. Implement file lock recovery when an NFS server crashes and reboots.
nfs-idmap : It translates user and group ids into names, and to translate user and group names
into ids
nfs相关配置文件:
/etc/exports : It is a main configuration file, controls which file systems are exported to remote hosts and specifies options.
/etc/fstab : This file is used to control what file systems including NFS directories are mounted when the system boots.
/etc/sysconfig/nfs : This file is used to control which ports the required RPC services run on.
/etc/hosts.allow, and /etc/hosts.deny : These files are called TCP wrappers, controls the access to NFS server. It is used by NFS to decide whether or not to accept a connection coming in from another IP address
NFS服务器安装:
Step1:安装及启动
yum install nfs-utils libnfsidmap systemctl enable rpcbind systemctl enable nfs-server systemctl start rpcbind systemctl start nfs-server systemctl start rpc-statd systemctl start nfs-idmapd
Step2:创建共享路径,并开放访问
mkdir /data1/share /data1/share echo '/data1/share 10.200.xx.xx/24(rw,sync,no_root_squash)' >>/etc/exports
其中,IP地址参数指定了需要挂载的client的IP,用掩码模式则指定IP段;
rw表示挂载路径允许读写权限;
sync表示同步模式,默认情况下是异步模式,由于是共享路径所以采用同步模式;
no_root_squash表示客户端能够以root权限操作挂载点文件系统。
Step3:更新挂载文件信息
exportfs -r
exportfs指令的各个参数说明如下:
exportfs -v : Displays a list of shares files and export options on a server
exportfs -a : Exports all directories listed in /etc/exports
exportfs -u : Unexport one or more directories
exportfs -r : Reexport all directories after modifying /etc/exports
Step4:配置服务器防火墙
firewall-cmd --permanent --zone public --add-service mountd firewall-cmd --permanent --zone public --add-service rpc-bind firewall-cmd --permanent --zone public --add-service nfs firewall-cmd --reload
NFS客户端安装:
Step1:安装及启动
yum -y install nfs-utils libnfsidmap systemctl enable rpcbind systemctl start rpcbind
Step2:确认NFS服务器挂载信息
showmount -e 10.200.xx.xx
如果返回信息如下:
Export list for 10.200.xx.xx: /data1/share
其中,IP段包含了该客户端的IP地址,则该客户端可以挂载到远程NFS服务器。
Step3:创建挂载URL并挂载NFS服务器
mkdir /mnt/share mount 10.200.xx.xx:/data1/share /mnt/share
挂载后,通过以下指令查看挂载信息:
mount | grep nfs
正常情况下能够看到挂载到的NFS服务器的挂载信息,也可以通过
df -hT
来查看挂载信息,类型为nfs4的挂载即是到NFS服务器的挂载点。
客户端挂载信息的持久化:
默认情况下,客户端的挂载信息将在服务器reboot后丢失,需要重新挂载。与硬盘挂载相同,可以通过在/etc/fstab中添加NFS挂载信息来持久化挂载:
echo '10.200.xx.xx:/data1/share/ /mnt/share nfs rw,sync,hard,intr 0 0' >>/etc/fstab
而解除挂载,可以直接在NFS客户端使用unmount进行:
unmount /mnt/share
基于NFS的分布式持久化的更多相关文章
- 基于ZooKeeper的分布式Session实现(转)
		
1. 认识ZooKeeper ZooKeeper—— “动物园管理员”.动物园里当然有好多的动物,游客可以根据动物园提供的向导图到不同的场馆观赏各种类型的动物,而不是像走在原始丛林里,心惊胆颤的被 ...
 - 谈谈分布式事务之二:基于DTC的分布式事务管理模型[下篇]
		
[续上篇] 当基于LTM或者KTM的事务提升到基于DTC的分布式事务后,DTC成为了本机所有事务型资源管理器的管理者:此外,当一个事务型操作超出了本机的范 围,出现了跨机器的调用后,本机的DTC需要于 ...
 - 基于ZooKeeper的分布式Session实现
		
1. 认识ZooKeeper ZooKeeper—— “动物园管理员”.动物园里当然有好多的动物,游客可以根据动物园提供的向导图到不同的场馆观赏各种类型的动物,而不是像走在原始丛林里,心惊胆颤的被 ...
 - 基于Redis的分布式锁真的安全吗?
		
说明: 我前段时间写了一篇用consul实现分布式锁,感觉理解的也不是很好,直到我看到了这2篇写分布式锁的讨论,真的是很佩服作者严谨的态度, 把这种分布式锁研究的这么透彻,作者这种技术态度真的值得我好 ...
 - 基于scrapy-redis的分布式爬虫
		
一.介绍 1.原生的scrapy框架 原生的scrapy框架是实现不了分布式的,其原因有: 1. 因为多台机器上部署的scrapy会各自拥有各自的调度器,这样就使得多台机器无法分配start_urls ...
 - python 全栈开发,Day140(RabbitMQ,基于scrapy-redis实现分布式爬虫)
		
一.RabbitMQ 队列 在生产者消费模型中,比如去餐馆吃饭的例子.生产者相当于厨师,队列相当于服务员,消费者就是你. 我们必须通过服务员,才能吃饭! 如果队列满了,队列会一直hold住.必须让消费 ...
 - 新浪微博基于MySQL的分布式数据库实践
		
提起微博,相信大家都是很了解的.但是有谁知道微博的数据库架构是怎样的呢?在今天举行的2011数据库技术大会上,新浪首席DBA杨海潮为我们详细解读了新浪微博的数据库架构——基于MySQL的分布式数据库实 ...
 - 基于 Scrapy-redis 的分布式爬虫详细设计
		
基于 Scrapy-redis 的分布式爬虫设计 目录 前言 安装 环境 Debian / Ubuntu / Deepin 下安装 Windows 下安装 基本使用 初始化项目 创建爬虫 运行爬虫 ...
 - 基于redis的分布式锁的分析与实践
		
 前言:在分布式环境中,我们经常使用锁来进行并发控制,锁可分为乐观锁和悲观锁,基于数据库版本戳的实现是乐观锁,基于redis或zookeeper的实现可认为是悲观锁了.乐观锁和悲观锁最根本的区别在于 ...
 
随机推荐
- Fragment配合RadioGroup实现点击切换布局
			
这里用了 compile 'com.jakewharton:butterknife:7.0.1' compile 'org.greenrobot:eventbus:3.0.0' MainActivit ...
 - Android进度条学习
			
自定义属性 <!-- roundColor 圆环的颜色 roundProgressColor 进度的颜色 roundWidth 圆环的宽度 textColor 文字颜色 textSize 文字大 ...
 - ionic 使用sqlite
			
昨天被ionic和sqlite折腾一天,怎么也无法实现读取,后来才发现,原来是codova中的sqliteplugin版本问题. 问题:Database location or iosDatabase ...
 - Git 技能总结
			
创建和使用git ssh key 首先设置git的user name和email: git config --global user.name "xxx" git config - ...
 - 常用API——日期型函数Date
			
上图 ·声明 var myDate = new Date(); //系统当前时间 var myDate = new Date(yyyy, mm, dd, hh, mm, ss); var myDate ...
 - 探索RegisterAllAreas
			
在MVC中注册Area时,我们一般会在相应的区域下定义一个继承与AreaRegistration的类,代码如下: public class AdminAreaRegistration : AreaRe ...
 - forward和redirect的区别(转)
			
Redirect Forward 不同的request 不同的对象,但是可以渠道上一个页面的内容 send后面的语句会继续执行,除非return Forward后面的语句不会继续发送给客户端 速度慢 ...
 - mysql 常用sql
			
1.查询数据库.表的情况 show engines; #数据库的存储引擎show create TABLE User_Base_Info;#显示create table的sql语句show table ...
 - 查看C#的dll所依赖.Net版本
			
Microsoft SDK自带的ildasm.exe工具, 是一个反编译工具, 可以查看编译好后的dll的文件 双击ildasm.exe, 把你要识别的.dll文件拖进来, 就会反编译了. 接着在il ...
 - java设计模式之原型模式
			
原型模式概念 该模式的思想就是将一个对象作为原型,对其进行复制.克隆,产生一个和原对象类似的新对象.java中复制通过clone()实现的.clone中涉及深.浅复制.深.浅复制的概念如下: ⑴浅复制 ...