使用LVS和Gluster-FS做FTP的后端,从而实现FTP的集群高可用,是一个合理的选择。
如何解决Gluster-FS的脑裂,是一个核心问题。
具体可以参考,知乎的这个帖子
https://www.zhihu.com/question/24821333
1.首先看看你要求数据在服务器1与服务器2之间是实时同步还是异步备份。
2.如果是异步备份,可采用
方案一,即rsync备份软件进行周期性自动备份(rsync如何使用就不做介绍了哈),rsync功能很强大,但服务器1与服务器2存在数据同步窗口期,那么出现故障时,手动将ftp地址配到服务器2上即可,但可能会 导致窗口期的数据丢失。如图所示:
缺点:存在窗口期,可能会导致部分数据丢失,且故障时需要手动切换。
3.如果是实时同步,那么可采用glusterfs开源分布式文件系统软件(其它可提供副本存储的软件均可以),glusterfs也是一款比较著名的开源软件,如何使用不做详解,下面简单描述两种方案。
方案二:
将服务器1和服务器2通过glusterfs创建副本数为2的存储卷,另选一台服务器3做为glusterfs的客户端,用户通过ftp方式连接到服务器3,上传文件,服务器3通过glusterfs私有协议将数据同步写入服务器1和服务器2。
优点:没有窗口期,允许一台数据存储服务器故障(服务器1或服务器2)而不影响ftp用户的正常访问,ftp用户感知不到数据存储服务器出现故障。且故障机恢复后glusterfs可自动修复数据。
缺点:显而易见,服务器3可能出现单点故障,且需增加一台服务器。
方案三:
将服务器1和服务器2通过glusterfs创建副本数为2的存储卷,通过LVS(LVS还可以均衡访问压力,如何配置请自行查阅,_)将服务器1和服务器2配置成相同的虚拟IP地址,用户ftp通过LVS虚拟ip访问数据存储服务器,数据存储服务器的glusterfs客户通均会同步本地与对端副本。故障时LVS会自动转发故障请求。入下图所示:、
缺点:部署复杂,不易维护, 且有可能造成数据脑裂(可通过硬件或软件方式尽量避免其脑裂,脑裂后需手动处理恢复) 还有其它方案,有兴趣的网友可私信我奥。