當我們把系統部署在K8S(Kubernates)的環境中 需要設定對外PORT才能對外提供服務 對於這點, 我們只需要在需要開放的容器設定公開, 再選擇負載平衡器就可以了( ) 但你可能會發現 這樣產生的服務只有外部網路的IP, 如果被有心人士取得, 可能會造成資安的問題 所以我們會比較希望將不需要對外的服務利用內部網路做連結 然而這個GKE的介面, 卻沒辦法設定內部網路IP 好在, 這個問題還是可以解決的... 首先呢, 我們可以先進入我們想要設定服務的GKE叢集 點選連結 這裡使用GCP附送的免費Cloud Shell來做操作(類似免費的有限空間Linux) 照理說使用GCP的SDK應該也是可以在本地做, 不過感覺有點麻煩, 使用Cloud Shell應該比較簡單 但這個有使用時間的問題, 一周好像免費50小時?? 之前遇過一次, 不過忘了 點在Cloud Shell中執行 一開始需要授權, 點選授權, 接著就可以進入 其實這個指令是用來切換K8s的群集 以這條命令資料來說, 就是切換位於asia-southeast1-a區域, 專案xxxx的it-test群集 就改成自己需要的群集 顯示切換到it-test成功 輸入kubectl get pod 可以查看目前這個群集部署的系統 以這個部分來說, 水哥部署了一個nginx容器當作測試 那我們需要針對nginx開啟對外Port與IP才能提供服務 這裡可以看到已經開了兩個LoadBalancer, 分別是使用35.247.177.243與10.148.15.213做為External-IP對外服務 其中10.148.15.213為內部IP, 也就是我們這次想要實現的 而從介面的部分來看則是這樣 可以比較明顯的看到一個顯示外部負載平衡器, 一個則是顯示內部負載平衡器 然而, GKE的介面不允許建立內部的...這也讓我在這裡卡很久 那要怎麼做呢? 我們先刪除這兩個服務, 重新建立...
https://mshw.info/mshw/?p=26417
linux測試port 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
今天要來跟大家分享一個單一節點如何提高應用程式吞吐量與服務能力的方式
這個方式主要探討的是應用程式對於網路連線的 I/O 模型,試想一個常見的使用範例。
一個主要的 Process 會去聽取一個固定的 port number (ex port 80),並且通知後面眾多的 worker 來幫忙處理這些封包連線,而這些 worker 的工作就是處理連線。
整個架構中是一個 1 v.s N 的狀況, 一個負責 Listen ,N個負責處理連線內容
而今天要分享的則是想要讓架構變成 N v.s N 的狀況, 會有 N 個 Process, 每個 Process 配上一個 Worker。
而這 N個 process 同時共享一樣的 Port (ex, port 80)
這種情況下可以減少多個 worker 共享一個 listen socket 時的各種保護機制,取而代之的則是每個 listen socket 配上一個專屬的 worker 來處理。
要達成這樣的架構非常簡單,只要透過 SO_REUSEPORT 這個 socket option 告
訴 Kernel 當前這個 PORT 可以重複使用。
當封包送到 kernel 後則是由 kernel 幫你分配封包到所有使用相同地址的 Listen Socket (Process)
根據 nginx 官方文章的測試,這種架構下對於 RPS (Request per second) 有顯著的提升,有興趣的可以看看下列兩篇文章
參考文章:
- https://blog.cloudflare.com/the-sad-state-of-linux-socket-balancing/
- https://www.nginx.com/blog/socket-sharding-nginx-release-1-9-1/
linux測試port 在 哪裡好吃哪裡去:神秘的水原誠 Facebook 的最佳貼文
最近稍微接觸了一下所謂的K8s(Kubernetes) 這套Google設計用來管理容器(containerized)應用程式的開源系統 不過GCP(Google Cloud Platform)上面也有提供服務可以方便使用 只是對於部署docker容器的部分似乎就與使用linux建置時有點不同 後來發現其實好像也沒那麼難用, 在此做個紀錄先... 由於使用GCP部署時需要使用Git類的存儲空間 可以使用GCP自家的Cloud Source Repositories, GitHub與Bitbucket 比較之下水哥覺得Github比較方便, 所以建議是使用Github來部署程式碼 首先在Github建立帳號 登入後建立存放區, 已存在的話則不用! 建立後使用專用連結存取上下傳 下載Github客戶端 登入客戶端並選擇存放區 點右邊Show Explorer 可開啟檔案夾 放入需要更新的檔案就會自動跳出新的變更 左下角則是寫註解跟說明等, 確認後按Commit 第一次會跳選擇分支 選完分支後發佈 以後有新的更新 commit後右邊點push就可以 Github存放區重新整理就可以看到放上的檔案 接下來到GCP的管理介面部屬 依據需求選不同的存放區 這裡選Github dockerfile檔案名稱打錯會導致建立容器失敗, 小心不要打錯 下一步設定應用程式名稱與需要部署的叢集 建立需要一點時間, 需要稍等一下 過幾分鐘後就會跳轉到這裡 這代表POD已建立 如果我們要對外服務, 就需要點選公開 左側設定對外PORT, 右側則是容器使用PORT 如果要設定同一個, 就只要輸入左邊的就好 建立完成會產生service 外連資訊會顯示在下方 剛剛設定的外部內部對應PORT則會顯示在下方 若是照剛剛的設定就會呈現這樣, 而展示的nodejs-demo3則是設定了30999 所以測試時使用30999 測試連線...顯示ok! 花了不少時間才搞懂GCP上K8s的用法= = [ 35 more words ]
https://mshw.info/mshw/?p=22463
linux測試port 在 使用Linux nc 測試UDP有沒有通 的推薦與評價
測試 檢查UDP 有沒有通測試UDP 封包到有沒有通1nc -z -v -u <ip> ... How to Test Port [TCP/UDP] Connectivity from a Linux Server – The Geek Diary ... <看更多>
linux測試port 在 [請益] 測試特定Port能否穿過防火牆的方法- 看板MIS 的推薦與評價
驗證環境如下:
PC1─SW─RT1─SW─FW─SW─RT2─SW─PC2
作業系統如下
PC: Windows7 Pro
SW/RT: Cisco IOS
FW: Fortigate Forti OS 5.4
Fortigate上建立雙向NAT
相關policy的service都是設all全開
若我的理解沒錯,理論上所有port都能通過
但因客戶有使用一些不常見的port,保險起見上線前還是必須測試
偶爾碰到類似的情形,我會簡單用telnet ip port來進行測試
但這次環境中,對端並沒有伺服器或應用程式在監聽客戶所指定的port
我想確認帶特定port的封包能否穿過防火牆,完成end-to-end通訊,不知有無好方法呢?
比方說能簡單讓Windows PC或Cisco RT監聽特定port的作法等等
經驗不足還請各位前輩指教,謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 147.192.17.155
※ 文章網址: https://www.ptt.cc/bbs/MIS/M.1552046721.A.15C.html
在我的windows7環境上執行netcat不順利,輸入指令後跳出錯誤,無法順利使用
除錯過程中找到另一個能在windows上輕鬆監聽tcp/udp port的工具,叫Port Listener
執行Port Listener後用telnet連線,再用fortigate的diagnose sniffer packet指令
便可完整看到封包進出的全貌,達到我想做的測試
供參考:
https://geekflare.com/create-port-listener-in-windows-or-linux/
https://kb.fortinet.com/kb/documentLink.do?externalID=11186
... <看更多>