セルフマネージド オブジェクト ストレージから Cloud Storage への移行を加速
Google Cloud Japan Team
※この投稿は米国時間 2022 年 9 月 17 日に、Google Cloud blog に投稿されたものの抄訳です。
お客様が Google Cloud Storage を活用したいと考える理由は、その使いやすさ、スケーラビリティ、安全性です。しかし、数百 TB のデータをセルフマネージド オブジェクト ストレージから移行することは複雑な課題です。セキュリティ面で妥協することなく転送中に効果的にリソースを使えるようなスクリプトを作成し、メンテナンスするには、数か月かかることもあります。
この移行を促進し、簡素化するために、Storage Transfer Service では最近、S3 互換ストレージから Cloud Storage へのデータ移行のプレビュー サポートを発表しました。この機能は、Cloud Storage が最近リリースしたマルチパート アップロードと List Object V2 のサポートに基づいており、これによって Cloud Storage を S3 API 向けに作成されたアプリケーションの実行に適したものにできます。
この新機能を使用すると、移行、コールドデータのアーカイブ、事業継続のためのデータ複製、データ パイプラインの作成をする場合に、セルフマネージド オブジェクト ストレージから Google Cloud Storage にデータをシームレスにコピーできます。AWS S3 から Cloud Storage にデータを移行する場合、この機能を使用すると、Google Cloud へのネットワーク ルートを制御できます。これにより、下り(外向き)の料金が大幅に削減されます。
Storage Transfer Service は、Google Cloud Storage や Amazon S3、Azure Storage、オンプレミス データなどのオブジェクトおよびファイル ストレージ システム間で、データを迅速かつ安全に転送できるマネージド サービスです。このサービスでは、スケジュール設定、暗号化、データ整合性チェック、スケールアウト パフォーマンスをすぐに使用できます。
Cloud Storage のメリット
Cloud Storage は 99.999999999% 以上の年間耐久性を実現するように設計されている地球規模のオブジェクト ストレージで、Archive Storage クラスやライフサイクル管理などの複数の手段によって、超低コストのストレージ管理およびストレージ提供を行っています。また、強整合性を備えた大陸にまたがる単一の名前空間を提供します。
データを Cloud Storage に保存することで、Cloud CDN によるコンテンツ提供や Compute Engine と Google Kubernetes Engine による計算、BigQuery による分析、Dataproc などの Google Cloud の最先端機能を活用できます。
S3 互換ストレージから転送する仕組み
Storage Transfer Service は、コントロール プレーンとエージェントの 2 個のコンポーネントで構成されています。
コントロール プレーンは、エージェントへの作業の分散やスケジュール設定、状態の管理、リソースのスケーリングなど、データの転送を調整します。エージェントは小さなソフトウェアであり、データソースに近い VM でセルフホストされます。これらのエージェントは Docker コンテナで実行され、「エージェント プール」に属します。
転送をオーケストレートするには、転送ジョブを作成します。転送ジョブには、移行元、移行先、スケジュール、オブジェクトを含めるあるいは除外するフィルタ、移行元と移行先オブジェクトのライフサイクルを管理するオプションなど、データの移動に必要なすべての情報が含まれています。
この機能を使用するには、お客様のオブジェクト ストレージが Amazon S3 API オペレーションの GetObject、ListObjectV2 または ListObjectV1、HeadObject、DeleteObject と互換性を持っている必要があります。また、リクエストを認証するために、AWS Signature Version 4 または Version 2 をサポートしていなければいけません。
こちらの簡単な CLI のチュートリアルから利用を開始していただけます。
S3 互換ストレージから Cloud Storage にデータをコピーする方法
セルフマネージド オブジェクト ストレージから Cloud Storage にデータを転送するには、次の手順を行ってください。
ステップ 1: 移行元へのアクセスを構成します
ステップ 2: Storage Transfer Service エージェントをデプロイします
ステップ 3: 転送ジョブを作成します
ステップ 1: 移行元へのアクセスを構成する
STS が移行元のデータにアクセスできるように、構成の詳細と認証情報を収集する必要があります。
エージェントが移行元にアクセスできるように構成するには、移行元のアクセスキーとシークレット キーを生成し、メモしておきます。エージェントには以下の権限が必要です。
バケットを一覧表示する。
移行元バケットのオブジェクトを読み込む。
移行元バケットのオブジェクトを削除する。
また、移行元に関する以下の情報もメモしておきます。
バケット名: test-3
エンドポイント: s3.source.com
リージョン: us-west-1
ステップ 2: Storage Transfer Service エージェントをデプロイする
Storage Transfer Service エージェントは、お客様のストレージ システムの近くに、移行元と Google Cloud のリソースに対する適切なアクセス権限を持った状態でデプロイする必要があります。
エージェントに Google Cloud のリソースへのアクセス権限を割り当てるには、次のようにします。
Cloud コンソールに移動してエージェントのサービス アカウントを作成します。
以下のロールをエージェントのサービス アカウントに割り当てます。
Storage Transfer エージェント(role/storagetransfer.transferAgent)
Storage オブジェクト管理者(roles/storage.objectAdmin)
Pub/Sub 編集者(roles/pubsub.editor)
認証情報ファイルを生成します。
次の値を置き換えます。
PROJECT_ID: プロジェクト ID。
SERVICE_ACCOUNT_ID: サービス アカウント ID。
service_account.json: 認証情報を保存するファイル名。
ホストマシンにエージェントをデプロイするには、まずエージェント プールを作成し、その後エージェントをインストールします。
ステップ 3: 転送ジョブを作成する
STS は転送ジョブを使って、移行元から移行先へ移動するデータを調整します。転送ジョブを作成する手順は次のとおりです。
STS サービス アカウントに権限を割り当てます。STS は Google が管理するサービス アカウントを使って転送を管理します。サービス アカウントの形式は、project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com です。
- 新しいプロジェクトでは、googleServiceAccounts.get API 呼び出しを行うことでサービス アカウントをプロビジョニングします。
- 次のロールまたは同等の権限をこのサービス アカウントに割り当てます。
Storage オブジェクト作成者(roles/storage.objectCreator)
Storage オブジェクト閲覧者(roles/storage.objectViewer)
Pub/Sub 編集者(roles/pubsub.editor)
Storage レガシー バケット読み取り(roles/storage.legacyBucketReader)
転送ジョブを作成するには roles/storagetransfer.admin が必要です。左側のナビゲーション バーにある「IAM と管理」から「IAM」に移動することで、このサービス アカウントに権限を割り当てられます。
作成した転送ジョブは CLI または Cloud コンソールでモニタリングできます。
ベスト プラクティス
大規模な移行では、帯域幅がボトルネックになることがよくあります。Cloud Interconnect を使用すると、大規模なデータ転送に一貫したスループットを提供できます。本番環境ワークロードへの影響を避けるには、エージェント プール パラメータを通して Storage Transfer Service が消費する帯域幅の量を制限できます。
移行元の近くにエージェントをデプロイすることで、エージェントとストレージ システム間のネットワーク レイテンシを最小化することをおすすめします。フォールト トレラントのために 3 個以上のエージェントを実行し、エージェントあたり 4 個以上の vCPU と 8 GB 以上の RAM を割り振ります。
多数の小さなオブジェクトを転送する場合、移行元でのオブジェクトの一覧表示がボトルネックになることがあります。このような場合、特定の接頭辞セット専用の転送ジョブを複数作成して、転送パフォーマンスをスケールします。特定の接頭辞セットで転送を実行するには、転送ジョブの構成で包含接頭辞または除外接頭辞を使用します。
事業継続のためにデータを複製するには、deleteObjectsUniqueInSink と overwriteWhen を組み合わせて使用できます。この設定によって、常に移行先のオブジェクトを移行元のオブジェクトで上書きし、移行元で削除されたファイルは削除できるので、Cloud Storage バケットの移行先を移行元の正確なコピーとすることができます。
API を使用してセルフマネージド オブジェクト ストレージにリクエストを送信するユーザーを移行する方法については、Amazon S3 から Cloud Storage への完全な移行をご覧ください。
このブログでは、Storage Transfer Service を使用して、セルフマネージド オブジェクト ストレージから Cloud Storage に迅速かつ安全にデータを転送する方法を紹介してきました。
データ転送の詳細については、Storage Transfer Service のドキュメントをご覧ください。
- Google Cloud プロダクト マネージャー Ajitesh Abhishek
- Google Cloud アウトバウンド プロダクト マネージャー Nishant Kohli