我正在尝试设置一个冗余设置,包括两台服务器一切都是多余的:
- 数据库(MySQL 主-主主动/被动模式)
- 文件系统(分布式/复制)
- 我们的应用软件(使用分布式文件系统保持同步)
通常情况下,两个服务器中的一个会成为“主”服务器,另一个会复制其所有数据,并用于分配工作负载 (Gearman)。如果主服务器发生故障,则所有内容都会切换到“备用”服务器,该服务器将成为“活动”服务器并继续工作。
为了降低两台服务器彻底失败的风险,它们地理上分离在两个遥远的数据中心(同一国家/直接连接)。
我阅读了很多有关分布式文件系统的文章,但仍然不知道哪种解决方案适合仅两个节点......
对分布式文件系统的更多要求:
- 必须符合 POSIX 标准
- 必须复制一切(所有数据必须始终在两个服务器上可用)双向(所有数据可以在任何地方更改)
- 与将来应该复制的现有数据相关的当前统计数据:
- 关于30 GB 数据,3 年来不断发展
- 关于300 万个文件在 7,500 个目录中
- 平均文件大小约5-10 kb;有几个大文件,大小约为 10-50 MB
- 文件大多在一天中定期添加,处理后移动到另一个目录(类似于基于文件的邮件服务器)
- 每天一次,几千个文件(前一天收到)被归档到多个 TAR 档案中,并“永久”留在那里
- 添加文件时,数据首先写入以点“.”开头的临时文件,完成后再重命名。很少会更改现有文件。
- 系统应该能很好地处理意外的连接丢失、服务器重启等情况。
- 如果复制滞后 1-2 秒则没有问题,但它应该始终保持一致状态
- 如上所述,distr.filesys.将仅包含两个节点,但如果我可以添加,那将是一个巨大的优势额外的节点/服务器,我以后是否需要更多的计算能力
更新/更多详细信息:
- 我只需要“文件存储在两台服务器上,立即同步”意义上的冗余。访问文件时,我不需要文件系统因为本地硬盘发生故障而从另一台服务器读取数据。当本地硬盘发生故障时,整个服务器机器被视为“损坏”,因此应停止工作。
在这种情况下哪种文件系统合适?
答案1
答案2
尝试 DRBD。这不是文件系统,而是块设备。
从http://lwn.net/Articles/329543/
协议 A:一旦本地磁盘写入完成,并且数据包已放入对等节点的发送队列中,则写入被视为完成。如果发生节点故障,可能会发生数据丢失,因为要写入远程节点磁盘的数据可能仍在发送队列中。但是,故障转移节点上的数据是一致的,但不是最新的。这通常用于地理位置分离的节点。
...
单主:主指定给一个集群成员。由于只有一个集群成员操作数据,因此此模式适用于传统文件系统(如 ext3 或 XFS)。
也可以看看http://www.drbd.org/home/feature-list/更多细节。