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.
2Copyright©2017 NTT Corp. All Rights Reserved.
[プロフィール]
氏名:露﨑 浩太
Launchpad: tsuyuzaki-kota
IRC: kota_
所属:日本電信電話株式会社 (NTT)
ソフトウェアイノベーションセンタ (R&D部門)
[OpenStack Swiftとの関わり]
2012~: 社内のSwift関連のお仕事を開始
2015~: Swiftのコアチームで活動開始
自己紹介
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のエコシステム
• まとめ
アジェンダ
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 = ファイル + メタデータ
5Copyright©2017 NTT Corp. All Rights Reserved.
オブジェクトストレージの主な用途
様々な種類のサイズの大きなファイルを、大量に、長期間保存することが得意
オンラインバックアップ 画像・映像のアーカイブ IoT/M2M
バックアップサーバ サービス提供システム IoT GW
オブジェクト
ストレージ オブジェクト
ストレージ
オブジェクト
ストレージ
100T 100T
100T
100T
100T
100T
http://storage-host
…
ログ
ログ
ログ
ログ
ログ
ログ
…
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)
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
アカウント コンテナ オブジェクト
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:
9Copyright©2017 NTT Corp. All Rights Reserved.
• Scale Out
• Data Redundancy (冗長化)
• レプリカ or ErasureCode
• Consistent Hashing
• Active Consistency Engine
Swiftのデザイン
10Copyright©2017 NTT Corp. All Rights Reserved.
• Scale Out
• Data Redundancy (冗長化)
• レプリカ or ErasureCode
• Consistent Hashing
• Active Consistency Engine
Swiftのデザイン
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のアーキテクチャと基本的なデータの流れ
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の数を増やす
13Copyright©2017 NTT Corp. All Rights Reserved.
• Scale Out
• Data Redundancy (冗長化)
• レプリカ or Erasure Code
• Consistent Hashing
• Active Consistency Engine
Swiftのデザイン
14Copyright©2017 NTT Corp. All Rights Reserved.
• クラスタ内のFailure Domainを定義可能で、オブジェクトはで
きるだけユニークなFailure Domainへ保存される
Data Redundancy: 保存されるオブジェクトの配置
zone1 zone2
Object
Object
Object
2zoneの場合
各zoneに最低一つずつ
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に一つずつ
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
17Copyright©2017 NTT Corp. All Rights Reserved.
• Scale Out
• Data Redundancy (冗長化)
• レプリカ or Erasure Code
• Consistent Hashing
• Active Consistency Engine
Swiftのデザイン
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
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
20Copyright©2017 NTT Corp. All Rights Reserved.
• Scale Out
• Data Redundancy (冗長化)
• レプリカ or Erasure Code
• Consistent Hashing
• Active Consistency Engine
Swiftのデザイン
21Copyright©2017 NTT Corp. All Rights Reserved.
Active Consistency Engine: Replicator
Swift
Proxy Tier:
Storage Tier:
(アカウント、
コンテナ、
オブジェクト)
zone1 zone2 zone3 zone4
Replicator
• ReplicatorはSwiftの各サーバに常駐し、オブジェクトの一貫性
を監視するデーモンプロセス
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
23Copyright©2017 NTT Corp. All Rights Reserved.
• Q: データ読み込み時のRead Repairは?
• A: しません
• Q: アクティブにデータ動かすとNW障害などの死活監
視が途絶えた際にデータの大移動が起こるのでは?
• A: Swiftはネットワーク障害とディスク障害を区別し
て挙動を変えます。データの移動を伴うのは、「ディス
ク故障」か「Ringに対するディスクの追加/削除」の場
合のみで、リブートやネットワーク断をトリガとした
データの移動は行いません
Active Consistency Engine:よくある質問
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のエコシステム
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
試してみるなら
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…
今日話さなかったこと
気になるものがあれば、懇親会で是非議論しましょう!!!
27Copyright©2017 NTT Corp. All Rights Reserved.
• Swiftはデータの冗長度を持ちながらスケールアウトするようにデ
ザインされたオブジェクトストレージである
• SwiftではRingと呼ばれるConsistentHashingの仕組みを元に、
常にデータの整合性を管理することでデータの冗長度を担保でき
るように作られている
• こうした特長から、失いたくないデータのバックアップや大容量
の画像映像を扱う、ストリーミングの事例などに採用されている
• 話しきれなかったトピックは懇親会で是非議論しましょう
まとめ
28Copyright©2017 NTT Corp. All Rights Reserved.
質問など
tsuyuzaki.kota@lab.ntt.co.jp
IRC: kota_

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の仕組みを元に、 常にデータの整合性を管理することでデータの冗長度を担保でき るように作られている • こうした特長から、失いたくないデータのバックアップや大容量 の画像映像を扱う、ストリーミングの事例などに採用されている • 話しきれなかったトピックは懇親会で是非議論しましょう まとめ
  • 28.
    28Copyright©2017 NTT Corp.All Rights Reserved. 質問など tsuyuzaki.kota@lab.ntt.co.jp IRC: kota_