クラウドベンダーをAWSとしてデータソースまたはデータ移行タスクを作成する際に、エンドポイントの接続方式を選択した場合は、事前に設定が必要です。本記事では、その設定方法について説明します。
前提条件
対応するタイプのデータベースインスタンスを作成し、そのインスタンスのユーザーVPC内の接続アドレスを取得していること。例えば、MySQLインスタンスは通常 address:port の単一アドレスであり、Kafkaインスタンスには複数のアドレスペア(broker_address1:broker_port1、broker_address2:broker_port2 など)が存在する場合があります。
Amazon MSKクラスタを作成し、キーを関連付けていること。詳細については、Amazon MSKクラスタにSASL/SCRAM認証を設定するを参照してください。
エンドポイントサービスに関連付けられたロードバランシングサービスや仮想サーバーなどのリソースでセキュリティグループの設定が有効になっている場合は、OceanBase Cloudデータソースが属するプライベートネットワークアドレスを対応するセキュリティグループに追加する必要があります。詳細については、プライベートネットワークアドレスのサブネット説明を参照してください。
用語説明
AWS PrivateLink:高可用性を備えた拡張可能な技術で、サポートされているAWSサービスへのVPCからのプライベートな接続を提供します。AWS PrivateLinkがサポートするVPCエンドポイントサービスを作成することで、他のサービスからのアクセスを許可できます。
ターゲットグループ:ネットワークロードバランサーのターゲットグループであり、1つまたは複数の登録済みターゲットへのリクエストルーティングに使用されます。
ネットワークロードバランサー:ターゲットグループ作成時に指定したプロトコルとポート番号を使用し、サービス利用者から受信したリクエストをサービスへルーティングします。
エンドポイントサービス:VPC内の独自のアプリケーションまたはサービスです。他のAWSプリンシパルは、自身のVPCからお客様のエンドポイントサービスへのエンドポイントを作成できます。AWSプライベート接続を使用する必要がある場合は、VPCでサービス用のVPCエンドポイントを作成してください。
インスタンスのIPアドレスの取得
MySQLデータベースインスタンスのタイプには、Aurora MySQL、RDS MySQL、およびセルフマネージド MySQLが含まれます。
Oracleデータベースインスタンスのタイプには、RDS Oracleとセルフマネージド Oracleが含まれます。
OceanBaseデータベースインスタンスのタイプには、クラスタインスタンス(トランザクション型)、クラスタインスタンス(フラッグシップ版)、テナントインスタンス、クラスタインスタンス(分析型)、およびセルフマネージドデータベースが含まれます。本記事ではセルフマネージドデータベースのIPアドレスの取得方法のみを紹介します。実際の状況に応じて、該当するタイプのIPアドレスを取得してください。
Kafkaインスタンスのタイプには、クラウドインスタンスKafkaとセルフマネージド Kafkaが含まれます。
PostgreSQLデータベースインスタンスのタイプには、Aurora PostgreSQL、RDS PostgreSQL、およびセルフマネージド PostgreSQLが含まれます。
TiDBデータベースインスタンスのタイプは現在、セルフマネージド TiDBのみをサポートしています。
Aurora MySQL/PostgreSQLインスタンスのIPアドレスの取得
Amazon RDSコンソールのDatabasesページにログインします。
対象のAurora MySQL/PostgreSQLデータベースインスタンス名をクリックし、接続とセキュリティタブで、エンドポイント名をコピーします。
Aurora MySQL/PostgreSQLデータベースインスタンスがパブリックアクセスを許可している場合、パブリックネットワークに接続可能な任意のデバイスで以下のコマンドを実行して、インスタンスのIPアドレスを取得できます。
// Replace the domain name example.example-region.rds.amazonaws.com with the endpoint name you copied in the previous step. nslookup <example.example-region.rds.amazonaws.com>実行結果の例は次のとおりです。
// ... Name: example.example-region.rds.amazonaws.com Address: xxx.xxx.xxx.1 //...Network Interfacesコンソールにログインし、前の手順で取得したパブリックIPアドレスを検索ボックスで検索して、対応するプライベートIPv4アドレスを見つけます。
取得したプライベートIPv4アドレスをコピーします。このアドレスはターゲットグループの作成ステップで使用されます。
RDS MySQL/Oracle/PostgreSQLインスタンスのIPアドレスを取得する
Amazon RDSコンソールのDatabasesページにログインします。
対象のRDS MySQL/Oracle/PostgreSQLデータベースインスタンス名をクリックし、接続とセキュリティタブで、**エンドポイント**をコピーします。
RDS MySQL/Oracle/PostgreSQLデータベースインスタンスがパブリックアクセスを許可している場合は、パブリックネットワークに接続可能な任意のデバイスで以下のコマンドを実行し、インスタンスのIPアドレスを取得できます。
// Replace the domain name example.example-region.rds.amazonaws.com with the endpoint name you copied in the previous step. nslookup <example.example-region.rds.amazonaws.com>実行結果の例は次のとおりです。
// ... Name: example.example-region.rds.amazonaws.com Address: xxx.xxx.xxx.1 //...Network Interfacesコンソールにログインし、前の手順で取得したパブリックIPアドレスを検索ボックスで検索して、対応するプライベートIPv4アドレスを見つけます。
取得したプライベートIPv4アドレスをコピーします。このアドレスはターゲットグループの作成ステップで使用されます。
Kafka接続情報を取得し、Nginxを設定する
Amazon MSKコンソールにログインします。
**クラスタ**ページで、対象クラスタ名をクリックしてクラスタの詳細ページに移動します。
クラスタ概要の右上隅にあるクライアント情報を表示をクリックします。
クライアント情報を表示ページで、SASL/SCRAMプライベートエンドポイントの**コピー**アイコンをクリックすると、Kafka接続情報を取得できます。
EC2 Instance Connectを使用してインスタンスに接続します。
以下のコマンドを実行してNginxをインストールします。
amazon-linux-extras install nginx1 yum install nginx-mod-stream/etc/nginx/nginx.conf設定を変更します。load_module '/usr/lib64/nginx/modules/ngx_stream_module.so'; user nginx; worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } stream { # Each server corresponds to a Kafka Bootstrap Server connection address. server { listen 19092; proxy_pass b-2.omskafkaxxxx.vqn998.c11.kafka.us-east-1.amazonaws.com:9096; proxy_timeout 60s; } server { listen 19093; proxy_pass b-1.omskafkaxxxx.vqn998.c11.kafka.us-east-1.amazonaws.com:9096; proxy_timeout 60s; } }説明
Nginxは
ngx_stream_moduleをサポートしている必要があります。Nginxの
proxy_timeoutを60秒以上に設定することを推奨します。
設定を変更した後、Nginxを起動します。
systemctl enable nginx systemctl start nginx
セルフマネージド MySQL/Oracle/OceanBase/PostgreSQL/TiDBインスタンスのIPアドレスを取得する
EC2コンソールのインスタンスページにログインします。
**インスタンスページで、作成したセルフマネージドデータベースインスタンスのインスタンスID**をクリックします。
インスタンスの詳細ページで、取得したプライベートIPv4アドレスをコピーします。このアドレスはターゲットグループの作成手順で使用されます。
セルフマネージド RocketMQインスタンスの接続情報を取得する
エンドポイントサービス情報の設定については、末尾のエンドポイントサービスの使用を参照してください。
EC2コンソールのインスタンスページにログインします。
NameServer設定のRocketMQアクセスポイントを取得します。
SSHを使用して、NameServerがデプロイされているEC2インスタンスにログインし、以下のコマンドを実行します:
# Obtain the Private IPv4 Address of the Local Host hostname -I | awk '{print $1}' # Check the real listening port of the NameServer process (usually 9876 by default). sudo netstat -tulnp | grep namesrv実行結果から、ローカルホストのプライベートIPとNameServerのリスニングポートを取得します。
# Example of IP address response: xx.xx.xx.xx # Port listening response example: tcp6 0 0 :::9876 :::*
BrokerのRocketMQアクセスポイントを取得します。
SSHを使用して、BrokerがデプロイされているEC2インスタンスにログインし、以下のコマンドを実行します:
# Replace the path with the actual location of your broker.conf file. cat /path/to/rocketmq/conf/broker.conf | grep -E "^brokerIP1|^listenPort"実行結果から、Broker設定の実際のIPとリスニングポートを取得します。設定ファイルにlistenPortがない場合、RocketMQはデフォルトでポート10911を使用します。
brokerIP1=xx.xx.xx.xx listenPort=10911
ターゲットグループの作成
AWSコンソールのターゲットグループページにログインします。
ページの右上隅にあるターゲットグループの作成をクリックします。
グループ詳細の指定ページで、各パラメータを設定します。
パラメータ説明ターゲットタイプの選択 **IPアドレス**を選択します。 ターゲットグループ名 命名規則に従って、ターゲットグループの名前をカスタマイズしてください。 プロトコル TCPを選択します。 ポート 対応するポート番号を入力します。Kafkaインスタンスは対応するNginxポートを選択します。 IPアドレスタイプ IPv4を選択します。 **次のステップ**をクリックします。
ターゲットの登録ページの**IPアドレス**エリアで、各パラメータを設定します。
パラメータ説明ネットワークの選択 **ネットワーク**ドロップダウンリストから、MySQLデータベースインスタンスが存在するVPCを選択します。 IPの指定とポートの定義 VPCサブネットのIPv4アドレスを入力テキストボックスに、データベースインスタンスのIPアドレスを入力します。 ポート 対応するポート番号を入力します。Kafkaインスタンスは対応するNginxポートを選択します。 以下の未処理事項を含むをクリックします。
ターゲットの登録ページのターゲットの表示エリアで、グループに含めるIPターゲットの設定が正しいことを確認した後、ターゲットグループの作成をクリックします。
ネットワークロードバランサーの作成
ネットワークロードバランサータイプのロードバランサーを作成します。
詳細については、ネットワークロードバランサーの作成を参照してください。
ネットワークロードバランサーの作成ページで、各パラメータを設定します。
以下のパラメータは本記事の内容に基づいて設定する必要があります。その他のパラメータは必須ではありません。
ベースモデルエリアのモード部分で、モードを内部に、IPアドレスタイプをIPv4に設定します。
ネットワークマッピングエリアで、VPCドロップダウンリストからMySQLデータソースが存在するVPCを選択します。マッピングは通常すべて選択されていますが、実際の状況に応じて少なくとも1つのアベイラビリティゾーンと1つのサブネットを選択することもできます。
**セキュリティグループ**エリアでは、セキュリティグループを選択してネットワークロードバランサーに関連付けることができますが、ここでは任意のセキュリティグループを選択しないことを推奨します。セキュリティグループの詳細については、ネットワークロードバランサーのセキュリティグループを参照してください。
説明
ネットワークロードバランサーにセキュリティグループを関連付けた場合は、バックエンドのマウントポートへのアクセスを許可する必要があります。
Kafkaインスタンス用のネットワークロードバランサーを作成する際は、セキュリティグループを選択しないでください。
リスナーとルーティング セクションの各パラメータの設定は以下のとおりです。
パラメータ説明プロトコル リスナープロトコル。TCPを選択します。 ポート 対応するポート番号を選択します。 デフォルト操作 ドロップダウンリストから、Create Target Groupステップで作成したターゲットグループを選択します。
作成が成功すると、ロードバランサーページに戻り、作成したネットワークロードバランサーを選択します。
ロードバランサーページの右上隅にある 操作 > ロードバランサーの属性を編集 をクリックします。
ロードバランサーの属性を編集 ページの ロードバランサーのターゲット選択ポリシー セクションで、クロスリージョンロードバランシングを有効にする を選択し、変更を保存 をクリックします。
エンドポイントサービスの作成
AWSコンソールのエンドポイントサービスページにログインします。
ページの右上隅にある エンドポイントサービスの作成 をクリックします。
エンドポイントサービスの作成 ページで、各パラメータを設定します。
パラメータ説明名前 エンドポイントサービスの名前をカスタマイズしてください。 ロードバランサータイプ **ネットワーク**を選択します。 利用可能なロードバランサー ネットワークロードバランサーの作成 ステップで作成したLoad Balancerを選択します。
説明
ページに表示されない場合は、Load Balancerの状態がActiveになるまで待ってから、ページを更新して選択してください。その他の設定 セクションで、各パラメータを設定します。
パラメータ説明エンドポイントの使用を許可する必要がありますか(オプション) サービス利用者からのリクエストが人手による二次処理を必要とするかどうか。 - 受け入れる必要がありますにチェックがある場合、データ移行サービスがプライベートリンクに初めてアクセスする際、AWSコンソールにアクセスし、受信したエンドポイント接続リクエストに対して エンドポイント接続リクエストを受け入れる 操作を行うよう促されます。
- 受け入れる必要がありますにチェックがない場合、データ移行サービスがプライベートリンクに初めてアクセスする際、プロンプトは表示されません。
プライベートDNS名を有効にする ここでは個人のドメイン名を有効にしないでください。 サポートされているIPアドレスタイプ IPv4を選択します。 作成する をクリックし、エンドポイントサービスの作成を完了します。
作成したエンドポイントサービスにアクセスするアカウントに権限を付与します。
エンドポイントサービス ページで、作成したエンドポイントサービスを選択します。
ページ下部の 委任者を許可 タブをクリックします。
委任者を許可 タブの右上隅にある 委任者を許可 をクリックします。
データソースまたはデータ移行タスクに権限を付与する必要があるアカウントを取得します。
OceanBase Cloudコンソールのデータソースまたはデータ移行タスク作成ページで、**接続タイプをエンドポイント**に選択し、ページに表示された認可が必要なアカウント(形式:
arn:aws:iam::aws-account-id:<type>/<id>)をコピーします。データソースの作成方法については、データソースの作成を参照してください。タスクの作成方法については、データ移行モジュールの対応するタイプのデータ移行タスクドキュメントを参照してください。委任者を許可するタブで、委任者を許可するをクリックします。追加する委任者に委任者のARNを入力し、委任者を許可するをクリックします。
認可が完了すると、作成したエンドポイントサービスは認可されたアカウントから参照できるようになります。
エンドポイントサービスの使用
エンドポイントサービスを作成した後、サービス名 をコピーし、新規データソースまたはデータ移行タスクの作成ページにある AWS > エンドポイント > 接続情報 に入力します。新規データソースの詳細については、データソースの作成を参照してください。新規タスクの詳細については、データ移行モジュールの対応するタイプの新規データ移行タスクドキュメントを参照してください。
サービス名をコピーする手順は以下のとおりです:
AWSコンソールのエンドポイントサービスページにログインします。
対象のエンドポイントサービスを選択します。
ページ下部の 詳細な情報 領域で、サービス名 のコピーアイコンをクリックします。