1. 程式人生 > >Cephfs & Ceph RBD 在k8s中的適用場景討論及資料庫效能壓測

Cephfs & Ceph RBD 在k8s中的適用場景討論及資料庫效能壓測

前言

測試發現cephfs的小檔案讀寫效能一般,且寫入延遲偏高,效能不甚滿意,但是滿足於日常應用環境的讀寫是沒有問題的,但是在面對資料庫的應用場景,是否能滿足效能要求呢?本篇主要結合kubernetes,針對資料庫應用場景,對cephfs 和 ceph rbd這兩種ceph儲存介面來進行效能對比測試.

在對比之前,再貼一下k8s對於cephfs和cephrbd的接入模式的支援:
在這裡插入圖片描述

Ceph RBD調優

在測試之前,首先對ceph rbd進行鍼對性的配置優化
ceph.conf:

[client]
rbd cache size = 268435456  #預設32M
rbd cache max dirty = 134217728 #最大未落盤髒資料大小,預設16M,此值小於cache size
rbd cache max dirty age = 5  #最大未落盤髒資料存放時間,預設1,單位s
rbd cache max dirty object = 64  #最大未落盤髒資料物件數量,預設object大小為4M,因此建議值為rbd cache max dirty / 4

#osd段增加執行緒數,預設為1,不要過大,防止執行緒鎖
[osd]
rbd op threads = 4

配置完成後逐個重啟ceph節點

測試工具

1.sysbench
專案地址:
akopytov/sysbench
sysbench是跨平臺的基準測試工具,使用預定義或自定義的lua指令碼靈活地進行效能測試,支援多執行緒,支援多種資料庫;主要包括以下幾種方面的效能:
cpu效能
磁碟io效能
排程程式效能
記憶體分配及傳輸速度
POSIX執行緒效能
資料庫效能(OLTP基準測試)

本文將進行資料庫 事務/非事務 只讀(查詢)/混合讀寫基準效能測試。

2.TPCC
TPC-C是專門針對聯機交易處理系統(OLTP系統)的規範
Tpcc-mysql由percona根據tpcc規範實現以訂單為中心的多表聯表操作效能測試,更貼切於業務場景.
工具內建業務場景模擬邏輯圖:


在這裡插入圖片描述
使用參考:
https://www.cnblogs.com/Aiapple/p/5705146.html

測試

為方便部署,全部使用容器測試,容器執行起來後本質即是一組程序,cpu/記憶體/磁碟 效能損耗可以說比虛擬化還小,因此可以排除效能損耗的干擾

配置規格:
記憶體: 64G
CPU: E5-2683 v4 *2
網絡卡: 10GE
儲存介質分為4種場景:
1.機械硬碟 raid5
2. 16 * ssd raid 5
3. cephfs(ssd)
4. ceph rbd(ssd)

測試方法可參考上方連結中的文章,這裡直接貼結果:
在這裡插入圖片描述

結果分析:

  1. ssd raid效能毫無疑問是最好的
  2. ceph rbd 資料庫qps/tps可達ssd raid的60%-70%,
  3. cephfs因為寫入延遲不穩定的原因,壓測過程中極小比例的操作響應時間非常漫長,導致qps/tps值整體表現不佳
  4. hdd測試得到的qps/tps值中規中矩,操作最低響應時間較其他三者要高,但最高響應時間值也不會很高.然而機械硬碟介質決定了隨著它的負載增高定址時間會隨之加長,效能將會呈線性下降.

適用場景討論

Cephfs:

優點:
1.讀取延遲低,I/O頻寬表現良好,尤其是block size較大一些的檔案
2.靈活度高,支援k8s的所有接入模式
缺點:
1.寫入延遲相對較高且延遲時間不穩定
適用場景:
適用於要求靈活度高(支援k8s多節點掛載特性),對I/O延遲不甚敏感的檔案讀寫操作,以及非海量的小檔案儲存支援.例如作為常用的應用/中介軟體掛載儲存後端.

Ceph RBD:

優點:
1.I/O頻寬表現良好
2.讀寫延遲都很低
3.支援映象快照,映象轉儲
缺點:
1.不支援多節點掛載
適用場景:
對I/O頻寬和延遲要求都較高,且無多個節點同時讀寫資料需求的應用,例如資料庫.

歡迎補充