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版服務時,可能會報無法解析網域名稱的問題。此時,您可以按照以下方案解析Flink作業所依賴服務的網域名稱:
您已有自建的DNS,並且Flink VPC能夠連通該自建DNS服務,且該自建DNS能夠正常解析網域名稱。
此時,您可以基於Realtime ComputeFlink版工作範本進行網域名稱解析。假如您的自建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說明如果您的自建DNS有多個IP,建議IP之間使用英文逗號(,)分隔。
單擊儲存更改。
在Realtime Compute開發控制台新增作業並運行。
如果還報UnknownHostException的錯誤,則意味著無法解析網域名稱,請聯絡我們。
在配置了自建DNS網域名稱解析後,出現作業頻繁failover, 且報錯資訊為JobManager heartbeat timeout。具體解決方案請參見報錯:JobManager heartbeat timeout。
您沒有自建的DNS或者Flink VPC無法與自建的DNS連通。
此時,您需要基於阿里雲雲解析PrivateZone進行網域名稱解析。假如您的Flink VPC為vpc-flinkxxxxxxx,Flink作業需要訪問的服務的網域名稱分別為aaa.test.com 127.0.0.1、bbb.test.com 127.0.0.2和ccc.test.com 127.0.0.3,操作步驟如下:
開通雲解析PrivateZone。詳情請參見開通PrivateZone
添加Zone,以Flink作業需要訪問服務的公用尾碼作為Zone名稱。詳情請參見添加Zone。
關聯Realtime ComputeFlink版的VPC。詳情請參見關聯/解關聯VPC
添加解析記錄至Zone。詳情請參見添加PrivateZone解析記錄。

在Realtime Compute開發控制台新增作業並運行或者停止後再啟動歷史作業 。
如果還報unknowhost錯誤,則意味著無法解析網域名稱,請聯絡我們。
與Kafka網路連通,但報錯timeout時可參見為什麼Flink和Kafka之間的網路是連通的,但是依然會有timeout expired while fetching topic metadata的報錯?。
報錯: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作業所依賴服務的網域名稱?。