デフォルトでは、Realtime Compute for Apache Flink はパブリックインターネットにアクセスできません。このトピックでは、パブリックインターネットへのアクセス、VPC 間の接続、DNS 名前解決、およびネットワークテストに関するよくある質問 (FAQ) について説明します。
ネットワーク問題のトラブルシューティング
Realtime Compute for Apache Flink は特定の VPC 内にデプロイされ、この VPC はワークスペースのアクティベーション後に変更することはできません。ソースまたはシンクが異なるネットワーク環境にある場合、通信は失敗します。
ネットワーク関連の問題を診断および解決するには、次の手順に従ってください。
-
接続のテスト:Flink コンソールのネットワークプローブ機能を使用して、Flink ワークスペースとアップストリームまたはダウンストリームのサービス間の通信を検証してください。詳細については、「ネットワークプローブの実行」をご参照ください。
-
ネットワークアクセスの検証:デフォルトでは、Flink は同じリージョンおよび VPC 内のサービスにのみアクセスできます。
-
VPC 間のアクセス:詳細については、「VPC をまたいだサービスへのアクセス」をご参照ください。
-
パブリックインターネットへのアクセス:NAT ゲートウェイを使用して VPC をインターネットに接続します。詳細については、「インターネットへのアクセス」をご参照ください。
-
-
許可リストの設定:アップストリーム/ダウンストリームサービスのセキュリティグループまたはファイアウォールが、お使いの Flink ワークスペースからのトラフィックを許可していることを確認してください。詳細については、「アップストリームおよびダウンストリームサービスの許可リストの設定」をご参照ください。
-
接続設定の調整:ネットワーク設定が適切であるにもかかわらず、タイムアウトエラーが頻発する場合は、DDL ステートメントの
connect.timeoutオプションの値を大きくしてください。
ネットワークプローブの実行
Realtime Compute for Apache Flink は、接続テストのための組み込みネットワークプローブ機能を提供しています。手順は次のとおりです。
-
対象のワークスペースの[アクション]列で、[コンソール]をクリックします。
-
上部のナビゲーションバーの右上隅にある[ネットワーク検出] アイコンをクリックします。

