我有一个网站正在跟踪平均每天 5000 万次点击,在接下来的 3 个月内,每天的点击量应该会超过 1 亿次。我们正在尝试使用 GlusterFS v 3.0.0(截至 2010 年 1 月 17 日的最新补丁)
目前,我们刚刚升级到具有 3 个物理主机和 6 个 Xen-Server 5.5u1 虚拟机(每台主机 2 个)的负载平衡器环境来服务网页流量。每台机器有 6 个 Raid-6 本地存储驱动器 (7200RPM-SATA)。我们来自的旧机器有 1 个镜像 SAS 10k 驱动器。
我们还设置了 GlusterFS,目前有 3 个砖块,每台主机一个,它为 6 个虚拟机提供客户端服务。在测试中,一切似乎都很好。然而,当我们投入生产时,似乎没有足够的 I/O 可用于服务流量,甚至超过 1500 万次点击。几周前,我们的旧服务器能够处理 20M 的最大流量。
对于这样的应用程序是否有任何推荐的配置,或者需要注意的事项在 gluster.org 上的文档中对于我们大小的站点并不明显?
没有写入缓存(?)的 6x7.2krpm 驱动器的 RAID-6 将具有糟糕的写入性能,如果您的应用程序有一个健康的组合,它可能会使磁盘陷入困境,从而真正影响读取性能。我的意思是实际上你正在查看从该数组中拆分出的 80/20 读/写中的 250 个随机 iops。如果您每秒执行数百个 http 请求,那么像 apache 访问日志这样微不足道的事情就会像 DoS 攻击一样陷入困境。
如果可以的话,将它们重做为raid10。它会花费你一些原始空间,但会对 i/o 性能产生巨大影响。而且,如果您可以在 RAID 卡上获得电池支持的写入缓存,那么它会产生很大的不同。
我特别不熟悉 glusterfs,但所有分布式文件系统都倾向于具有相同的基本问题,网络延迟 + 复杂锁定 = 性能差,尤其是在小文件上,尤其是在大量写入工作负载上。
缓慢的磁盘 i/o 和缓慢的文件系统,这种集群设计根本不适合工作负载。返回服务器或至少返回磁盘子系统是否为时已晚?如果这是一家高收入公司的主要平台,你真的应该聘请专业人士。
您将 GlusterFS 流量转移到什么介质上?如果是以太网,由于 TCP/IP 的开销,您的配置将受到严重限制。GlusterFS 并不是那里最有效的。它真正闪耀的地方在于 RDMA。您可以使用 Infiniband 或 10GigE 实现此目的。
我也有点不清楚为什么你决定在每个物理主机上放置 2 个虚拟主机,如果它们都在做同样的工作。为什么不直接在裸机上运行它们并避免开销?
您使用的是什么版本的 GlusterFs?GlusterFS 3.0.0 是一个主要版本,有许多改进,包括提高小文件性能。
GlusterFS 中有许多性能转换器可以针对各种工作负载进行调整。例如,为了提高读取性能,我们使用了预读翻译器,为了提高写入性能,我们使用了后写翻译器。io-cache 是另一个可用于缓存的性能转换器。
你的设置是什么类型的?您是使用复制还是分发或两者兼而有之?你的网络后端是什么?您是否对新旧服务器之间的网络/磁盘 IO 进行了基准测试以消除瓶颈?
如果您可以与我们共享您的卷文件,我们可以帮助您调整您的配置文件以获得最佳的工作负载性能。
仅供参考,我们提供 30 天免费试用支持订阅 [1],您可以在其中快速深入地回答您的问题。
干杯,萨奇
[1] http://www.gluster.com/products/trial.php
如果没有更深入地了解您的设置(例如,您的网站是静态的还是动态的?数据库事务是否发生在使用相同存储子系统的服务器上?)但是 RAID 6 通常对于写入性能来说是一个糟糕的选择,更不用说当您引入更多复杂性时通过光泽。您可能有两组写入条带转换正在进行,一组在 gluster 级别,一组在控制器级别。然后你有两个奇偶校验计算,这会减慢速度并导致 I/O 阻塞,除非你有一个大的写缓存和低 I/O 活动的时期。
我建议您切换到 RAID 10,并使用光纤通道或多个绑定的 GigE 链路来支持它。