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

開啟CNFS NAS計算端分布式緩存

CNFS文件存儲計算端分布式緩存可提供多鏈接訪問、元數(shù)據(jù)緩存、分布式數(shù)據(jù)緩存等加速能力,并提供端側(cè)性能監(jiān)控、QoS能力。本文介紹如何在ACK集群中開啟CNFS NAS計算端分布式緩存,并通過分布式緩存功能加速讀取數(shù)據(jù)。

索引

前提條件

  • 分布式緩存支持的操作系統(tǒng)為Alibaba Cloud Linux 2,內(nèi)核版本為v4.19.91-23至v4.19.91-26版本。

  • 已創(chuàng)建Kubernetes集群,Kubernetes版本為v1.20及以上,且存儲插件選擇為CSI。具體操作,請參見創(chuàng)建Kubernetes托管版集群。

  • CSI-Plugin和CSI-Provisioner組件版本不低于v1.22.11-abbb810e-aliyun。關(guān)于升級CSI-Plugin和CSI-Provisioner組件的操作,請參見安裝與升級CSI組件。

  • storage-operator組件版本不低于v1.22.86-041b094-aliyun。關(guān)于升級storage-operator組件的操作,請參見管理組件。

  • 已通過kubectl工具連接Kubernetes集群。具體操作,請參見獲取集群KubeConfig并通過kubectl工具連接集群。

分布式緩存關(guān)鍵性能指標(biāo)

指標(biāo)

測試場景

未開啟分布式緩存

開啟分布式緩存

元數(shù)據(jù)性能

100萬文件目錄遍歷耗時

18min

小于60s

創(chuàng)建寫入4 KB文件耗時

3000μs

小于200μs

重復(fù)讀取4 KB文件耗時

400μs

小于100μs

吞吐性能

單節(jié)點讀寫吞吐性能

200~500 MB/s

大于800 MB/s

綜合場景性能

5000張150 KB圖片解壓縮耗時

52s

約15s

構(gòu)建Redis項目耗時

27s

約21s

重要

本文以上表格提供的數(shù)據(jù)僅為理論值(參考值),實際數(shù)據(jù)以您的操作環(huán)境為準(zhǔn)。

  • 注解①:測試數(shù)據(jù)的ECS機(jī)型為ecs.hfg6.4xlarge,測試環(huán)境的差異可能導(dǎo)致性能數(shù)據(jù)有一定偏差。

  • 注解②:ECS網(wǎng)絡(luò)帶寬和NAS文件系統(tǒng)規(guī)格會影響單節(jié)點讀寫吞吐性能。

