3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

IBM CloudAdvent Calendar 2023

Day 16

CP4DaaSからSatellite Connectorを用いたオンプレミスのデータベースへの接続方法

Last updated at Posted at 2023-11-07

はじめに

近年AIツール群の利用やデータ分析のために、Cloudサービスからオンプレミスにあるデータベースに接続するニーズが高まっています。
本記事ではIBM Cloud上での実装例としてIBM Cloudのデータ分析基盤であるCloud Pak For Data as a Service(CP4DaaS)からオンプレミスにあるデータベース(PostgreSQL)への接続方法について記載します。

また、本記事ではオンプレミスの環境へセキュアに接続するためにIBM Cloudの新しいソリューションである"Satellite Connector"を使用しています。
本ソリューションを使用することでオンプレミス側にAgent導入用のLinuxサーバー(冗長構成の場合は2台必要)を用意するだけでセキュアなTLSトンネリングによる接続が可能になります。
本サービスを利用すると非常に簡単に接続が作成できるので、IBM Cloud上でデータ分析やAIツールを利用する際はぜひご利用ください。

本記事ではSatellite Connectorを用いてオンプレミスのデータベースへの接続に関して記載していますが、冗長化などの詳細な記述やContainerへの接続手段について以下の記事、docsも参考になりますので、ぜひご覧ください。

docs : Satellite コネクターの概要

今回は大阪リージョンに建てたVPCをオンプレミス環境と想定し、その中にデータベースを建てて、CP4DaaSから東京リージョンにSatellite Connectorを用いて接続することを目標とします。

構築手順は以下のdocsを参考に進めます。
docs : Satellite コネクターの作成

今回の構成図は以下の通りです。
スクリーンショット 2023-10-29 21.08.19.png

事前準備

すでに以下の環境は構築済みであることを想定します。

  1. VPC(大阪リージョン), サブネット(今回は192.168.2.64/26)
  2. 1のVPCサブネット内のConnector Agent用仮想サーバー(2Core, 4GB, CentOS, 大阪リージョン, floating IP付与済み)
  3. 1のVPCサブネット内のPostgresql用仮想サーバー(2Core, 4GB, ubuntu, 大阪リージョン)

Agent用サーバーからPostgresqlサーバーへJDBCで接続できるようにあらかじめ設定してあるものとします(CP4DaaSからPostgreSQLへの接続はJDBC接続で行います)。
また、オンプレミス想定のVPC環境はSatellite Connector導入のためのFloating IPしか公開されておらず、データベースに関しては外部との通信は一切できない構成になっております

構築手順

1. Satellite Connectorの注文

まずは東京リージョンでSatellite Connectorを作成します。ポータル画面の検索機能から「Satellite」を検索します。
スクリーンショット_2023-10-25_9_37_52.png

Satelliteのホーム画面に移行したら、左側メニューの「Connector」を選択し、右上の青い「Connectorの作成」ボタンを選択します。
スクリーンショット_2023-10-25_9_38_26.png

今回は東京リージョンにConnectorを作成するので、リージョンにjp-tokを指定し、「コネクターの作成ボタン」で作成します。

作成したConnectorを選択すると以下の画面が表示されます。
スクリーンショット_2023-10-25_12_10_18.png
Connector IDは後ほど使用するのでどこかに記録しておきます。

2. ConnectorAgentの作成

次にAgent用サーバーにConnectorAgentを作成します。

2-1. Agent導入のための準備

まずはじめにConnectorAgentをインストールするため、Agent用サーバーにsshでログインしdockerのインストールを行います。

dockerのインストール
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
systemctl enable docker
systemctl start docker

続いて環境ファイルを作成し、環境変数を設定します。

ファイル作成
mkdir -p ~/agent/env-files
vi ~/agent/env-files/env.txt

env.txtの中身は以下の通りに設定します。

env.txt
SATELLITE_CONNECTOR_ID=U2F0ZWxsaXRlQ29ubmVjdG9yOiJjazk0dDI0dDFjcGQ4dms0NDg1ZyI
SATELLITE_CONNECTOR_IAM_APIKEY=xxxxxxxxxxx
SATELLITE_CONNECTOR_REGION=jp-tok
SATELLITE_CONNECTOR_TAGS=sample tag

SATELLITE_CONNECTOR_IDはConnector画面で確認できます。APIKEYはポータルのIAMから作成できます。詳しくはdocsを参照ください。
これでConnectorAgentのコンテナを作成する準備ができました。

2-2. Agentの作成

まずはAgentイメージをpullするため、Container Registoryにログインします。パスワード要求にはAPIKEYを入力します。

docker login -u iamapikey icr.io
Password:
Login Succeeded

ログインができたらConnectorAgentのイメージをコンテナレジストリからpullします。

docker pull icr.io/ibm/satellite-connector/satellite-connector-agent:latest
docker image ls
REPOSITORY                                                 TAG       IMAGE ID       CREATED       SIZE
icr.io/ibm/satellite-connector/satellite-connector-agent   latest    66b5c7f42805   12 days ago   415MB

イメージのpullが確認できたので、コンテナを起動します。

