Ceph 2019年2月 Nautilusリリース直前! 最新動向まとめ

# はじめに
2019年2月に、Ceph の時期バージョン(version 14.x; リリース名: Nautilus)がリリースされる予定です。本ドキュメントではリリースに先駆け、Ceph Day Berlin にて講演されていた Ceph の最新情報についてまとめます。

---

# 参考資料
- What's New In Ceph
  - https://www.slideshare.net/Inktank_Ceph/ceph-day-berlin-whats-new-in-ceph
  - 2018年11月 Ceph Day Berlin
  - Sage Weil氏 講演資料

---

# 最近の、Ceph の大きな取り組み
- Management and Usability
- Container platforms
- Performance
- Multi- and hybrid cloud

---

# Management and Usability (0)
- Balancer Plugin (Luminous-)
  - http://docs.ceph.com/docs/mimic/mgr/balancer/
  - OSD毎の Disk 利用率を自動的に最適化し、偏りを小さくする
    - crush-compat (<Luminous)
        - Luminous 未満の OSD で利用可能
        - 新たに導入されたパラメタを自動調整することで、PG配置の最適化を実現
    - upmap (Luminous-)
        - 新たに導入された upmap の機能を用いて、PGのマッピングを個別に移動することで最適化を実現
        - weight-set と比べて、きめ細かい制御ができる反面、従来のバージョンとは互換性がないため混在できない

---

# Management and Usability (1)
- Configuration の簡素化
  - HDD /SSD 等に合わせた tuning の自動化 (Luminous-)
  - Memory size に合わせた tuning の自動化
  - pg_num tuning の自動化
     - pg_num を小さくすることもできるようになる
- Telemetry plugin
  - http://docs.ceph.com/docs/master/mgr/telemetry/
  - Cluster の Anonymous data を Ceph project に自動送信
  - Opt-in で自動的に電話通知する仕掛けも用意される模様

---

# Management and Usability (2)
- Crash plugin
  - http://docs.ceph.com/docs/master/mgr/crash/
  - Crash dump を一元的に管理できる
- Insights plugin
  - http://docs.ceph.com/docs/master/mgr/insights/
  - 色々 CLI を叩かなくても、このコマンド1発で cluster の健全性に関する情報を収集できる
- Diskprediction plugin
  - http://docs.ceph.com/docs/master/mgr/diskprediction/
  - https://www.prophetstor.com/jp/disk-health-prediction-for-ceph-mimic/
  - https://www.slideshare.net/Inktank_Ceph/ceph-day-berlin-disk-health-prediction-and-resource-allocation-for-ceph-by-using-machine-learning
  - Disk が故障する前に、予防交換できることを目指している
  - 将来的には、prediction に基づき自動evacuationが実行できるようになる模様
  - Local predictor だと 70% accuracy と低いため、production利用だと ProphetStor のクラウドサービスと接続する Cloud predictor を使う必要があるかもしれない

---

# Management and Usability (3.1)
- Dashboard plugin
  - http://docs.ceph.com/docs/master/mgr/dashboard/
  - Ceph の運用に必須の metric が、出力できるようになった (Mimic)
  - 殆どの metric が見られるようになる (Nautilus)
  - Orchestrator Plugin[後述] の操作が出来るようになる (Nautilus-)
  - Nautilus の UI はこちらを参照
    - https://www.slideshare.net/LenzGr/managing-and-monitoring-ceph-ceph-day-berlin-20181112/#8

---

# Management and Usability (3.2)
<img width="477" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/96389/13a84353-7dfe-4102-673d-808f585cbbe3.png">
<img width="543" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/96389/1845a45a-52d8-db3b-e480-5d8c9c674e18.png">
<img width="458" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/96389/1ba997de-4623-282a-bf3d-c813603ceda4.png">
<img width="634" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/96389/27ac6197-7e93-535c-a5c7-582cd01b1240.png">

---

# Management and Usability (4)
- Orchestrator Sandwich の概要

<img width="615" alt="image.png" src="https://qiita-image-store.s3.amazonaws.com/0/96389/174a805d-84d7-b36d-e8fc-12c456d85383.png">

---

# Management and Usability (5)
- 従来の Deploy
  - ceph-ansible, kolla-ansible, juju 等、それぞれが独自の Workflow を用意していた
- これからの Deploy (Nautilus-)
  - http://docs.ceph.com/docs/master/mgr/orchestrator_cli/
  - Ceph が運用管理の抽象レイヤを提供
  - Orchestrator Plugin の sub-plugin として ceph-ansible, Rook, DeepSea プラグイン等を用意することで、様々な Workflow に対応
  - オペレータは Orchestrator 実装を気にせず、統一した User Interface で Ceph を管理できるようになる
  - とても興味深いアプローチ; 他の分散システムにも応用すると面白そう

