**透過GCP的TCP Load Balancing訪問後端不同端口Services** === ###### tags: `GCP` ![](https://i.imgur.com/ZXnVQeN.png) ## GCP上的Load Balancing 在任何的架構中最常見的是最外層放一個Load Balancing,常見GCP的Load Balancing有以下幾種 :::info ●HTTP(S)Load Balancing ●TCP load Balancing ●UDP load Balancing ::: **我們的架構會是透過TCP load Balancing當外層,透過用戶訪問到後端不同端口的Services!!!** <style> .red { color: red; } </style> <span class="red">**架構示意圖如下**</span> ![](https://i.imgur.com/4GiNe1H.png) --- <style> .black { color: black; } </style> ### 首先建置需要資源如下 :::info <span class="black">●default VPC ●Compute Engine X1 ●TCP load Balancing ●instance-group</span> ::: #### **在asia-east1-b區域建立一台 e2-medium的VM 並安裝 NGINX** #### ![](https://i.imgur.com/wIfkAQV.png) ##### **開啟HTTP、HTTPS流量(需要先安裝NGINX,若是寫入開機的User Data安裝則可以不開啟)** ![](https://i.imgur.com/qgh27CC.png) ##### **透過console進行SSH連線進VM並安裝NGINX(若是自行建立的VPC需要在防火牆放行GCP的Console連線網段35.235.240.0/20),Lab環境已經安裝完成因此直接展示此畫面** ![](https://i.imgur.com/5577XwV.png) ##### **輸入以下指令從/var/www/底下複製預設HTML檔到新的資料夾** 1.先建立資料夾 ``` sudo mkdir /var/www/example ``` 2.複製預設的HTML至example內 ``` sudo cp /var/www/html/index.nginx-debian.html /var/www/example/ ``` 3.修改預設的HTML名稱 ``` sudo mv /var/www/example/index.nginx-debian.html /var/www/example/index.nginx-debian1.html ``` 4.檢查是否修改成功,輸出如下 ``` ls -la /var/www/example/ ``` ![](https://i.imgur.com/I7NihrK.png) 5.修改預設的HTML檔如下 ![](https://i.imgur.com/iNbwmXB.png) **NGINX上listen的config設置如下(預設配置檔比較多分兩張圖片顯示)** 444 Port ![](https://i.imgur.com/fZu6bA9.png) 455 Port ![](https://i.imgur.com/FuCX7dF.png) Config設置完成後,輸入以下指令重啟NGINX ``` sudo systemctl restart nginx ``` ##### **目前我們Lab的Service部分就已經部署完成** --- #### **建置Load Balancing都會需要一組Back end** #### 本次LAB的架構是back end只有一台VM,所以建立instance-group的時候選擇New unmanaged instance group ![](https://i.imgur.com/C4zdiij.png) #### **建置TCP Load Balancing** #### 為了LAB方便預設的NGINX 80 Port 並未取消listen,因此Health check就直接監聽80Port ![](https://i.imgur.com/rXnKnBO.png) #### **設置Domain DNS的A記錄指向Load Balancing的Public IP** #### ![](https://i.imgur.com/RlcQ6Xo.png) **目前LAB環境的部署已完成,因為是為了測試GCP的TCP Load Balancing能否使用不同Port回到Back end,因此大多都採取預設。(實際情況需要依照您的使用情境進行配置)** --- #### 測試訪問444 Port #### 可以獲取預設的HTML ![](https://i.imgur.com/yGx6lAW.png) #### 測試訪問455 Port #### 可以獲取自定義的HTML ![](https://i.imgur.com/s9NnZIQ.png) 由上面的訪問測試可以確認透過TCP Load Balancing來訪問到Back end不同Port的Servicer ---