IDCF テックブログ

IDCF テックブログ

クラウド・データセンターを提供するIDCフロンティアの公式テックブログ

IDCF側でもIDCF クラウドで CData Sync を使ってみた

こんにちは、藤城(@tafujish)です。CData SoftwareさんがCData SyncのIDCFクラウド上での構築方法をブログに書いてくれました。ありがとうございます。

www.cdata.com

この機会に自分の方でも触ってみたので、IDCFクラウドでCData Syncを使うならではの構成を紹介したいと思います。ついでに、アドベントカレンダーにも参加させてもらおうと思います。

qiita.com

CData Syncとは

CData Syncは様々なSaaSやDB上のデータをRDBやDWHに同期するデータパイプラインツールです。
IDCFクラウドRDB上にあるデータを解析しよう、解析は BigQuery を使おうと考えた時、RDB上のデータをどのように BigQuery に転送するのが良いでしょうか。例えば、SQLを実行して取得したデータをbqコマンドで転送するスクリプトを作成して実行することで実現できます。でも、データの更新があるので定期的に実行したい、転送がうまくいったか結果を通知したい、といったことも出てくるでしょうし、そもそもスクリプト実行する環境の構築が手間だったりスクリプト作成自体もしたくない。こんな時に、CData Syncは便利だと思います。これらの課題が、WebUIからサクッと設定できますので。

IDCFクラウド上でCData Syncを試してみる

今回は、IDCFクラウドRDB上のデータを BigQuery に転送して解析することを想定し、CData Syncを使ってIDCFクラウドRDBからクラウドストレージ(GCS)にデータ転送する構成を作ります。CData Syncは BigQuery にも対応していますので、直接 BigQuery に転送しても良いですが、IDCFクラウドからクラウドストレージへのネットワーク転送料が無料なので、IDCFクラウド→クラウドストレージ→ BigQuery の経路がお勧めです。

では、こんな構成を作っていきましょう。


CData Syncの構築

仮想マシンを作成し、CData Syncをインストールし、実行しTCP8181にアクセスするだけで簡単に使えます。この流れは先述の元のブログで詳しく紹介いただいているのでここでは割愛します。

インフィニットLB経由でCData SyncにHTTPSアクセス

CData SyncのWebUIへのアクセスはデフォルトのTCP8181へのアクセスはHTTPでの通信なので暗号化されていません。インターネット経由で利用する場合はセキュリティ上、HTTPSで通信し暗号化しておきたいです。そこで、インフィニットLBでHTTPSを終端し、TCP8181でCData SyncのVMに転送する構成を作ります。
設定は以下のように、HTTPS(443)の設定で、CData Syncの8181を設定し証明書を設定します。(証明書の設定方法の詳細はご利用ガイドをどうぞ)

一つだけポイントがありまして、オプションでリダイレクト設定(80→443)をしておく必要がありました。この設定がないとページ遷移のたびにHTTPSアクセスがHTTPに変わってしまったので、HTTPSを強制にしておきます。

これで、インフィニットLB経由でCData SyncにHTTPSアクセスできるようになりました。インフラ構成としては以上なので、次にCData Syncの設定を見ていきましょう。

CData SyncのデータソースにIDCFクラウドRDBを設定

では、まずはCData SyncのWebUIからデータソースにIDCFクラウド RDB(MySQL)を設定します。この設定は先述の元のブログで詳しく紹介いただいているのでここでは割愛します。IDCFクラウド RDBに限らず、VM上で構築したデータベースサーバーにも同様に接続可能です。

CData Syncの同期先にクラウドストレージを設定

次に、同期先にクラウドストレージを設定します。同期先の「Add More」から Google Cloud Storage を検索し選択します。Google Cloud Storage の設定では、以下の項目の設定が必要です。

Auth Scheme: OAuthを選択
Project Id: idcfではじまるプロジェクトIDを記入
Bucket: クラウドストレージにて作成/作成済みのバケットを記入

OAuthに利用する Googleアカウント やプロジェクトIDの確認は連携アカウントのページで確認できます。

以上で、接続テストすると以下のように、HTTPSを有効にするか、ローカルからログインするように言われ設定できませんでした。

失敗! You must enable TLS or login from the local machine to authenticate with this site.

インフィニットLBでTLS終端するだけではだめで、CData Syncの方でHTTPSを有効化する必要あるようです。せっかくインフィニットLBを用意しているので、ローカルログインの方から設定してみます。CData Syncを実行しているLinux VM上に、GUIとWEBブラウザの環境を入れてそこから設定しても良いですが、時間とリソースがもったいないので、ここではCData SyncにSSHしている手元のPCから設定します。具体的には以下のようにSSHポートフォワーディングします。

ssh -L 8181:localhost:8181 <USER>@<Public IP Address> -p <Port>

いつものsshコマンドに、-L オプションで手元のPCで使うポート(8181)とCData Sync側のポート(localhost:8181)を付けるだけです。このSSH接続後に、手元のPCで http://localhost:8181/ にアクセスすると、CData SyncのWebUIに接続でき、ローカルログインと同じ状態(通信自体もSSHで暗号化されていて安全)なので、 Google のOAuthも実行できるようになります。

これで事前の設定は終わりなので、あとはジョブを設定すればデータの転送がはじまります。

まとめ

IDCFクラウド上で、IDCFクラウド関連サービスをCData Syncから使う構成と自分の方でハマったポイントを紹介しました。CData Syncは30日間のトライアルがサクっと試せるようになってますので、データ解析の構成を考える時に一度試してみるのはいかがでしょうか。

―――
Google Cloud 、 BigQuery は Google LLC の商標です。

Copyright © IDC Frontier Inc.