Realtime ComputeFlink版預設不具備訪問公網的能力,本文為您介紹如何進行公網訪問、跨VPC訪問、網域名稱解析以及網路連通性測試等相關的常見問題。
如何排除網路問題?
由於Realtime ComputeFlink版部署在Virtual Private Cloud下,在開通Flink工作空間時選擇了專用網路後,您將無法再更改。如果源端或目標端任意一個與目標Flink工作空間不在同一VPC下,會導致源端和目標端網路不通,資料無法讀寫。因此,如果您遇到資料無法讀寫的情況,可以按照以下步驟排查是否為網路問題:
-
檢查上下遊服務與Flink工作空間之間網路是否連通。您可以在Flink控制台測試網路連通性,具體請參見如何進行網路探測?。
Realtime ComputeFlink版預設僅支援訪問相同地區、相同VPC下的服務。如果有訪問跨VPC資源或者通過公網訪問的需求:
-
跨VPC訪問詳情請參見如何訪問跨VPC的其他服務?。
-
公網訪問可以使用阿里雲提供的NAT Gateway實現VPC網路和公網的連通,詳情請參見如何訪問公網?。
-
-
檢查上下遊服務中是否已配置了白名單,具體操作請參見如何設定白名單?。
-
如果還存在網路逾時的報錯,也可能是連線逾時導致的。需要在DDL的WITH參數中調大connect.timeout參數的取值,該參數的預設值是30秒。
如何進行網路探測?
Realtime ComputeFlink版支援網路探測能力,您可以在Flink開發控制台進行網路探測,具體步驟如下:
-
單擊目標工作空間操作列下的控制台。
-
單擊頂部導覽列右側的網路探測表徵圖。

-
通過輸入Endpoint或者IP地址的方式檢測Flink作業啟動並執行環境與您的上下遊系統是否連通。
重要輸入Endpoint時,請刪除後面的
:<port>,並將port放到網路探測的Port欄輸入。
報錯
connect timed out時,請確認訪問的網域名稱是否為公網或其他VPC。Realtime ComputeFlink版預設僅支援訪問相同VPC下的服務。如果有訪問跨VPC資源或者通過公網訪問的需求,請參見如何訪問跨VPC的其他服務?和如何訪問公網?。
如何擷取Hologres的Endpoint地址?
-
登入Hologres管理主控台,在執行個體列表頁面,單擊目標執行個體。
-
在執行個體詳情頁面的網路資訊地區可以擷取對應的Endpoint地址。
您可以根據網路的情況擷取對應的Endpoint地址。
網路類型
使用情境
指定VPC(推薦)
與指定的VPC連通的私人網路。
-
同一VPC(推薦):Hologres執行個體和Realtime ComputeFlink版工作空間在同一VPC下可直接連通。
-
不同VPC:Hologres執行個體和Realtime ComputeFlink版工作空間在不同的VPC下,要訪問跨VPC資源則需要進行網路設定,具體操作請參見跨VPC服務。
公網
公用網路,無網路訪問限制的情境,相較於內網在延遲方面存在不確定性。
您需要通過NAT Gateway實現VPC網路與公網互連,具體操作請參見配置公網訪問。
-
-
(可選)在Flink控制台測試網路連通性,具體操作可參見如何進行網路探測?。
如何訪問公網?
公網訪問相較於內網在延遲方面存在不確定性。如果業務情境對網路延遲和穩定性要求較高,建議優先選擇內網訪問。
阿里雲提供的NAT Gateway可以實現VPC網路與公網互連,以滿足Realtime ComputeFlink版需要訪問公網資料來源的需求,具體操作詳情請參見公網資料來源。
如何查看公網頻寬情況?
在使用公網讀取或寫入作業,作業各項指標都正常且作業沒有反壓的情況下,可以通過公網頻寬來排查是否是有瓶頸問題。操作步驟如下:
-
在Realtime ComputeFlink版控制台的工作空間詳情中擷取專用網路ID。
-
在專用網路控制台,單擊目標專用網路ID。
-
在資源管理裡,單擊公網NAT Gateway數字。
說明如果公網NAT Gateway數字為0,需要您建立公網NAT Gateway,具體操作詳情請參見公網 NAT Gateway。
-
單擊公網NAT Gateway執行個體ID。
-
在綁定的彈性公網頁簽,單擊執行個體名稱。
-
在頁面,單擊監控營運查看公網頻寬資訊。
如何訪問跨VPC的其他服務?
若其他服務處於規劃前期或可替換時,建議直接購買與Realtime ComputeFlink版相同VPC的服務;或者釋放當前Flink工作空間,重新開通一個與其他服務相同VPC的工作空間。
您可以根據實際的業務情況選擇合適的方式訪問跨VPC,具體方案選擇請參見跨VPC服務。
如何設定白名單?
通常,Realtime ComputeFlink版上下遊服務預設拒絕外部裝置的訪問。因此,您需要在目標服務的白名單中添加Flink工作空間配置的虛擬交換器的網段。操作步驟詳情如下:
-
在目標工作空間右側操作列,選擇。
-
在工作空間詳情對話方塊,查看工作空間虛擬交換器的網段資訊。