docker run -d --env-file ~/agent/env-files/env.txt icr.io/ibm/satellite-connector/satellite-connector-agent:latest
aaef3d2f49ded9b800d4a2c254e42caa1941de0930547052b705912b8f4a9ccb
docker ps
CONTAINER ID   IMAGE                                                             COMMAND                   CREATED         STATUS         PORTS     NAMES
aaef3d2f49de   icr.io/ibm/satellite-connector/satellite-connector-agent:latest   "/usr/local/bin/node…"   9 seconds ago   Up 8 seconds             great_colden
docker logs aaef3d2f49de
{"level":30,"time":"2023-10-23T02:29:35.437Z","pid":13,"hostname":"aaef3d2f49de","name":"agentOps","msgid":"A02","msg":"Load SATELLITE_CONNECTOR_ID value from SATELLITE_CONNECTOR_ID environment variable."}
{"level":30,"time":"2023-10-23T02:29:35.438Z","pid":13,"hostname":"aaef3d2f49de","name":"agentOps","msgid":"A02","msg":"Load SATELLITE_CONNECTOR_IAM_APIKEY value from SATELLITE_CONNECTOR_IAM_APIKEY environment variable."}
...

最後の行でログを確認していますが、ちゃんと起動していることがわかります。
また、この時点でSatellite Connectorの画面でもアクティブなエージェントとして作成したコンテナのIDが確認できます。
スクリーンショット_2023-10-25_14_48_32.png

2-3. ユーザーエンドポイントの設定

次にオンプレミス環境にアクセスするためのエンドポイントをConnector側に作成します。
Connectorメニューから「ユーザーエンドポイント」タブ→「エンドポイントの作成」を選択し、エンドポイントを作成します。
スクリーンショット_2023-10-25_12_24_12.png

リソース詳細は任意のエンドポイント名、宛先FQDNまたはIP(今回はDBサーバーである192.168.2.73)、宛先ポートはPostgresqlの外部接続ポートである5432番に設定します。
スクリーンショット 2023-10-25 12.29.57.png

以降は特に設定に変更はなので次にを選択しつづけ、最後に「エンドポイントの作成」を選択するとエンドポイントの作成が完了します。
スクリーンショット 2023-10-25 12.30.05.png
スクリーンショット 2023-10-25 12.30.17.png
スクリーンショット 2023-10-25 12.30.26.png

作成が完了するとConnector画面から作成したエンドポイントが確認できます(c-01.private.jp-tok.link.satellite.cloud.ibm.comの32780番ポート)。このエンドポイントとポートは後ほど使用するので記録しておきます。

スクリーンショット_2023-10-25_12_35_17.png

2-4. CP4Dプラットフォーム接続の作成

CP4DからPostgresqlのデータが見れるようにプラットフォーム接続を作成します。
CP4Dのホーム画面の左側のメニューから「データ」→「プラットフォーム接続」を選択します。
スクリーンショット_2023-10-27_17_09_08.png

「新規作成」ボタンから接続を作成します。
スクリーンショット_2023-10-27_17_10_48.png

接続先であるPostgresqlを選択します。
スクリーンショット_2023-10-27_17_11_20.png

以下接続の設定を行います。「名前」は接続の名前を任意につけます。
スクリーンショット 2023-10-27 17.23.47.png
「データベース」にデータベース名を任意に入力し、「ホスト名」はエンドポイントで作成したc-01.private.jp-tok.link.satellite.cloud.ibm.com、「ポート」はエンドポイントアドレスで確認した32780を指定します。
スクリーンショット 2023-10-28 1.42.17.png

「専用接続」でIBM Cloud Satelliteを選び、最初に作成したConnectorを選択し、「作成」ボタンをクリックしたら作成完了です。
スクリーンショット 2023-10-27 17.25.03.png

2-5. 接続テスト

Postgresqlへの接続をチェックします。作成した接続を選択し、「接続のテスト」を選択します。「テストが正常に終了しました」と表示されたら正しく接続が作成されています。
スクリーンショット 2023-10-26 10.50.33.png

2-6. データベースの確認

次に実際にデータベースの中身を確認するためにCP4Dのプロジェクトを作成します。CP4Dのホームから左側の「すべてのプロジェクトの表示」を選択します。

スクリーンショット_2023-10-29_19_13_35.png

右上の「新規プロジェクト」を選択し、空のプロジェクトを作成します。

スクリーンショット_2023-10-29_19_13_55.png

スクリーンショット_2023-10-29_19_51_36.png

作成できたらプロジェクトを開き、試算メニューから「新規資産」を選択します。

スクリーンショット_2023-10-29_19_54_41.png
接続を選択。

スクリーンショット_2023-10-29_19_54_52.png

プラットフォームから作成したコネクターを選択します。

スクリーンショット_2023-10-29_19_56_11.png

資産にコネクターが表示されました。次に「資産のインポート」を選択します。

スクリーンショット_2023-10-29_20_53_16.png

資産のインポートではデータベースの中からテーブルをインポートできます。今回はコネクターから「public」スキーマの「test_table」テーブルを選択します。

スクリーンショット_2023-10-29_20_49_09.png

スクリーンショット_2023-10-29_20_51_13.png

資産に先ほどのテーブルが追加されています。

スクリーンショット_2023-10-29_20_51_27.png

中身も確認することができます。

スクリーンショット_2023-10-29_20_51_37.png

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?