-
サービスの エンドポイントまたは IP アドレスとポートを入力し、[検出] をクリックします。
重要[ホスト] にエンドポイントを入力する場合、
:<port>を削除し、[ポート] フィールドにポート番号を入力してください。
ネットワークプローブが "connect timed out" エラーを返した場合、Flink ワークスペースには対象のエンドポイントに到達するために必要なネットワーク権限がない可能性があります。デフォルトでは、Flink は同じ VPC 内のサービスにのみアクセスできます。対象のエンドポイントがパブリックインターネットアドレスでないこと、または別の VPC に配置されていないことを確認してください。VPC 間またはパブリックインターネットへのアクセスが必要な場合は、「VPC をまたいだサービスへのアクセス」および「インターネットへのアクセス」をご参照ください。
Hologres エンドポイントの取得
-
Hologres コンソールに移動します。Instances ページで、対象のインスタンスをクリックします。
-
Instance Details ページの Network Information セクションで、ご使用のネットワークトポロジに一致するエンドポイントを選択します:
ネットワークタイプ
ユースケース
[Dedicated VPC] (推奨)
特定の VPC に接続されたプライベートネットワーク。
-
同じ VPC (推奨):Hologres インスタンスと Flink ワークスペースが同じ VPC 内にある場合、直接通信できます。
-
異なる VPC:異なる VPC にある場合は、VPC 間のネットワークを設定してください。詳細については、「VPC をまたいだサービスへのアクセス」をご参照ください。
[Public Network]
アクセス制限のないパブリックネットワーク。VPC アクセスと比較してレイテンシーが高く、予測が困難になる場合があります。
詳細については、「インターネットへのアクセス」をご参照ください。
-
-
(オプション) Flink コンソールからネットワークプローブを実行して、接続を検証します。詳細については、「ネットワークプローブの実行」をご参照ください。
-
プローブ成功:エンドポイントは正しく、ネットワークは接続されています。
-
プローブ失敗:Hologres インスタンスと Flink ワークスペースが異なる VPC にあるか、またはパブリックインターネットへのアクセスが必要かどうかを確認してください。
-
インターネットへのアクセス
パブリックインターネットへのアクセスは、通常、内部の VPC 通信と比較してレイテンシーが高く、不安定になる傾向があります。厳格なレイテンシーと安定性が求められるワークロードでは、VPC ベースの接続を優先してください。
Alibaba Cloud の NAT ゲートウェイを使用して、VPC をパブリックインターネットに接続します。これにより、Flink ワークスペースはプライベートネットワークの外部でホストされているデータソースにアクセスできるようになります。詳細については、「パブリックデータソース」をご参照ください。
インターネット帯域幅の確認
ジョブのメトリクスが正常でバックプレッシャーもないにもかかわらず、スループットが期待値を下回る場合、インターネット帯域幅がボトルネックになっている可能性があります。
帯域幅の制限を診断するには、次の手順に従ってください。
-
Realtime Compute for Apache Flink コンソールで、[アクション] 列の [詳細] をクリックします。
-
[ワークスペース詳細] ダイアログで、[VPC ID] をメモします。
-
VPC コンソールに移動し、対象の VPC ID をクリックします。
-
VPC 詳細ページで、[リソース管理] タブを選択します。[インターネットへのアクセス] セクションで、[インターネット NAT ゲートウェイ] の下にある数字をクリックします。
説明0 は、インターネット NAT ゲートウェイインスタンスがまだないことを示します。
-
対象のインターネット NAT ゲートウェイ ID をクリックします。
-
「詳細」ページで、[関連付けられた EIP] タブに切り替え、EIP インスタンス ID をクリックします。
-
EIP インスタンスの詳細ページで、[モニタリングとO&M] タブを選択して帯域幅を表示します。
VPC をまたいだサービスへのアクセス
最適なパフォーマンスとネットワークの簡素化のために、サービスを Flink ワークスペースと同じ VPC 内にデプロイすることを推奨します。すでにリソースをデプロイしている場合は、次の点を考慮してください。
-
サービスのコロケーション:サービスが計画段階にある場合は、Flink ワークスペースと同じ VPC にプロビジョニングしてください。
-
ワークスペースの移行:可能であれば、現在の Flink ワークスペースを解放し、既存のサービスと同じ VPC 内に新しいワークスペースを作成してください。
-
VPC 間の接続:別の VPC に残す必要があるサービスについては、VPC 間のネットワークを設定してください。詳細については、「VPC の接続」をご参照ください。
アップストリームおよびダウンストリームサービスの許可リストの設定
通常、アップストリームおよびダウンストリームサービスは Flink からのアクセスを拒否します。Flink ワークスペース用に設定された vSwitch の CIDR ブロックを、各対象サービスの許可リストに追加してください。
-
対象のワークスペースの[操作]列で、[詳細]をクリックします。
-
[ワークスペース詳細] ダイアログボックスの [vSwitch] セクションで、vSwitch の [CIDR ブロック] を確認します。

