随着公司的发展,对一些外围工具的使用也逐渐增多,其中就包括磁盘数据的高可用。最近在学习使用nfs,为了实现nfs的高可用,采用了NFS+keepalived+Sersync搭建nfs群集的方式实现k8s存储,但在了解相关资料并不断深入理解之后发现,当遇到大量的、频繁的文件更新时,Sersync和sync同步方案性能不够,所以最终尝试使用nfs+drbd+keepalived的方式实现,并进行总结和记录。
1基础介绍
在介绍具体实现步骤之前,首先了解一些用到的名词和两种同步方案。
1.1名称解释
1.k8s:是一个开源的、用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署、规划、更新和维护的一种机制。
2.nfs:网络文件系统,英文全称为Network File System(NFS),是由SUN公司研制的UNIX表示层协议(presentation layer protocol),能让使用者访问网络上别处的文件就像在使用自己的计算机一样。
3.drbd:一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。
4.keepalived:作用是检测服务器的状态,如果有一台web服务器宕机或工作出现故障,Keepalived能够检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后,Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉。
1.2同步方案
目前NFS数据同步的方式主要有两种,一种是使用Sersync实现主从同步nfs+keepalived+Sersync,另一种是借助drbd实现主从同步nfs+drbd+keepalived。
1.2.1Sersync
Sersync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的 “Rsync算法”使本地和远程两个主机之间的文件达到同步,此算法只传送两个文件中的不同部分,而不是每次都整份传送,因此速度很快。
Rsync可以通过rsh或ssh使用,也能以daemon模式运行,在以daemon方式运行时,Rsync server会打开一个873端口,等待客户端连接。连接时,Rsync server会检查口令是否相符,若通过口令查核,则可以进行文件传输。
第一次连通完成时,会把整份文件传输一次,以后则只需进行增量备份。
优点:配置比较简单,容易上手。
缺点