步驟一:使用分布式緩存掛載NAS文件系統(tǒng)

  1. 執(zhí)行以下命令,在集群中創(chuàng)建并部署csi-plugin的ConfigMap,安裝加速插件。

    cat <<EOF | kubectl apply -f -
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: csi-plugin
      namespace: kube-system
    data:
      cnfs-client-properties: |
        nas-efc=true
      nas-efc-cache: |
        enable=true
        container-number=3
        volume-type=memory
        volume-size=15Gi
      node-selector: |
        cache=true
    EOF

    參數(shù)

    說明

    cnfs-client-properties

    分布式緩存的緩存開關(guān)。當(dāng)配置cnfs-cache-properties. enable=true時,表示開啟分布式緩存。

    nfs-efc-cache.

    container-number

    當(dāng)開啟分布式緩存時需要配置。

    緩存的DaemonSet的容器數(shù)量,當(dāng)緩存有性能瓶頸時,可以增加容器數(shù)量。

    nfs-efc-cache.

    volume-type

    當(dāng)開啟分布式緩存時需要配置。

    緩存容器EmptyDir使用的介質(zhì)。

    • Disk:磁盤。

    • Memory:內(nèi)存。

    nfs-efc-cache.

    volume-size

    當(dāng)開啟分布式緩存時需要配置。表示緩存數(shù)據(jù)卷Volume的總大小,單位:GiB。

    cnfs-client-properties

    安裝分布式緩存的相關(guān)依賴,則需要配置cnfs-client-properties. enable=true。

    node-selector

    緩存的DaemonSet通過Label進(jìn)行調(diào)度,如果不配置,則所有節(jié)點都會部署緩存。

    重要
    • 使用磁盤和內(nèi)存時,會使用節(jié)點的數(shù)據(jù)盤和內(nèi)存資源,請確保不影響業(yè)務(wù)運(yùn)行。

    • 本示例部署了分布式緩存的DaemonSet,緩存中有3個Container,在緩存Pod容器內(nèi)每個Container掛載5 GiB的tmpfs卷,并且只調(diào)度到帶有cache=true標(biāo)簽的節(jié)點上。

    ConfigMap配置完成后,會根據(jù)已配置的ConfigMap自動部署緩存的DaemonSet以及Service。

  2. 執(zhí)行以下命令,重啟CSI-Plugin組件,安裝相關(guān)依賴。

    kubectl get pod -nkube-system -owide | grep csi-plugin | awk '{print $1}' | xargs kubectl -nkube-system delete pod
  3. 執(zhí)行以下命令,為CNFS的文件存儲開啟分布式緩存。

    創(chuàng)建一個CNFS托管NAS文件系統(tǒng),StatefulSet通過使用動態(tài)存儲卷的方式掛載分布式緩存,使用busybox鏡像,Pod啟動時會通過dd命令將1 G大小的文件寫入/data下面,1 G文件后續(xù)用于測試緩存是否生效。

    展開查看開啟分布式緩存使用的YAML文件

    cat << EOF | kubectl apply -f -
    apiVersion: storage.alibabacloud.com/v1beta1
    kind: ContainerNetworkFileSystem
    metadata:
      name: cnfs-nas-filesystem
    spec:
      description: "cnfs"
      type: nas
      reclaimPolicy: Retain
      parameters:
        filesystemType: standard
        storageType: Capacity
        protocolType: NFS
        encryptType: None
        enableTrashCan: "true"
        trashCanReservedDays: "5"
        useClient: "EFCClient" # 通過EFC客戶端使用分布式緩存進(jìn)行掛載。
    ---
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alibabacloud-cnfs-nas-sc
    mountOptions:
      - g_tier_EnableClusterCache=true              # 掛載時,分布式緩存使用緩存配置。
      - g_tier_EnableClusterCachePrefetch=true      # 掛載時,分布式緩存開啟預(yù)讀功能。
    parameters:
      volumeAs: subpath
      containerNetworkFileSystem: cnfs-nas-filesystem
      path: "/"
    provisioner: nasplugin.csi.alibabacloud.com
    reclaimPolicy: Retain
    allowVolumeExpansion: true
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: cnfs-nas-sts
      labels:
        app: busybox
    spec:
      serviceName: "busybox"
      replicas: 1
      selector:
        matchLabels:
          app: busybox
      template:
        metadata:
          labels:
            app: busybox
        spec:
          containers:
          - name: busybox
            image: busybox
            command: ["/bin/sh"]
            args: ["-c", "dd if=/dev/zero of=/data/1G.tmpfile bs=1G count=1;sleep 3600;"]
            volumeMounts:
            - mountPath: "/data"
              name: www
      volumeClaimTemplates:
      - metadata:
          name: www
        spec:
          accessModes: [ "ReadWriteOnce" ]
          storageClassName: "alibabacloud-cnfs-nas-sc"
          resources:
            requests:
              storage: 50Gi
    EOF
  4. 執(zhí)行以下命令,確認(rèn)分布式緩存是否掛載成功。

    kubectl exec cnfs-nas-sts-0   -- mount | grep /data

    預(yù)期輸出:

    xxx.cn-xxx.nas.aliyuncs.com:/nas-6b9d1397-6542-4410-816b-4dfd0633****:2fMaQdxU on /data type alifuse.aliyun-alinas-eac (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other)

    輸出顯示有掛載點,說明分布式緩存已掛載成功。

  5. 執(zhí)行以下命令,確認(rèn)分布式緩存的DaemonSet是否啟動。

    kubectl get ds/cnfs-cache-ds -n kube-system -owide

    預(yù)期輸出:

    NAME             DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE   CONTAINERS              IMAGES                                                         SELECTOR
    cnfs-cache-ds   3         3         3       3            3           <none>          19d   alinas-dadi-container   registry-vpc.cn-shenzhen.aliyuncs.com/acs/nas-cache:20220420   app=cnfs-cache-ds

    本示例的集群有3個節(jié)點,DaemonSet的3個Pod均處于可用狀態(tài),說明分布式緩存的DaemonSet已經(jīng)啟動完成。

  6. 執(zhí)行以下命令,確認(rèn)分布式緩存的Service是否實現(xiàn)服務(wù)發(fā)現(xiàn)。

    kubectl get ep cnfs-cache-ds-service  -n kube-system -owide

    預(yù)期輸出:

    NAME                     ENDPOINTS                                          AGE
    cnfs-cache-ds-service   10.19.1.130:6500,10.19.1.40:6500,10.19.1.66:6500   19d

    Service已經(jīng)發(fā)現(xiàn)后端緩存Pod對應(yīng)的EndPoints為10.19.1.130、10.19.1.40、10.19.1.66,端口為6500。

步驟二:測試緩存是否生效

  1. 執(zhí)行以下命令,將寫入到/data中的1 G的tmpfile文件復(fù)制到/下,查看耗時時間。

    kubectl exec cnfs-nas-sts-0 -- time cp /data/1G.tmpfile /

    預(yù)期輸出:

    real    0m 5.66s
    user    0m 0.00s
    sys     0m 0.75s

    可以看到:未開啟分布式緩存時,拷貝時間不變,保持約5s左右。

  2. 重復(fù)執(zhí)行以下命令,查看耗時。

    kubectl exec cnfs-nas-sts-0 -- time cp /data/1G.tmpfile /

    預(yù)期輸出:

    real    0m 0.79s
    user    0m 0.00s
    sys     0m 0.58s

    可以看到:對多次訪問的文件,拷貝讀加速提升了6~7倍。