開發機在VPN環境打通雲端微服務集群的實戰技巧
今天分享一下我們是如何實現本地接入測試環境完成開發調試的實戰技巧!
作者:林凱
編輯:翟永超
背景
在實際開發過程中,許多的測試環境是部署在雲端的,本地開發機並不是直接網路打通,是通過VPN來連入。這樣當本地開發好一個微服務後,想加入這個測試環境的RPC集群,由於VPN不具備從雲端主動發起連接到本地機能力,就會發現雲端的調用發起微服務根本就無法找到本地開發機的IP!
如圖所示
解決思路
核心思路是通過一個跳板機長連接轉發雲端的請求到本地機,實現雲內網對本地機IP的主動訪問。更進一步,如果在微服務調用鏈加入tag路由能力,每個開發機單獨配置特別路由tag接入微服務集群,通過前端api調用中加入指定路由規則,實現為每個開發快速定製一個獨有測試環境,快速測試新開發功能,而不影響其他人使用測試環境。
期間需要解決的問題:
1,建立TCP長連接跳轉機制,要求簡單易操作,不需要運維每次手工綁定埠映射,經過實踐測試,我們選定SSH工具(原因,1,SSH服務是很常見服務,不需要特別的工具包安裝支持,2,開發能自助綁定,不需要運維協助)
2,需要把跳板機IP和埠註冊到註冊中心,並且通知測試環境調用方微服務,起到偽裝作用
解決方案如圖所示
前置條件
連入測試環境VPN,確保本地開發機能夠ping通跳板機
確保跳板機上安裝了ssh服務,並獲得用戶名密碼
測試環境使用dubbo或者spring cloud rpc集群進行服務發現
實際操作步驟
SSH開啟跳板機埠代理
連接測試環境VPN後,使用ssh讓跳板機10.20.20.20監聽12345埠(埠隨意,如果多個開發使用這個跳板機,建議協調好,不重複即可),訪問12345埠的數據會轉發到本地(127.0.0.1)的30300(dubbo服務埠) (如果是Spring Cloud項目,必須直接為跳板機監聽埠,比如12345,因為spring cloud本地提供服務的實際埠必須和註冊的埠一致,無法修改)
如果是dubbo rpc,則
密碼:XXXXX
如果是Spring Cloud,則
密碼:XXXXX
mac已經安裝了ssh,使用Windows同學請自行安裝ssh客戶端。如果已經有了gitbash,可以直接使用git bash命令行來ssh
偽裝跳板機埠成為微服務提供者
dubbo rpc偽裝辦法
利用dubbo註冊擴展機制,啟動時動態讀取參數指定的IP和埠來註冊zk。避免把本機的實際IP和埠註冊到ZK。這裡給出關鍵代碼:
啟動本地服務,啟動命令行里加上 把跳板機的ip和埠暴露給dubbo註冊中心
spring cloud rpc偽裝辦法
spring cloud比較簡單,原生支持了命令行配置服務註冊的IP地址的功能。
在本地啟動命令中,添加參數
THANK YOU
Powered by 永輝雲創技術
關注我們,共同進步
※Spring Cloud Contract 在永輝雲創的研發實踐
TAG:永輝雲創技術 |