---

# Management and Usability (6)
- RADOS
  - OSD memory stability
  - PG log length の制限
  - OSD cache消費量を適切に制限
- MSGR2
  - Encryption, IPv6, Kerberos authentication
- RBD
  - Async mirroring 改善 (Point-in-Time DR with failover/failback, etc.)
  - Security namespace
  - RADOS pool跨ぎの live image migration

---

# Management and Usability (7)
- Cephfs
  - Cephfs-shell: stable (Luminous-)
  - Multi-MDS: stable (Mimic-)
  - Snapshot: stable (Mimic-)
- RGW
  - パフォーマンスの向上
  - 認証機能の追加(STS, OPA, Kerberos/AD)
  - Pub / Sub API
     - http://docs.ceph.com/docs/master/radosgw/pubsub-module/
  - Public Cloud との同期 (Mimic-)
  - Tiering

---

# Container platform
- Dockerhub にて base image を提供
  - Rook, ceph-ansible が利用している
- Rook
  - https://rook.io
  - Kubernetes 向けの Operator (Ceph の他、 Cassandra 等にも対応)
  - コミュニティの活動が活発で、急ピッチで機能追加や安定化が進んでいる

---

# Performance (0)
- Ceph Performance for NVMe
  - https://www.flashmemorysummit.com/English/Collaterals/Proceedings/2018/20180808_SOFT-202-1_Liu.pdf
    - Flush Memory Summit 2018
  - Latency, IOPS 性能が SSD 等により、大幅に引き上げられたため、Software が Bottle Neck になってきた
    - HDD
      - Latency >2 ms
      - IOPS <500
    - SATA NAND SSD
      - Latency < 100 us
      - IOPS > 25,000
    - NVMe NAND SSD
      - atency < 100 us
      - IOPS > 400,000

---

# Performance (1)
- 今後、Storage Software は、flash や NVMe への十分な対応が必須
  - Max IOPS だけでなく、CPU core 毎の IOPS 向上が必要
- HDD は今後、ニッチ市場となる

---

# Performance (2)
- Project Crimson
  - Ceph のデータパスを再実装
  - Seastar を用いる
     - https://www.scylladb.com/2018/10/12/scylla-summit-preview-rebuilding-ceph/
     - 現在の主流となっている、NUMA アーキテクチャ で Many Core が実装された場合でも、パフォーマンスをリニアに高めるための toolset
     - http://seastar.io
     - ScyllaDB (Cassandra API互換のDB) でも Seastar が用いられている
     - CPU core 単位で sharding を行い、shared nothing とすることで lock 競合や cache miss, NUMA node跨ぎの通信等のパフォーマンス低下要因を根本的に排除する

---

# Performance (3)
- RADOS
  - OpTracker 改善
     - Mutex -> std:mutex
  - lockdep, misc asserts を prod版のバイナリから排除
  - Auth signature check の最適化
  - Blustore allocator 改善
  - bufferlist 改善

---

# Multi- and Public cloud (1)
- S3 等の public cloud の価格が、 native storage (Bare Disk + Off-the-shelf server) よりも下回る可能性は低い
- クラウド世代のアプリは、Object Storage を主に使用することになる
  - Block (RBD) や File (CephFS)も VM や Legacy server では使われるが、動画や写真等は - Object Storage の方が圧倒的に便利だしコストも低い
- 最近のITインフラは、Public / Private cloud や Data Center を跨いで 様々なリソースが配置されている

---

# Multi- and Public cloud (2)
- Reframe RGW
  - 従来
    - RGW = Ceph/RADOS Cluster への gateway
  - 新しい位置づけ
    - RGW = フェデレーションサイト/ゾーン メッシュへの gateway
       - Local storage <-> Public cloud, Private cloud
       - No local storage <-> Public cloud, Private cloud
       - Etc.
  - RGW multisite 機能では、既に沢山の機能が実装されている

---

# Multi- and Public cloud (3)
- Federation
  - ElasticSearch integration
     - Riak-CS の yokozuna 的なもの..
- Cloud sync (Mimic-)
  - S3 等の Public cloud への replication
- Tiering (Nautilus-)
  - 個別の object を external cloud storage tier に送信
- Archive (Nautilus-)
  - 異なるサイトへの archiving

---

# Multi- and Public cloud (4)
- NooBaa
  - https://jp.techcrunch.com/2018/11/28/2018-11-27-red-hat-acquires-hybrid-cloud-data-management-service-noobaa/
  - RedHat 社が Multi cloud storage のベンダ、NooBaa を買収
  - 近いうちに Ceph 側にも連携機能が実装される可能性が高い

---

# まとめ
- Ceph 最新動向のまとめ
  - Management and Usability
  - Container platforms
  - Performance
  - Multi- and hybrid cloud