使用Fusion-io最大化Linux群集的複制性能的技巧
當大多數人考慮設置群集時,它通常涉及兩個或更多服務器,以及SAN或其他類型的共享存儲。SAN的設置和維護通常非常昂貴且複雜。此外,它們在技術上代表了集群架構中潛在的單點故障(SPOF)。如今,越來越多的人開始使用Fusion-io這樣的公司,以及他們閃電般快速的ioDrives,來加速關鍵應用。 這些存儲設備位於服務器內(即不是“共享磁盤”)。 因此,它不能用作具有許多傳統群集解決方案的群集磁盤。幸運的是,有一些方法可以最大化使用Fusion-io進行Linux群集的複制性能。 允許您在不涉及共享存儲時形成故障轉移群集的解決方案 – 即“無共享”群集。
傳統集群 | “無共享”集群 |
在將數據複製作為群集配置的一部分時,充足的帶寬至關重要,這樣才能在網絡上複製數據,就像寫入磁盤一樣快。 以下是調優技巧,可讓您在涉及高速存儲時充分利用“無共享”群集配置:
網絡
- 使用10Gbps網卡:Fusion-io(或OCZ,LSI等其他類似產品)的基於閃存的存儲設備能夠以MB /秒或更高的百萬分之一(750)的速度寫入數據。 1Gbps網卡只能推動理論最大值~125 MB /秒,因此任何利用ioDrive潛力的人都可以比通過1 Gbps網絡連接推送更快地寫入數據。 為確保服務器之間有足夠的帶寬以促進實時數據複製,應始終使用10 Gbps NIC來承載複製流量
- 啟用巨型幀:假設您的網卡和交換機支持它,啟用巨型幀可以大大提高網絡吞吐量,同時減少CPU週期。 要啟用巨型幀,請執行以下配置(例如來自RedHat / CentOS / OEL linux服務器)
- ifconfig <interface_name> mtu 9000
- 編輯/ etc / sysconfig / network-scripts / ifcfg- <interface_name>文件並添加“MTU = 9000”,以便在重新啟動後更改仍然存在
- 要驗證端到端巨型幀操作,請運行以下命令:ping -s 8900 -M do <IP-of-other-server>
- 更改NIC的傳輸隊列長度:
- / sbin / ifconfig <interface_name> txqueuelen 10000
- 將其添加到/etc/rc.local以保留重新啟動後的設置
TCP / IP調整
- 更改NIC的netdev_max_backlog:
- 在/etc/sysctl.conf中設置“net.core.netdev_max_backlog = 100000”
- 已顯示可提高複制性能的其他TCP / IP調整:
- 注意:這些是示例值,有些可能需要根據您的硬件配置進行調整
- 編輯/etc/sysctl.conf並添加以下參數:
- net.core.rmem_default = 16777216
- net.core.wmem_default = 16777216
- net.core.rmem_max = 16777216
- net.core.wmem_max = 16777216
- net.ipv4.tcp_rmem = 4096 87380 16777216
- net.ipv4.tcp_wmem = 4096 65536 16777216
- net.ipv4.tcp_timestamps = 0
- net.ipv4.tcp_sack = 0
- net.core.optmem_max = 16777216
- net.ipv4.tcp_congestion_control = HTCP
調整
通常,您還需要對群集配置進行調整,這將根據您決定實施的群集和復制技術而有所不同。 在這個例子中,我使用的是SIOS Technologies的SteelEye Protection Suite for Linux(又名SPS,又名LifeKeeper)。 它允許用戶利用幾乎任何後端存儲類型形成故障轉移群集:光纖通道SAN,iSCSI,NAS,或者與本文最相關的本地磁盤,需要在群集節點之間實時同步/複製。 SPS for Linux包括集成的塊級數據複製功能,這使得在沒有共享存儲時很容易設置集群。
建議
為了最大化使用Fusion-io的Linux群集的複制性能,讓我們試試這個。SteelEye Protection Suite(SPS)for Linux配置建議:
- 分配位於Fusion-io驅動器上的小(~100 MB)磁盤分區以放置位圖文件。 在此分區上創建一個文件系統並將其掛載,例如,在/ bitmap:
- #mount | grep /位圖
- / dev / fioa1 on / bitmap type ext3(rw)
- 在創建鏡像之前,請在/ etc / default / LifeKeeper中調整以下參數
- 插入:LKDR_CHUNK_SIZE = 4096
- 默認值為64
- 編輯:LKDR_SPEED_LIMIT = 1500000
- (默認值為50000)
- LKDR_SPEED_LIMIT指定重新同步將採用的最大帶寬 – 應設置為足夠高以允許重新同步以盡可能最大的速度運行
- 編輯:LKDR_SPEED_LIMIT_MIN = 200000
- (默認值為20000)
- LKDR_SPEED_LIMIT_MIN指定當同時進行其他I / O時允許重新同步的速度 – 根據經驗,這應該設置為驅動器的最大寫入吞吐量的一半或更少,以避免挨餓重新同步發生時,正常的I / O活動
- 插入:LKDR_CHUNK_SIZE = 4096
從這裡開始,像往常一樣創建鏡像並配置群集。有興趣通過Fusion-io最大化Linux群集的複制性能,請參閱SIOS可以提供的其他內容。經LinuxClustering許可轉載