クラウドベンダーをAWSに設定したデータソースまたはデータ移行タスクを作成する際、エンドポイント接続方式を選択した場合は、事前に設定が必要です。本記事ではその設定方法について説明します。
前提条件
該当するタイプのデータベースインスタンスを作成し、そのインスタンスのユーザーVPC内の接続アドレスを取得していること。例えば、MySQLインスタンスは通常 address:port の単一のアドレスペアであり、Kafkaインスタンスには複数のアドレスペア(broker_address1:broker_port1、broker_address2:broker_port2 など)が存在する場合があります。
Amazon MSKクラスタを作成し、キーを関連付けていること。詳細については、Amazon MSKクラスタにSASL/SCRAM認証を設定するを参照してください。
エンドポイントサービスに関連付けられたロードバランシングサービスや仮想サーバーなどのリソースでセキュリティグループの設定が有効になっている場合は、OceanBase Cloudデータソースが属するプライベートアドレスを対応するセキュリティグループに追加する必要があります。詳細については、プライベートアドレスのネットワークセグメント説明を参照してください。
用語説明
プライベートリンク:高可用性を備えた拡張可能な技術であり、VPCからサポートされているAWSサービスへのプライベートな接続をサポートします。独自の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コンソールにログインします。
**クラスタ**ページで、対象のクラスタ名をクリックして、クラスタの詳細ページに移動します。
クラスタ概要の右上隅にあるクライアント情報を表示をクリックします。
クライアント情報を表示ページで、**コピープライベートエンドポイントのコピーする**アイコンをクリックすると、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 actual 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インスタンスにログインし、以下のコマンドを実行します:
# Please 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アドレスページのIPアドレス**エリアで、各パラメータを設定します。
パラメータ説明ネットワークの選択 **ネットワーク**ドロップダウンリストから、MySQLデータベースインスタンスが存在するVPCを選択します。 指定IPとポートの定義 VPCサブネットのIPv4アドレスを入力テキストボックスに、データベースインスタンスのIPアドレスを入力します。 ポート 対応するポート番号を入力します。Kafkaインスタンスは対応するNginxポートを選択します。 以下の未処理事項を含むをクリックします。
ターゲットの登録ページのターゲットの確認エリアで、グループに含めるIPターゲットの設定が正しいことを確認した後、ターゲットグループを作成をクリックします。
ネットワークロードバランサーの作成
ネットワークロードバランサータイプのロードバランサーを作成します。
詳細については、ネットワークロードバランサーの作成を参照してください。
ネットワークロードバランサーの作成ページで、各パラメータを設定します。
以下のパラメータは本文の内容に基づいて設定する必要があります。その他のパラメータは必須ではありません。
モードエリアのベースモデルで内部を選択し、IPアドレスタイプでIPv4を選択する必要があります。
ネットワークマッピングエリアで、VPCドロップダウンリストからMySQLデータソースが存在するVPCを選択します。マッピングは通常すべて選択されていますが、実際の状況に応じて少なくとも1つのアベイラビリティゾーンと1つのサブネットを選択することもできます。
**セキュリティグループ**エリアでは、セキュリティグループを選択してネットワークロードバランサーに関連付けることができますが、ここではどのセキュリティグループも選択しないことをお勧めします。セキュリティグループの詳細については、ネットワークロードバランサーのセキュリティグループを参照してください。
説明
ネットワークロードバランサーにセキュリティグループを関連付けた場合、バックエンドのマウントポートへのアクセスを許可する必要があります。
Kafkaインスタンス用のネットワークロードバランサーを作成する際は、セキュリティグループを選択しないでください。
リスナーとルーティング セクションの各パラメータの設定は以下のとおりです。
パラメータ説明プロトコル リスナープロトコル。TCPを選択します。 ポート 対応するポート番号を選択します。 デフォルト操作 ドロップダウンリストから、Target Group作成ステップで作成したターゲットグループを選択します。
作成が成功すると、ロードバランサーページに戻り、作成したネットワークロードバランサーを選択します。
操作 ページの右上にある 操作 > ロードバランサーの属性を編集 をクリックします。
ロードバランサーの属性を編集 ページの ロードバランサーのターゲット選択ポリシー セクションで、リージョン間ロードバランシングを有効化 を選択し、変更を保存 をクリックします。
エンドポイントサービスの作成
AWSコンソールのエンドポイントサービスページにログインします。
ページの右上にある エンドポイントサービスの作成 をクリックします。
エンドポイントサービスの作成 ページで、各パラメータを設定します。
パラメータ説明名前 エンドポイントサービスの名前をカスタマイズしてください。 ロードバランサータイプ ネットワーク を選択します。 利用可能なロードバランサー ネットワークロードバランサーの作成 ステップで作成したLoad Balancerを選択します。
説明
ページに表示されない場合は、Load Balancerの状態がActiveになるまで待ってから、ページを更新して選択してください。その他の設定 セクションで、各パラメータを設定します。
パラメータ説明エンドポイントの使用を受け入れる必要があります(オプション) サービスユーザーからのリクエストを人手で再度処理する必要があるかどうか。 - 受け入れる必要があります にチェックが付いている場合、データ移行サービスがプライベート接続に初めてアクセスする際、AWSコンソールにアクセスし、受信したエンドポイント接続リクエストに対して エンドポイント接続リクエストを受け入れる 操作を行うよう促されます。
- 受け入れる必要があります にチェックが付いていない場合、データ移行サービスがプライベート接続に初めてアクセスする際、プロンプトは表示されません。
プライベートDNS名を有効化 ここでは個人のドメイン名を有効化しないでください。 サポートされているIPアドレスタイプ IPv4を選択します。 作成する をクリックして、エンドポイントサービスの作成を完了します。
作成したエンドポイントサービスにアクセスするアカウントに権限を付与します。
エンドポイントサービス ページで、作成したエンドポイントサービスを選択します。
ページ下部の 委任者を許可 タブをクリックします。
委任者を許可 タブの右上にある 委任者を許可 をクリックします。
データソースまたはデータ移行タスクに権限が必要なアカウントを取得します。
OceanBase Cloudコンソールのデータソースまたはデータ移行タスク作成ページで、接続タイプ を エンドポイント に選択し、ページに表示された認可が必要なアカウント(形式:
arn:aws:iam::aws-account-id:<type>/<id>)をコピーします。データソースの作成方法の詳細については、データソースの作成を参照してください。タスクの作成方法の詳細については、データ移行モジュールの対応するタイプのデータ移行タスク作成ドキュメントを参照してください。委任者の許可 ページの 追加する委任者 項目に、認可が必要なアカウントを入力し、委任者の許可 をクリックします。
認可が完了すると、作成したエンドポイントサービスは認可されたアカウントから参照できるようになります。
エンドポイントサービスの使用
エンドポイントサービスを作成した後、サービス名 をコピーし、新規データソースまたはデータ移行タスク作成ページの AWS > エンドポイント > 接続情報 に入力します。新規データソースの詳細については、データソースの作成を参照してください。新規タスクの詳細については、データ移行モジュールの該当タイプの新規データ移行タスクドキュメントを参照してください。
サービス名をコピーする手順は以下のとおりです:
AWSコンソールのエンドポイントサービスページにログインします。
対象のエンドポイントサービスを選択します。
ページ下部の 詳細な情報 領域で、サービス名 のコピーアイコンをクリックします。