-
在您的目標上下遊服務白名單中,添加Flink工作空間虛擬交換器的網段。
例如,您要為雲資料庫RDS MySQL版資料庫設定白名單,您可以參見設定IP白名單。
說明-
如果您後續新增了虛擬交換器,也需要將新增虛擬交換器的網段添加至目標服務裝置的白名單中。
-
如果您的虛擬交換器和上下遊服務不在同一可用性區域,添加虛擬交換器網段至白名單後,網路可以連通。
-
如何解析Flink作業所依賴服務的網域名稱?
如果Flink作業依賴的上下遊服務使用網域名稱訪問,遷移至Realtime ComputeFlink版後可能出現網域名稱無法解析的問題。根據是否已有自建DNS,按以下方案選擇解析方式。
情境一:無自建DNS
情境二:已有自建DNS且能正常解析網域名稱
根據Flink工作空間綁定的VPC與自建DNS服務之間的網路連通情況,選擇對應方案。
VPC與自建DNS網路連通
-
方案一:使用Alibaba Cloud DNS轉寄(推薦)
通過Alibaba Cloud DNS的轉寄管理 功能,將解析請求轉寄至自建DNS。配置時注意以下事項:
-
建立出站終端節點時,出站VPC選擇Flink工作空間所綁定的VPC。建立轉寄規則時,生效範圍同樣選擇該VPC。
-
出站終端節點建立成功後,記錄所有出站流量源IP地址。在自建DNS所在網路的安全性群組中,將這些IP地址添加至入方向白名單,連接埠開放53。
-
-
方案二:通過工作範本配置DNS(僅限非JDK 11引擎)
如果引擎版本不包含
jdk-11,還可以在工作範本中配置DNS。假設自建DNS IP為192.168.0.1,操作步驟如下:-
單擊目標工作空間操作列下的控制台。
-
在組態管理頁面作業預設配置頁簽其他配置文字框,添加如下代碼。
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說明-
此方式僅適用於非JDK 11引擎,引擎版本包含
jdk-11時無法生效。 -
如果自建DNS有多個IP,IP之間使用英文逗號(,)分隔。
-
-
單擊儲存更改。
-
在Realtime Compute開發控制台新增作業並運行。
-
如果仍報UnknownHostException錯誤,表示網域名稱無法解析,請聯絡支援人員。
-
配置自建DNS網域名稱解析後出現作業頻繁failover,且報錯資訊為JobManager heartbeat timeout,請參見報錯:JobManager heartbeat timeout。
-
VPC與自建DNS網路不通
如何指定後端DNS解析固定為IPv4?
當作業訪問的後端服務網域名稱被解析為IPv6地址時,可能導致串連失敗。可通過JVM參數強制使用IPv4協議棧。
在其他配置中添加以下參數:
env.java.opts: '-Djava.net.preferIPv4Stack=true'
該參數支援兩種生效範圍:
-
單個作業:在作業營運頁面單擊目標作業,進入。詳情請參見運行參數配置。
-
工作空間全域:在中添加。
儲存配置後,重啟作業使配置生效。
報錯:JobManager heartbeat timeout
-
報錯詳情
在配置了自建DNS網域名稱解析後,出現作業頻繁failover, 且報錯資訊為JobManager heartbeat timeout。
-
報錯原因
可能是由於自建DNS的串連延遲大造成的。
-
解決方案
您需要在該作業中關閉對於TM的網域名稱解析,即配置
jobmanager.retrieve-taskmanager-hostname: false,該配置並不會影響作業通過網域名稱串連外部服務。配置方法請參見如何配置自訂的作業運行參數?。
為什麼Flink和Kafka之間的網路是連通的,但是依然會有timeout expired while fetching topic metadata的報錯?
Flink和Kafka之間的網路連通並不意味著能讀取資料,只有Kafka Broker在bootstrap過程中返回的叢集metadata中描述的Endpoint, 才可以連通Flink和Kafka,並讀取到Kafka的資料,詳情請參見Flink-cannot-connect-to-Kafka。檢查辦法為:
-
使用zkCli.sh或者zookeeper-shell.sh工具登入Kafka使用的Zookeeper。
-
執行
ls /brokers/ids命令列出所有的Kafka Broker ID。 -
使用
get /brokers/ids/{your_broker_id}命令查看Broker metadata資訊。Endpoint資訊顯示在listener_security_protocol_map中。
-
確認Flink是否可以連通該Endpoint。
如果該Endpoint中使用了網域名稱,請為Flink配置對應的網域名稱解析服務。網域名稱解析方法詳情請參見如何解析Flink作業所依賴服務的網域名稱?。