-
vSwitch の CIDR ブロックを、対象のアップストリームまたはダウンストリームサービスの許可リストに追加します。
たとえば、ApsaraDB RDS for MySQL インスタンスの許可リストを設定するには、「RDS インスタンスの許可リストの設定」をご参照ください。
説明-
vSwitch のスケーリング:ワークスペースに vSwitch を追加する場合は、新しい vSwitch ごとに設定プロセスを繰り返してください。
-
ゾーン間の接続:vSwitch とアップストリーム/ダウンストリームサービスが異なるゾーンにある場合でも、vSwitch の CIDR ブロックをサービスの許可リストに追加することで接続を有効にできます。
-
Flink ジョブの依存関係におけるドメイン名の解決
ジョブがドメイン名で外部サービスを参照している場合、セルフマネージドクラスターから Realtime Compute for Apache Flink に移行する際に DNS 名前解決エラーが発生することがあります。これらの問題を解決するには、次の方法を使用してください。
-
方法 A:セルフマネージド DNS サーバーの使用
Flink VPC がセルフマネージド DNS サーバーに到達できる場合は、それを利用するように Flink ワークスペースを設定します。
-
対象のワークスペースの[操作]列で、[コンソール]をクリックします。
-
左側のナビゲーションペインで、 を選択します。 [デプロイメントデフォルト] タブで、[その他の設定] を探し、次のコードを追加します。
env.java.opts: >- -Dsun.net.spi.nameservice.provider.1=default -Dsun.net.spi.nameservice.provider.2=dns,sun -Dsun.net.spi.nameservice.nameservers=192.168.0.1(
192.168.0.1を実際の DNS サーバーの IP に置き換えてください。複数の IP はコンマで区切ります。) -
[変更を保存] をクリックします。
-
ジョブを再デプロイします。
説明-
エンジンの互換性:この設定は、JDK 11 ベースのエンジンではサポートされていません。
-
トラブルシューティング:
UnknownHostExceptionが解決しない場合は、Alibaba Cloud のテクニカルサポートにお問い合わせください。ジョブでJobManagerのハートビートタイムアウトが頻繁に発生する場合は、「エラー:JobManager のハートビートタイムアウト」をご参照ください。
-
-
方法 B:Alibaba Cloud DNS の使用
セルフマネージド DNS サーバーがない場合、または Flink VPC が既存の DNS サーバーに到達できない場合は、Alibaba Cloud DNS を使用してサービスドメイン名を解決してください。
DNS 名前解決での IPv4 使用の強制
バックエンドサービスのドメイン名が IPv6 アドレスに解決されると、接続に失敗することがあります。JVM パラメーターを追加して、IPv4 プロトコルスタックを強制的に使用することができます。
[Other Configuration] に次のパラメーターを追加します。
env.java.opts: '-Djava.net.preferIPv4Stack=true'
このパラメーターは、次の 2 つのレベルで適用できます。
-
ジョブごと: [O&M] ページで、対象のジョブをクリックして に移動します。詳細については、「パラメーター」をご参照ください。
-
ワークスペース全体: に移動します。
設定を保存し、ジョブを再起動して変更を有効にします。
エラー:JobManager のハートビートタイムアウト
-
現象
ドメイン解決のためにセルフマネージド DNS サーバーを設定した後、ジョブが
JobManager heartbeat timeoutエラーで頻繁にフェイルオーバーします。 -
原因
高い DNS レイテンシー:TaskManager とセルフマネージド DNS サーバー間のレイテンシーにより遅延が発生し、JobManager と TaskManager 間のハートビート信号が中断されます。
-
解決策
TaskManager のホスト名解決を無効にして、ハートビートチェック中の DNS ルックアップをバイパスします。ジョブ設定に
jobmanager.retrieve-taskmanager-hostname: falseを追加します。この設定は、ジョブがドメイン名で外部サービスに接続する機能には影響しません。詳細な手順については、「カスタム実行パラメーターの設定」をご参照ください。
ネットワークが接続されているにもかかわらず、Kafka がメタデータタイムアウトを返す理由
Flink と Kafka 間のネットワーク接続は、Flink が Kafka からデータを読み取れることを保証するものではありません。Flink は Kafka のブートストラップサーバーに接続してクラスターのメタデータを取得します。このメタデータには、各ブローカーのアドバタイズされたエンドポイントが含まれています。データを読み取るには、Flink がこれらのアドバタイズされたエンドポイントに到達できる必要があります。
最初のブートストラップ接続が成功したとしても、ブローカーのメタデータに含まれるアドバタイズされたエンドポイントに Flink VPC から到達できない場合、データ転送は失敗します。詳細については、「Kafka クライアントがブローカーに接続できない」をご参照ください。
この問題を診断するには、次の手順を実行してください。
-
zkCli.shまたはzookeeper-shell.shを使用して、Kafka が使用している ZooKeeper クラスターに接続します。 -
ls /brokers/idsを実行して、すべての Kafka ブローカー ID を一覧表示します。 -
get /brokers/ids/{your_broker_id}を実行して、ブローカーのメタデータを表示します。エンドポイント情報はlistener_security_protocol_mapフィールドにあります。 -
Flink がブローカーのメタデータに記載されているエンドポイントに到達できることを確認します。
エンドポイントがドメイン名を使用している場合は、Flink ワークスペースの DNS 名前解決を設定してください。詳細については、「Flink ジョブの依存関係におけるドメイン名の解決」をご参照ください。