Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Cephを用いたwordpressの構築[LT版]

11,180 views

Published on

Heartbeatsさんとの懇親会の余興で、LTを発表させていただいた時の資料です。

公開ブログ: https://developer.aiming-inc.com/misc/enjoy-lt_with_heartbeats_170616/

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Cephを用いたwordpressの構築[LT版]

  1. 1. Cephを用いたwordpress の構築[LT版] Author = Aiming.infra_members {‘小熊’, ’趙’}
  2. 2. 最初におことわり
  3. 3. LT題材をミスりまし た!!!!
  4. 4. Ceph、 全然lightening talk に向かない件 Clusterは、ちょっと内容が重かった
  5. 5. 本日は勢いで乗り切 る気です。
  6. 6. Ceph概要 ● 様々な形態が出来る ○ 分散ストレージ ○ 分散オブジェクトストア ● RADOSがベースとなっている ● OSS ○ Redhatが買収していますが、ベンダーロックは 今のところありません
  7. 7. 特徴 ● 強み ○ 対障害性 ■ SPOFが無い ○ スケーラビリティ ■ エクサバイトサイズも対応可能 ● 弱み ○ 普通のストレージよりもI/Oが遅い
  8. 8. Cephのアーキテクチャー
  9. 9. RBD(RADOS Block Device)概要 ● RADOS上のオブジェクトをブロックデバイスとして 保存 ○ 一つのHostに対して、ブロックデバイスをマウ ントして使う (1:1) ■ 複数台に対してマウントしても、同期はされ ない
  10. 10. そこで
  11. 11. CephFS概要 ● 分散ファイルシステム ○ RADOS上のオブジェクトとして保存 ■ メタデータ領域 ■ データ領域
  12. 12. CephFS概要 ● CephFSを使うと何がうれしいのか ○ 普通のBlock DeviceをMountするように使える
  13. 13. Ceph用語 ● MONとは ○ クラスタ監視デーモン ● OSDとは ○ データを操作するデーモン ● MDSとは ○ メタデータを管理するデーモン
  14. 14. Gluster Storage (RHGS) との違い http://ascii.jp/elem/000/001/198/1198272/
  15. 15. 仕様: どのようにデータが保存されるのか 1. データを作成 2. CRUSH algorithmで配置先とレプリケーション先の 決定 3. MDSがJournalにデータを書き込み 4. OSDがデータをRADOSに書き込み 5. レプリケーションとして他のOSDにデータを転送
  16. 16. 仕様: CRUSH algorithmとは ● ファイル名のハッシュ値から、プレースメントグ ループ(PG)を決める ● レプリケーション先の決定 ● スケーラビリティと耐障害性まで考慮して、配置先 を決めている ○ それにも関わらず短時間で計算できる
  17. 17. 仕様: CRUSH algorithmとは http://www.school.ctc-g.co.jp/columns/nakai/nakai44.html
  18. 18. 仕様: Journal ● 書き込みの整合性を保証するため ● 小さな書き込みを高速にするためのもの ● MDSデーモンは、そのオペレーションをJournalに 書き込む ● OSDデータのリペアにも使う I/O スケジューラは、deadlineを選択した方がいい。 (CentOS7の非SATA以外は注意)
  19. 19. 仕様: 並列同時書き込みへの対応と保証 Split brain対応の話。 Cluster nodeに対して、 Fileへの同時アクセスを制限することなく parallelでfileを書き込める仕様
  20. 20. 仕様: 並列同時書き込みへの対応と保証 ● OSDのthroughput について ○ OSDが増えてもthroughputが下がらないように設計されて いる ○ 例) パワードバンドがある ■ 27 - 29 OSDで最高値740 MB/s をマーク
  21. 21. 仕様: 並列同時書き込みへの対応と保証 NFSなどと違いCacheを持つので、それらよりも Cluster内の同期については複雑 (e.g, MDS cache, OSD pool cache) ● POSIX準拠 ○ 対応できないことは、いくつかあります ○ Cephの方針としては可能な限り準拠 http://docs.ceph.com/docs/master/cephfs/posix/
  22. 22. 仕様: 階層化キャッシュ機構(Pool data) キャッシュ層とバッキングストレージ層 https://www.slideshare.net/Yuryu/ceph-36503772
  23. 23. 仕様: 階層化キャッシュ機構 ● 現状、Ceph Object Gatewayで用いる以外にメリッ トなし(AWSのS3など ● デメリットが多い ○ 複雑性、ベンチマーク取得の難しさ、速度がさ がる https://www.slideshare.net/Yuryu/ceph-36503772
  24. 24. 仕様: MDSキャッシュ機構 ● デフォルトでON(100,000)(inodes ● mds_cache_sizeを増やすことで性能をあげること ができるが、あげすぎるとシステムが壊れること があるので要注意 https://www.slideshare.net/Yuryu/ceph-36503772
  25. 25. WordpressでストレージにCephを用いた理由 ● lsyncd + rsync の同期にしなかったのは? ○ 利用実績はあったけど、以下が問題点だった ■ 同期が常に保証されているわけではない ■ 同期が遅い ■ スケラービリティが低い
  26. 26. WordpressでストレージにCephを用いた理由 ● スケーラビリティが高まる ● 高可用性
  27. 27. WordpressでストレージにCephを用いた理由 ● S3, Cloud storageを使わない理由 ○ Pluginに依存されたくない ■ WPで使うにはPluginが必要 ○ Vendor lock out ○ IP制限ができるようにしたい ■ 単純なオブジェクトストアではできない
  28. 28. WordpressでストレージにCephを用いた理由 ● Ceph, CephFS ○ OpenStackで実績ある ○ CephFS面白そう+興味 ある!
  29. 29. 今回使用したもの ● Cephサーバ(3台構成) ○ 各サーバにMON,OSD,MDS ● wordpressサーバ1台
  30. 30. 検証サーバスペック (本番は異なる) ● CPU ○ 共有CPU1コア ● Mem ○ 1.7GB ● Disk ○ 50GB(HDD)
  31. 31. 構築環境
  32. 32. 構築環境 MiddlewareとPHPのみ置いている = ステート レスにしてスケーラビリティを高めている。 サービスが状態を持っていない
  33. 33. 構築環境 MiddlewareとPHPのみ置いている = ステート レスにしてスケーラビリティを高めている。 サービスが状態を持っていない WP全てがステートフルになることがあるので分 離。 たとえばWP updateやwp-admin操作によるファイ ル作成で非ClusterだとClientによって状態に差異 が出てしまう時があるため
  34. 34. 構築環境(おまけ:周辺状況) GCP HTTP LB CloudSQL g2 php7, nginx, MariaDB Client php7, nginx, MariaDB Client php7, nginx, MariaDB Client MON OSD MDS MON OSD MDS MON OSD MDS Ceph (WP DocRoot) ステートレス ステートフル
  35. 35. 速度性能 MDS はClusterが増えれば速度が落ちる
  36. 36. 速度性能検証 ● ddコマンドで2Gのファイルを作成 ○ HDD(通常のストレージ ■ (2.0 GB) copied,46.827s, 42.7MB/s ○ Cephのストレージ ■ (2.0 GB) copied,93.9359s, 21.3MB/s
  37. 37. 対障害検証 ● MON障害 ● OSDの障害 ● PG障害 ● Journal障害 ● MDSの障害 ● インスタンスの障害
  38. 38. MON障害 ● 特定のノードのMONがこわれても、他のMONに自 動的に切り替わる ● 対処法 ○ 壊れたMONを復旧させる場合は、MON再起 動、もしくはMONを入れ替える
  39. 39. OSD障害 ● 特定のノードのOSDが動かなくなると、そのOSD を排除する ● レプリケーションをしているのでデータは無事 ● 対処法 ○ OSDデーモンの再起動、もしくは入れ替える
  40. 40. PG障害 ● 特定のOSDが書き込むデータが壊れた場合 ○ Ceph自身はすぐにデータが壊れたことに気づ かない(scrubが走ると認識する ● 対処法 ○ journalが正常であれば、pgを直すコマンド (ceph repair <pgnum>)で直す
  41. 41. Jounal障害 ● 特定サーバのJournalが壊れた時 ○ 対処法 1. OSDの入れ替え 2. 自動でJournal再作成
  42. 42. MDS障害 ● 特定ノードのMDSが壊れると、他のMDSデーモン へ自動的に切り替わる ● 対処法 ○ MDSの再起動、もしくはMDSデーモンを入れ替 える
  43. 43. サーバの障害 ● サーバの障害 ○ 特定のサーバが起動しない、もしくは複数の デーモンに障害 ● 対処法 ○ クラスタマップ上から、動いていないデーモンを 削除、インスタンスを再構築
  44. 44. Cephのストレージ拡張 ● ノードにOSDを追加する(公式推奨 ● 既存のディスクを増設する ● 新規サーバを構築して、ディスクを拡張してからク ラスタに組み込む
  45. 45. まとめ ● CephにはSingle Point of Failureはない ● 速度 < HA + スケーラビリティ だが、速度もなるべく落とさない工夫がされている ● コストは抑え気味にできる ○ スモールスタートができる + 複数タイトル相乗り可能 ● 安定している(現在一部タイトルで運用中) ● ベンダーロックされない
  46. 46. まとめ なんとかなる そんな気がする
  47. 47. ご静聴ありがとうございました
  48. 48. 参考にしたサイトと文献 ● 論文 ○ http://www.dphu.org/uploads/attachements/books/books_102_0.pdf ○ https://www.usenix.org/legacy/event/lasco08/tech/full_papers/stender/stender.pdf ● http://docs.ceph.com/docs/ ○ http://docs.ceph.com/docs/master/cephfs/posix/ ● https://www.slideshare.net/XiaoxiChen3/cephfs-jewel-mds-performance-benchmark ● https://japan.zdnet.com/article/35072972/ ○ https://github.com/kubernetes/kubernetes/tree/master/examples/volumes/cephfs ● https://www.slideshare.net/JohnSpray1/cephfs-update-february-2016 ● https://access.redhat.com/obsolete-documentation/ja/red-hat-openstack-platform/8/paged/red-hat-ceph-storage-for-the-over cloud/chapter-3-integrating-an-existing-ceph-storage-cluster-in-an-overcloud ● http://www.school.ctc-g.co.jp/columns/nakai/nakai44.html ● https://access.redhat.com/documentation/en-US/Red_Hat_Ceph_Storage/1.2.3/pdf/Installation_Guide_for_CentOS_x86_64/Red_Hat_ Ceph_Storage-1.2.3-Installation_Guide_for_CentOS_x86_64-en-US.pdf ● http://ceph.com/geen-categorie/ceph-manually-repair-object/ ● https://www.sebastien-han.fr/blog/2014/11/27/ceph-recover-osds-after-ssd-journal-failure/ ● https://www.school.ctc-g.co.jp/columns/nakai/nakai44.html ● https://japan.zdnet.com/article/35072972/

×