日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

基于云原生網(wǎng)關(guān)實現(xiàn)WebSocket服務(wù)的轉(zhuǎn)發(fā)

WebSocket協(xié)議實現(xiàn)了客戶端與服務(wù)器間的持續(xù)、雙向通訊,確保了連接的持久性和低延遲。在Kubernetes集群外部訪問WebSocket服務(wù)時,云原生網(wǎng)關(guān)承擔(dān)了請求接收和轉(zhuǎn)發(fā)的角色,根據(jù)預(yù)定的路由規(guī)則將請求分發(fā)到相應(yīng)的后端服務(wù)。本文介紹了如何在容器服務(wù) Kubernetes 版集群部署WebSocket應(yīng)用,并通過云原生網(wǎng)關(guān)進(jìn)行流量轉(zhuǎn)發(fā)。

前提條件

步驟一:使用容器服務(wù)部署WebSocket應(yīng)用

應(yīng)用部署的具體操作,請參見創(chuàng)建無狀態(tài)工作負(fù)載Deployment

在本示例中,使用容器服務(wù)K8s原生的服務(wù)發(fā)現(xiàn)方式,即通過聲明式Service API資源將后端服務(wù)注冊到CoreDNS。示例中的后端服務(wù)提供了多個WebSocket接口,在容器服務(wù)ACK中應(yīng)用如下資源:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: sockbin
  name: sockbin-app
  namespace: default
spec:
  progressDeadlineSeconds: 600
  replicas: 2
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: sockbin
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: sockbin
    spec:
      containers:
        - image: therebelrobot/sockbin
          imagePullPolicy: Always
          name: sockbin
          ports:
            - containerPort: 4080
              protocol: TCP
          resources:
            limits:
              cpu: 500m
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: sockbin
  name: sockbin-service
  namespace: default
spec:
  ports:
    - name: http
      port: 4080
      protocol: TCP
      targetPort: 4080
  selector:
    app: sockbin
  sessionAffinity: None
  type: NodePort

步驟二:使用云原生網(wǎng)關(guān)作為WebSocket的路由分發(fā)

添加ACK集群作為網(wǎng)關(guān)的服務(wù)來源并添加Sockbin服務(wù)。

添加服務(wù)來源

  1. 登錄MSE管理控制臺,并在頂部菜單欄選擇地域。

  2. 在左側(cè)導(dǎo)航欄,選擇云原生網(wǎng)關(guān) > 網(wǎng)關(guān)列表,單擊目標(biāo)網(wǎng)關(guān)名稱。

  3. 在左側(cè)導(dǎo)航欄,選擇路由管理,然后選擇來源頁簽。

  4. 單擊創(chuàng)建來源并配置相關(guān)參數(shù),配置完成后單擊確定

    配置項

    描述

    來源類型

    選擇容器服務(wù)服務(wù)來源。

    ACK/ACK Serverless集群

    選擇后端服務(wù)所在的集群。

    監(jiān)聽K8s Ingress

    開啟監(jiān)聽Ingress配置后,云原生網(wǎng)關(guān)會自動監(jiān)聽Ingress資源的變化,并生效Ingress資源中域名、路由的相關(guān)配置。

    關(guān)閉監(jiān)聽Ingress配置后,云原生網(wǎng)關(guān)會放棄監(jiān)聽Ingress資源,同時,之前已監(jiān)聽的Ingress資源中域名、路由相關(guān)配置會失效。

    說明

    通過管控手動配置的域名、路由的相關(guān)配置的優(yōu)先級高于Ingress資源。

添加服務(wù)

  1. 登錄MSE管理控制臺,并在頂部菜單欄選擇地域。

  2. 在左側(cè)導(dǎo)航欄,選擇云原生網(wǎng)關(guān) > 網(wǎng)關(guān)列表,單擊目標(biāo)網(wǎng)關(guān)名稱。

  3. 在左側(cè)導(dǎo)航欄,選擇路由管理,然后選擇服務(wù)頁簽。

  4. 單擊創(chuàng)建服務(wù)并配置相關(guān)參數(shù),然后單擊確定

    配置項

    說明

    服務(wù)來源

    選擇容器服務(wù)

    命名空間

    選擇目標(biāo)集群的命名空間。

    服務(wù)列表

    在服務(wù)列表中選擇服務(wù)。

添加網(wǎng)關(guān)到Sockbin服務(wù)的路由

  1. 登錄MSE管理控制臺,并在頂部菜單欄選擇地域。

  2. 在左側(cè)導(dǎo)航欄,選擇云原生網(wǎng)關(guān) > 網(wǎng)關(guān)列表,單擊目標(biāo)網(wǎng)關(guān)名稱。

  3. 在左側(cè)導(dǎo)航欄,單擊路由管理,然后選擇路由頁簽。

  4. 單擊創(chuàng)建路由并配置相關(guān)參數(shù),然后單擊保存并發(fā)布

    配置項

    說明

    路由名稱

    設(shè)置為sockbin-route

    域名

    選擇默認(rèn)關(guān)聯(lián)域名*。

    路徑(Path)

    選擇匹配條件為前綴是,Path以/開頭。

    使用場景

    選擇使用場景為單服務(wù)

    后端服務(wù)

    選擇目標(biāo)服務(wù)以及服務(wù)端口

結(jié)果驗證

本文為您提供兩種方式來驗證WebSocket服務(wù)可用性。

方式一:通過Sockbin服務(wù)的界面直接進(jìn)行測試

  1. 登錄MSE管理控制臺,并在頂部菜單欄選擇地域。

  2. 在左側(cè)導(dǎo)航欄,選擇云原生網(wǎng)關(guān) > 網(wǎng)關(guān)列表,單擊目標(biāo)網(wǎng)關(guān)名稱。

  3. 在網(wǎng)關(guān)基本概覽頁面,找到網(wǎng)關(guān)入口頁簽,在綁定的SLB中找到公網(wǎng)入口地址,在瀏覽器中訪問入口地址。

    網(wǎng)關(guān)會根據(jù)WebSocket握手時攜帶的域名和Path進(jìn)行路由,即可得到Sockbin服務(wù)的界面。sockbin服務(wù)的界面

方式二:使用各種語言的WebSocket客戶端進(jìn)行測試

例如,使用Python的WebSocket客戶端來得到一個延遲1秒的服務(wù)端響應(yīng)。

#!/usr/bin/env python

import asyncio
import websockets

async def hello():
    async with websockets.connect("ws://ip_addr/delay/1000") as websocket:
        await websocket.send("Hello Test")
        text = await websocket.recv()
        print(text)

asyncio.run(hello())