More Related Content
Similar to OpenStack Swift紹介 (20)
More from Kota Tsuyuzaki (13)
OpenStack Swift紹介
- 1. Copyright©2017 NTT Corp. All Rights Reserved.
分散オブジェクトストレージ
OpenStack Swift紹介
(2017/08/01)
Kota Tsuyuzaki [IRC: kota_]
tsuyuzaki.kota@lab.ntt.co.jp
NTT Software Innovation Center
Copyright(c)2009-2017 NTT CORPORATION. All Rights Reserved.
- 2. 2Copyright©2017 NTT Corp. All Rights Reserved.
[プロフィール]
氏名:露﨑 浩太
Launchpad: tsuyuzaki-kota
IRC: kota_
所属:日本電信電話株式会社 (NTT)
ソフトウェアイノベーションセンタ (R&D部門)
[OpenStack Swiftとの関わり]
2012~: 社内のSwift関連のお仕事を開始
2015~: Swiftのコアチームで活動開始
自己紹介
- 3. 3Copyright©2017 NTT Corp. All Rights Reserved.
• What is an Object?
• オブジェクトストレージの主な用途
• Swiftとは
• Swift API
• Swiftのデザイン
• Scale Out
• Data Redundancy (冗長化)
• Consistent Hashing
• Active Consistency Engine
• Swiftのエコシステム
• まとめ
アジェンダ
- 4. 4Copyright©2017 NTT Corp. All Rights Reserved.
What is an Object
ファイル:
DSC_0029.JPG
メタデータ:
ImageSize: 3840 x 2160
Date: 2017-07-23
Place: Tokyo Shinjuku
etc…
Object = ファイル + メタデータ
- 5. 5Copyright©2017 NTT Corp. All Rights Reserved.
オブジェクトストレージの主な用途
様々な種類のサイズの大きなファイルを、大量に、長期間保存することが得意
オンラインバックアップ 画像・映像のアーカイブ IoT/M2M
バックアップサーバ サービス提供システム IoT GW
オブジェクト
ストレージ オブジェクト
ストレージ
オブジェクト
ストレージ
100T 100T
100T
100T
100T
100T
http://storage-host
…
ログ
ログ
ログ
ログ
ログ
ログ
…
- 6. 6Copyright©2017 NTT Corp. All Rights Reserved.
Swiftとは
Swift
IaaS基盤であるOpenStackで開発されているオブジェクトストレージのPython実装
元々Rackspaceが自社サービス(CloudFiles)向けに開発されたOSSであり、
OpenStackができた当初(2010年)からあるソフトウェア
海外はもちろん、国内でも商用実績あり
NTTグループ
NTTデータ社(https://goo.gl/Rb8i7b)
NTTぷらら社(https://goo.gl/fDC69D)
- 7. 7Copyright©2017 NTT Corp. All Rights Reserved.
Swift API
https://swift.example.com/v1/AUTH_account/container/object
HTTP based Rest API:
Host名 API Version
アカウント コンテナ オブジェクト
- 8. 8Copyright©2017 NTT Corp. All Rights Reserved.
Swift API
PUT https://swift.example.com/v1/AUTH_account/container/object
Write a new object:
GET https://swift.example.com/v1/AUTH_account/container/object
Read an object:
- 9. 9Copyright©2017 NTT Corp. All Rights Reserved.
• Scale Out
• Data Redundancy (冗長化)
• レプリカ or ErasureCode
• Consistent Hashing
• Active Consistency Engine
Swiftのデザイン
- 10. 10Copyright©2017 NTT Corp. All Rights Reserved.
• Scale Out
• Data Redundancy (冗長化)
• レプリカ or ErasureCode
• Consistent Hashing
• Active Consistency Engine
Swiftのデザイン
- 11. 11Copyright©2017 NTT Corp. All Rights Reserved.
Scale Out: Swiftのアーキテクチャ(3レプリカの例)
ユーザ、
クライアント:
Swift
Load Balancer:
Proxy Tier:
Storage Tier:
(アカウント、
コンテナ、
オブジェクト)
zone1 zone2 zone3 zone4
Object
Object
Object
Object
PUT GET
■Swiftのアーキテクチャと基本的なデータの流れ
- 12. 12Copyright©2017 NTT Corp. All Rights Reserved.
Scale Out: Swiftのアーキテクチャ(3レプリカの例)
ユーザ、
クライアント:
Swift
Load Balancer:
Proxy Tier:
Storage Tier:
(アカウント、
コンテナ、
オブジェクト)
zone1 zone2 zone3 zone4
Object
Object
Object
Object
PUT GET
■Proxy TierとStorage Tierは独立にスケールアウトが可能
同時接続数が増えたら
Proxyの数を増やす
容量が足りなくなったら
Storageの数を増やす
- 13. 13Copyright©2017 NTT Corp. All Rights Reserved.
• Scale Out
• Data Redundancy (冗長化)
• レプリカ or Erasure Code
• Consistent Hashing
• Active Consistency Engine
Swiftのデザイン
- 14. 14Copyright©2017 NTT Corp. All Rights Reserved.
• クラスタ内のFailure Domainを定義可能で、オブジェクトはで
きるだけユニークなFailure Domainへ保存される
Data Redundancy: 保存されるオブジェクトの配置
zone1 zone2
Object
Object
Object
2zoneの場合
各zoneに最低一つずつ
- 15. 15Copyright©2017 NTT Corp. All Rights Reserved.
• クラスタ内のFailure Domainを定義可能で、オブジェクトはで
きるだけユニークなFailure Domainへ保存される
Data Redundancy: 保存されるオブジェクトの配置
zone1 zone2
Object
zone3 zone4
Region 2Region 1
Object
Object
2Region4Zoneの場合
各Regionに最低一つ
各Zoneに一つずつ
- 16. 16Copyright©2017 NTT Corp. All Rights Reserved.
Data Redundancy: SwiftのFailure Domain
Region
Zone
Server
Disk Disk
Server
Disk Disk
Zone
Server
Disk Disk
Server
Disk Disk
Region
Zone
Server
Disk
• 最小のFailure Domainがディスク単位とし、1つディスクが壊
れても、複数のレプリカが消失しないことを担保 (No SPOF)
Object Object Object
- 17. 17Copyright©2017 NTT Corp. All Rights Reserved.
• Scale Out
• Data Redundancy (冗長化)
• レプリカ or Erasure Code
• Consistent Hashing
• Active Consistency Engine
Swiftのデザイン
- 18. 18Copyright©2017 NTT Corp. All Rights Reserved.
• Swiftは「Ring」と呼ばれる静的なデータ構造でデバイスとFailure
Domainを管理
• RingではデバイスのリストとPartitionのマップを管理
• Object URLをMD5hash値をからPartitionを計算し実際の配置デバイ
スを決める
Consistent Hashing: Swift Ring
Device
Idx
Device Info
0 192.168.11.10/zone1/sdb
1 192.168.11.11/zone1/sdc
… …
34 192.168.11.24/zone2/sdd
… …
Partition Replica1 Replica2 Replica3
0 11 21 43
… … … …
6 34 1 0
… … … …
MD5(URL) = index(※)
※ Swift uses a modified MD5 consistent hashing ring
Partitions
Primaries
- 19. 19Copyright©2017 NTT Corp. All Rights Reserved.
• Swiftは全てのRingが同じである(運用側でそれを保証する)という前
提で動いている
• CassandraのGossipのような内部でRing情報を伝播する仕組みは存在
しない
Consistent Hashing: Swift Ring
Swift
Proxy Tier:
Storage Tier:
(アカウント、
コンテナ、
オブジェクト)
zone1 zone2 zone3 zone4
Object
Object
Object
- 20. 20Copyright©2017 NTT Corp. All Rights Reserved.
• Scale Out
• Data Redundancy (冗長化)
• レプリカ or Erasure Code
• Consistent Hashing
• Active Consistency Engine
Swiftのデザイン
- 21. 21Copyright©2017 NTT Corp. All Rights Reserved.
Active Consistency Engine: Replicator
Swift
Proxy Tier:
Storage Tier:
(アカウント、
コンテナ、
オブジェクト)
zone1 zone2 zone3 zone4
Replicator
• ReplicatorはSwiftの各サーバに常駐し、オブジェクトの一貫性
を監視するデーモンプロセス
- 22. 22Copyright©2017 NTT Corp. All Rights Reserved.
Active Consistency Engine:オブジェクトの障害と復旧
通常時
障害時
復旧時
X X X
X X X
X X X X
X X X
X X X
X X
X
X
① 各ノードのReplicatorは、Primariesのサーバ搭載された
ディスクを監視する。(HTTPで状態を送りあう)
② ディスクに障害が発生する。ディスク障害を検知する。
③ ディスク内のデータを他の空いているディスクに一時的に
ファイルを複製する(ハンドオフ)
④ ディスクを復旧する。ディスク復旧を検知する。
⑤ ハンドオフを元のディスクに複製する。
⑥ ハンドオフを削除する。
Replicator with
Replicator with
- 23. 23Copyright©2017 NTT Corp. All Rights Reserved.
• Q: データ読み込み時のRead Repairは?
• A: しません
• Q: アクティブにデータ動かすとNW障害などの死活監
視が途絶えた際にデータの大移動が起こるのでは?
• A: Swiftはネットワーク障害とディスク障害を区別し
て挙動を変えます。データの移動を伴うのは、「ディス
ク故障」か「Ringに対するディスクの追加/削除」の場
合のみで、リブートやネットワーク断をトリガとした
データの移動は行いません
Active Consistency Engine:よくある質問
- 24. 24Copyright©2017 NTT Corp. All Rights Reserved.
• Swift3
• https://github.com/openstack/swift3
• Amazon S3 APIをSwift上でエミュレーションするプロジェクト
• Storlets
• https://github.com/openstack/storlets
• 保存されているオブジェクトに対してSwift上で処理用のコードを
実行する環境を提供するプロジェクト
• Hadoop MapReduceのMap処理のようなものをStorage Tierで
実行できる
• Hadoop: Swift Object Store
• https://hadoop.apache.org/docs/r2.7.0/hadoop-
openstack/index.html
• HDFSの代わりにSwiftに保存されてオブジェクトを扱えるように
するプラグイン
Swiftのエコシステム
- 25. 25Copyright©2017 NTT Corp. All Rights Reserved.
• Vagrant Swift All In One
• https://github.com/swiftstack/vagrant-swift-all-in-one
• Steps
• git clone https://github.com/swiftstack/vagrant-swift-all-in-one
• vagrant up
試してみるなら
- 26. 26Copyright©2017 NTT Corp. All Rights Reserved.
• ConsistentHashingのアーキテクチャ上でオブジェクト一覧を
取得可能にするための実装と工夫
• Account and Container DB
• ファイルシステムレベルでの工夫
• fallocate reserve, rename operation, posix_fadvise
• bit rot対策
• content md5 and Auditor
• Erasure Codingのための工夫
• 2 Phase Commit over HTTP
• その他、使い方の幅を広げる機能など
• Multi Upload、Bulk DELETE、Quota、Versioning、TempURL、
CORS、Encryption、etc…
今日話さなかったこと
気になるものがあれば、懇親会で是非議論しましょう!!!
- 27. 27Copyright©2017 NTT Corp. All Rights Reserved.
• Swiftはデータの冗長度を持ちながらスケールアウトするようにデ
ザインされたオブジェクトストレージである
• SwiftではRingと呼ばれるConsistentHashingの仕組みを元に、
常にデータの整合性を管理することでデータの冗長度を担保でき
るように作られている
• こうした特長から、失いたくないデータのバックアップや大容量
の画像映像を扱う、ストリーミングの事例などに採用されている
• 話しきれなかったトピックは懇親会で是非議論しましょう
まとめ