跳到主要內容

發表文章

目前顯示的是有「load-balancer」標籤的文章

Azure AKS Outbound 流量最佳化 - 為什麼選擇 NAT Gateway 而不是 Load Balancer

Azure AKS Outbound 流量最佳化 - 為什麼選擇 NAT Gateway 而不是 Load Balancer 前言 當部署 Azure Kubernetes Service (AKS) 叢集時,如何高效管理出站流量 (Outbound Traffic) 是影響系統穩定性、可擴展性和成本優化的關鍵因素。傳統上,AKS 會透過 Azure Load Balancer 來處理出站流量,但這種方式有諸多限制。因此,使用 Azure NAT Gateway 是更優秀的選擇。 為什麼 NAT Gateway 比 Load Balancer 更適合 AKS 出站流量? 1. 避免 SNAT Port 枯竭 當使用 Azure Load Balancer 作為 AKS 的出站流量處理方式時,會透過 Source Network Address Translation (SNAT) 來分配臨時埠 (Ephemeral Ports),但這些埠數量有限,對於高流量環境來說很容易 耗盡 (SNAT Exhaustion) 。 2. 提供固定的 Outbound IP,增強安全性 透過 NAT Gateway,AKS 叢集的所有出站流量都會透過 單一的靜態 Public IP ,使安全控管更加容易,可確保外部服務僅允許來自特定 IP 的請求。 3. 更佳的擴展性與效能 更高吞吐量: 支援高達 50 Gbps 的流量處理能力。 自動擴展: 無需手動調整,適用於動態擴展的 AKS 叢集。 4. 降低成本與簡化設定 使用 Azure Load Balancer 處理出站流量時,會產生額外的 SNAT 規則管理成本 ,且 Load Balancer 本身的收費也會隨著規模增加。相比之下, NAT Gateway 的計價方式更簡單。 Terraform 設定範例 - 如何在 AKS 上配置 NAT Gateway 1. 建立 NAT Gateway 的靜態 Public IP resource "azurerm_public_ip" "natg...

使用 Nginx Ingress Controller 進行 MQTT L4 負載均衡

使用 Nginx Ingress Controller 進行 MQTT L4 負載均衡 在 Kubernetes 中,當你希望為 MQTT (Message Queuing Telemetry Transport) 提供 L4 (Layer 4) 負載均衡 ,可以使用 Nginx Ingress Controller 來管理 TCP 流量 。由於 MQTT 運行在 TCP 層 ,並不適用於 HTTP/2,因此需要特別配置。 為什麼選擇 Nginx Ingress Controller? 支援 TCP 負載均衡 :可直接處理 MQTT 連線。 與 Kubernetes 無縫整合 :利用 ConfigMap 設定 TCP 服務。 可擴展與高可用性 :透過 Kubernetes 自動擴展。 支援 TLS 加密 :可進行安全通訊。 步驟 1:安裝並配置 Nginx Ingress Controller 首先,請確保你的 Kubernetes 叢集 已安裝 Nginx Ingress Controller ,這可以透過 Helm Chart 來快速安裝: helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx helm repo update helm install nginx-ingress ingress-nginx/ingress-nginx \ --set controller.publishService.enabled=true \ --set tcp.1883="default/mqtt-service:1883" 步驟 2:使用 ConfigMap 配置 TCP 負載均衡 由於 MQTT 使用 TCP ,我們需要定義 ConfigMap 來讓 Nginx Ingress Controller 處理 TCP 連線 。 apiVersion: v1 kind: ConfigMap metadata: name: tcp-services namespace: ingress-nginx data: "1883...

如何在AWS上建立可水平擴展的EC2群集, 使用AWS CLI

       Auto Scaling on AWS via AWS CLI 前言 以下的文章將帶著大家一步一步的在AWS雲上建立Auto Scaling Group做為可以自動水平擴展的EC2群集, 若文章有有什麼不清楚的地方, 歡迎各位在下方留言, 希望這篇教學能幫助到正在學習AWS的朋友們 大致上需要部屬在雲上的資源有 Security Group Launch Configuration Load Balancer Auto Scaling Group Security Group Security Group可以決定要開那些Port或是限制那些IP才可以訪問 因為建立Security Group時需要明確指定要建在哪個VPC上, 所以在開始建立Security Group前, 先執行以下的指令把目前可用的VPC Id輸出 vpcId=$(aws ec2 describe-vpcs | jq -r ".Vpcs[0].VpcId") 有了VPC Id後, 接下來才能開始建立Security Group __sgName='CliGroup123' sgGroupId=$(aws ec2 create-security-group \ --group-name $__sgName \ --description "My security group" \ --vpc-id $vpcId | jq -r ".GroupId") 最後做ingress來宣告網路的開口 aws ec2 authorize-security-group-ingress \ --group-id ${sgGroupId} \ --protocol tcp \ --port 5000 \ --cidr "0.0.0.0/0" Launch Configuration Launch Configuration是用來定義VM instance的種類, OS Image的種類以及套哪個Security Group, 使用哪支金鑰對, 網路要不要對外等等的配置資訊 __imgId=...