Slide 1

Slide 1 text

で いろいろベンチとってみる Takuya Utsunomiya Storage Solution Architect, Red Hat K.K.

Slide 2

Slide 2 text

apiVersion: apiextentions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: 宇都宮 卓也 spec: group: レッドハット株式会社 role: ストレージソリューションアーキテクト born: 大阪 version: 38歳 favorites: technology: ストレージ hobby: [“野球好き”, “プロレス好き”,”将棋好き”] drink: [“ビール”, “ワイン”] @japan_rook Japan Rook https://rook.connpass.com/ 一部執筆 してます #japanrook 2

Slide 3

Slide 3 text

で 計測してみる

Slide 4

Slide 4 text

モチベーション ● IO測るの楽しいから ● バックエンドのストレージ直で使うのと Rook-Cephを挟むのとでどれくらい変わるかみたい ● Cephの構成変えることでどれくらい変わるのか見たい ● IO測るの楽しいから ○ ほんとだよ? なんでIO計測とかするの? 4

Slide 5

Slide 5 text

環境 ● k8s 1.16 on AWS ● 3 master + 3 worker ○ master : m5.xlarge (4vCPU, 16Gi RAM) ○ worker : m5.4xlarge (16vCPU, 64Gi RAM) ● Rook-Cephはworkerへ ● Rook 1.2.7, Ceph 14.2.8 ○ 最新の組み合わせ 5

Slide 6

Slide 6 text

遊びかた ● FIO 3.13 ○ Kubestoneのfioを使う ○ Fio Custom Resourceが便利 ● fioのPodから100GBのPVマウント(xfs)してIOかける ● 4K random read, 4K random writeでIOPSとlatencyをみる ● 他のFioのオプションは ----> ○ 割と適当に… 6 [global] direct=1 size=1G ioengine=libaio overwrite=1 runtime=120 ramp_time=10 startdelay=10 time_based [rw-64] rw=randwrite directory=/tmp bs=4k iodepth=64 [rr-64] rw=randread directory=/tmp bs=4k iodepth=64 ...

Slide 7

Slide 7 text

何を測るか ● 素のEBS(gp2) vs Rook-Ceph 3x replica RBD ● Cephクラスタのosd数 ○ 3 osd vs 12 osd ● レプリカ数 ○ 3x replica RBD vs 2x replica RBD 7

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

補足説明 ● イメージはこんな感じ ----> ● gp2は1TB未満だと3,000IOPSが天井 ● 事前の予想 「readは互角くらい」 「writeは純粋にEBSの方が3倍はやい」 9 node EBS node EBS node EBS osd osd osd RBD 3x replica EBS raw EBS(gp2)

Slide 10

Slide 10 text

結果 ● ReadはRook-Cephの方がIOPSもlatencyも断然はやい ○ 全osdからreadできるから3,000IOPS以上出せる ● WriteはEBSの方がはやい。けど3倍もいかない。 ○ 三重書きのオーバーヘッド ○ とは言え負荷が高くなって天井に当たると変わらない 10 結論 : 負荷が低い時のwriteは結構違う。 個人的にはreadが強いRook-Cephの方が役に立つ気がする。

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

補足説明 ● イメージはこんな感じ ----> ● 合計容量は同じになるようにする ○ 3 osd … 600Gi x 3 ○ 12 osd … 150Gi x 12 ● 事前の予想 「OSDの数が多い方がreadもwriteも圧倒的に はやいはず」 12 node EBS node EBS node EBS osd osd osd RBD node node node RBD 3x replica EBSEBSEBSEBS EBSEBSEBSEBS EBSEBSEBSEBS osd osd osd osd osd osd osd osd osd osd osd osd 3x replica

Slide 13

Slide 13 text

結果 ● やっぱりosdが多いほうがはやい ○ 負荷が高いほうが違いがはっきりする ● osdの容量を増やすよりScale-Outする方が断然おすすめ 13 結論 : なにはともあれosdが多い方が正義。

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

補足説明 ● イメージはこんな感じ ----> ● Cephは3x replicaが主流だけど2x replicaもで きる。もちろんnodeをまたいで複製する。 ● 利用可能容量は増えるけど、二重障害で data lossになるリスクがある。 ● 事前の予想 「readはどちらも同じくらい」 「writeは2x replicaの方がはやい」 15 node node node RBD 2x replica EBSEBSEBSEBS EBSEBSEBSEBS EBSEBSEBSEBS osd osd osd osd osd osd osd osd osd osd osd osd node node node RBD 3x replica EBSEBSEBSEBS EBSEBSEBSEBS EBSEBSEBSEBS osd osd osd osd osd osd osd osd osd osd osd osd

Slide 16

Slide 16 text

結果 ● Readは3xの方がちょっとはやい ○ 2xの方がprimary osd偏りやすい?運ゲー? ○ pg数を増やせば同じくらいになる? ● Writeは2xの方がはやい ○ さすがに二重書きの方がオーバーヘッド少ない 16 結論 : writeは結構変わる。 冗長性を取るか、write速い&少ない容量消費を取るか。

Slide 17

Slide 17 text

まとめ どうだった? 17 ● テストケースが少ないけれど大まかな傾向は見えた。 ● パブリッククラウドみたいにストレージに QoSをかけられている環境では Rook-Cephは限界突 破する手段になる。 ● とにかくosdはたくさんあるに越したことない。 ● Write intensiveな用途では2x replicaも一つの手。 ● 12osdにするとなかなか4x3で分散してくれなくて困った。 TopologySpreadConstraintsサ ポートが待たれる。 ● やっぱりIO測るのは楽しい。

Slide 18

Slide 18 text

18