SMF ローリング ソフトウェアの更新

機能の概要と変更履歴

要約データ

表 1. 要約データ

該当製品または機能エリア

SMF

該当プラットフォーム

SMI

機能のデフォルト設定

N/A

このリリースでの関連する変更点

N/A

関連資料

該当なし

更新履歴

表 2. マニュアルの変更履歴
改訂の詳細 リリース

Diameter Gx、Gy、および GZ(GTP-Prime) のサポートを追加

2023.02.0

最初の導入。

2020.02.0 より前

機能説明

Cisco SMF は、プロトコル、サービス、セッション階層で構成される 3 層アーキテクチャで構成されています。各階層には、特定の機能に対する一連のマイクロサービス(ポッド)が含まれます。これらの階層内には、Kubernetes(K8s)マスター ノードとワーカー ノード(運用および管理ノードを含む)で構成される Kubernetes クラスタが存在します。

高可用性と耐障害性を確保するために、各階層に最低 2 つの K8s ワーカーノードが必要とされています。ワーカー ノードごとに複数のレプリカを設定できます。Kubernetes は、StatefulSets コントローラを使用してポッドをオーケストレーションします。ポッドには、耐障害性のために少なくとも 2 つのレプリカが必要です。

図 1. SMF アーキテクチャ

SMF K8s クラスタには 12 のノードが含まれます:

  • 3 つのマスター ノード。

  • 3 つの運用および管理(OAM)ワーカー ノード。

    OAM ワーカー ノードは、構成管理用の Ops Center ポッドと、統計および重要業績評価指標(KPI)用のメトリック ポッドをホストします。

  • 2 つのプロトコル ワーカー ノード。

    プロトコル ワーカー ノードは、サービスベースのインターフェイス(N11、N7、N10、N40、NRF)、UDP ベースのプロトコル インターフェイス(N4, S5/S8, RADIUSおよび TCP ベース インターフェイス Diameter(Gx/Gy)と GTPP(Gz)に対応する SMF プロトコル関連ポッドをホストします。

  • 2 つのサービス ワーカー ノード。

    サービス ワーカー ノードは、セッション管理処理を実行する SMF アプリケーション関連ポッドをホストします。

  • 2 つのセッション(データ ストア)ワーカー ノード。

    セッション ワーカー ノードは、サブスクライバのセッション データを保存するデータベース関連ポッドをホストします。

SMFを更新しています

ここでは、SMF ソフトウェアの更新に関連する手順について説明します。

SMI Cluster Manager を使用したローリング ソフトウェアの更新

ローリング ソフトウェア アップグレードとは、アプリケーション ポッドの所定の展開セットに対して、ビルドを古いバージョンから新しいバージョンにアップグレードまたは移行したり、パッチをアップグレードしたりするプロセスです。


(注)  


2021.02 リリースは、非 HA 展開でのローリングアップグレードまたはインサービス アップグレードをサポートしていません。非 HA 展開でリリース 2021.02 にアップグレードするには、Ops センターから新しい SMF 展開を実行する必要があります。

新規展開が完了したら、すべての Geo 冗長(GR)インスタンス対応構成の変更が使用可能であることを確認します。また、 k8s volume-claims true コマンドを介して etcd persistence が有効になっている場合は、etcd エントリを必ずクリーンアップしてください。クリーンアップ操作には、 kubectl exec -it etcd- <namespace> -etcd-cluster-0 -n cn-cn1 -- etcdctl del --prefix ""コマンドを実行します。


SMF ソフトウェアのlぴ祖㎜またはインサービスの更新手順では、K8s ローリング戦略を利用してポッド イメージを更新します。K8s ローリング更新戦略では、進行中のプロセスが影響を受けないように、StatefulSet のポッドが順次更新されます。最初に、StatefulSet のローリング更新により、単一のポッド インスタンスが終了します。終了したポッドは、更新されたイメージを持つポッドに置き換えられます。このプロセスは、StatefulSet のすべての複製が更新されるまで続行されます。終了ポッドは、進行中のすべてのプロセスを終了した後、正常に終了します。他のインサービス ポッドは、シームレスなソフトウェアの更新を提供するために、トラフィックを受信して処理し続けます。ソフトウェア更新 プロセスは、Ops Center CLI を使用して制御できます。


(注)  


高可用性を実現するには、各ポッドに少なくとも 2 つのポッドが必要です。最悪の場合、ソフトウェアの更新が進行中のときにポッドの処理キャパシティが 50% まで低下することがあります。


次の図は、プロトコル ワーカー ノード上の SMF REST エンドポイント ポッド(2 つのレプリカ)と、サービス ワーカー ノード上の SMF サービス ポッド(3 つのレプリカ)に対する SMF ローリング更新を示しています。

図 2. SMF ローリング更新

重要


ETCD v3.5.x は、3.4.x へのインサービス ダウングレードをサポートしていません。2023.04.0 ビルドから以前のリリースにダウングレードしている場合。ダウングレードの前にシステム モード シャットダウンを実行します。


前提条件

SMF のアップグレードのための前提条件は以下の通りです:

  • ポッドを含むすべてのノードがアクティブです。

  • SMF ソフトウェアのパッチ バージョン。


    (注)  


    メジャー バージョンではローリング アップグレードはサポートされていません。



    重要


    ノードの CPU 使用率が 50% 未満の場合にのみ、ローリング更新をトリガします。


SMF 正常性チェック

ヘルス チェックを実行する前に、すべてのサービスが実行され、ノードが準備完了状態になっていることを確認します。ヘルス チェックを実行するには、マスター ノードにログ オンし、次の構成を使用します:

kubectl get pods -n smi 
kubectl get nodes 
kubectl get pod --all-namespaces -o wide 
kubectl get pods -n smf-wsp -o wide 
kubectl get pods -n cee-wsp -o wide 
kubectl get pods -n smi-vips -o wide 
helm list 
kubectl get pods -A | wc -l 
アップグレードの準備

ここでは、バックアップ構成、ログ、および展開ファイルを作成する手順について説明します。ファイルをバックアップするには、次の手順を実行します。

  1. ubuntu ユーザーとして SMI クラスタ マネージャ ノードにログインします。

  2. 展開する新しいディレクトリを作成します。

    例:

    test@smismf-cm01:~$ mkdir -p "temp_$(date +'%m%d%Y_T%H%M')" && cd "$_"
  3. 新しく作成した展開ディレクトリに作業ファイルを移動します。

  4. cnsgw 展開ファイルを解凍します。

    例:
    test@smi1smf01-cm01:~/temp_08072019_T1651$ tar -xzvf smf.2020.01.0-1.SPA.tgz
    ./
    ./smf_REL_KEY-CCO_RELEASE.cer
    ./cisco_x509_verify_release.py
    ./smf.2020.01.0-1.tar
    ./smf.2020.01.0-1.tar.signature.SPA
    ./smf.2020.01.0-1.tar.SPA.README
    
  5. ダウンロードしたイメージを確認します。

    例:

    test@smi1smf01-cm01:~/temp_08072019_T1651$ cat smf.2020.01.0-1.tar.SPA.README

    重要


    Ops Center 構成のバックアップ」セクションに進む前に、SPA.README ファイルに記載されている手順に従ってビルドを確認します。


Ops センター構成のバックアップ

このセクションでは、Ops Center の構成のバックアップを作成する手順について説明します。

Ops Center の構成のバックアップを実行するには、次の手順を実行します:

  1. ubuntu ユーザーとして SMI クラスタ マネージャ ノードにログインします。

  2. 次のコマンドを実行して、SMI Ops センター構成を /home/ubuntu/smiops.backup ファイルにバックアップします。

    ssh -p  port_number admin@$(kubectl get svc -n smi | grep '.*netconf.*<port_number>' | awk '{ print $4 }') "show run | nomore" > smiops.backup_$(date +'%m%d%Y_T%H%M') 
  3. 次のコマンドを実行して、CEE Ops センターの構成を /home/ubuntu/ceeops.backup ファイルにバックアップします。

    ssh admin@<cee-vip> "show run | nomore" > ceeops.backup_$(date +'%m%d%Y_T%H%M') 
  4. 次のコマンドを実行して、SMF Ops センターの構成を /home/ubuntu/smfops.backup ファイルにバックアップします。

    ssh admin@<smf-vip> "show run | nomore" > smfops.backup_$(date +'%m%d%Y_T%H%M') 
CEE および SMF Opsセンター構成のバックアップ

このセクションでは、マスター ノードから CEE および Ops センター構成のバックアップを作成する手順について説明します。

CEE および Ops センターの構成のバックアップを実行するには、次の手順を実行します:

  1. マスター ノードに ubuntu ユーザーとしてログインします。

  2. 構成ファイルをバックアップするためのディレクトリを作成します。

    mkdir backups_$(date +'%m%d%Y_T%H%M') && cd "$_"

  3. SMF Ops Center の構成をバックアップし、バック アップ ファイルの行数を確認します。

    ssh -p port_number admin@$(kubectl get svc -n $(kubectl get namespaces | grep -oP 'smf-(\d+|\w+)') | grepport_number | awk '{ print $3 }') "show run | nomore" > smfops.backup_$(date +'%m%d%Y_T%H%M') && wc -l smfops.backup_$(date +'%m%d%Y_T%H%M')

    例:
    ubuntu@posmf-mas01:~/backups_09182019_T2141$ ssh -p 2024 admin@$(kubectl get svc -n $(kubectl get namespaces | grep -oP 'smf-(\d+|\w+)') | grep <port_number> | awk '{ print $3 }') "show run | nomore" > smfops.backup_$(date +'%m%d%Y_T%H%M') && wc -l smfops.backup_$(date +'%m%d%Y_T%H%M')
    admin@<ipv4address>'s password: smf-OPS-PASSWORD
    334 smfops.backup
    
  4. CEE Ops Center の構成をバックアップし、バック アップ ファイルの行数を確認します。

    ssh -p port_number admin@$(kubectl get svc -n $(kubectl get namespaces | grep -oP 'cee-(\d+|\w+)') | grep port_number | awk '{ print $3 }') "show run | nomore" > ceeops.backup_$(date +'%m%d%Y_T%H%M') && wc -l ceeops.backup_$(date +'%m%d%Y_T%H%M')

    例:
    ubuntu@posmf-mas01:~/backups_09182019_T2141$ ssh -p <port_number> admin@$(kubectl get svc -n $(kubectl get namespaces | grep -oP 'cee-(\d+|\w+)') | grep <port_number> | awk '{ print $3 }') "show run | nomore" > ceeops.backup_$(date +'%m%d%Y_T%H%M') && wc -l ceeops.backup_$(date +'%m%d%Y_T%H%M')
    admin@<ipv4address>'s password: CEE-OPS-PASSWORD
    233 ceeops.backup
    
  5. SMI Cluster Manager からの SMI Ops Center のバックアップ ファイルをバックアップ ディレクトリに移動します。

    scp $(grep cm01 /etc/hosts | awk '{ print $1 }'):/home/ubuntu/smiops.backup_$(date +'%m%d%Y_T%H%M') .

    例:

    ubuntu@posmf-mas01:~/backups_09182019_T2141$ scp $(grep cm01 /etc/hosts | awk '{ print $1 }'):/home/ubuntu/smiops.backup_$(date +'%m%d%Y_T%H%M') .
    ubuntu@<ipv4address>'s password: SMI-CM-PASSWORD
    smiops.backup                                                       100% 9346    22.3MB/s   00:00                                                                            
    
  6. バックアップ ファイルの行数を確認します。

    例:

    ubuntu@posmf-mas01:~/backups_09182019_T2141$ wc -l *
      233 ceeops.backup
      334 smfops.backup
      361 smiops.backup
      928 total
    
新しい SMF イメージのステージング

このセクションでは、アップグレードを開始する前に新しい SMF イメージをステージングする手順について説明します。

新しい SMF イメージをステージングするには、次の手順を実行します:

  1. 新しい SMF イメージをダウンロードして確認します。

  2. ubuntu ユーザーとして SMI クラスタ マネージャ ノードにログインします。

  3. イメージを Uploads ディレクトリにコピーします。

    sudo mv smf_new_image.tar /data/software/uploads 

    (注)  


    SMI は、Uploads ディレクトリに存在する新しいイメージを使用して更新します。


  4. Uploads ディレクトリから処理するために、イメージが SMI によって取得されているかどうかを確認します。

    sleep 30; ls /data/software/uploads 

    例:

    ubuntu@posmf-cm01:~/temp_08072019_T1651$ sleep 30; ls /data/software/uploads
    ubuntu@posmf-cm01:~/temp_08072019_T1651$
    
  5. イメージが正常に取得され、処理されたかどうかを確認します。

    例:

    auser@unknown:$ sudo du -sh /data/software/packages/*
    1.6G	/data/software/packages/cee.2019.07
    5.3G	/data/software/packages/smf.2019.08-04
    16K	/data/software/packages/sample
    

    SMI は、ステージングを完了するためにイメージを packages ディレクトリに抽出する必要があります。

ローリング ソフトウェア アップグレードのトリガ

SMF は SMI クラスタ マネージャを使用して、ローリング ソフトウェア更新を実行します。SMI Cluster Manager を使用して SMF を更新するには、次の構成を使用します。


重要


開始する前に、SMF が稼働しており、最新のバージョンのソフトウェアを実行していることを確認します。


  1. SMI Cluster Manager Ops Center にログインします。

  2. software-packages download url コマンドを使用して、URL から最新の TAR ボールをダウンロードします。

    注:

    software-packages download url :HTTP または HTTPS を介してダウンロードするソフトウェア パッケージを指定します。

  3. TAR ボールがロードされているかどうかを確認します。

    SMI Cluster Manager# software-packages list 
    [ smf-2019-08-21 ] 
    [ sample ] 
    

    注:

    software-packages list :使用可能なソフトウェア パッケージのリストを指定します。

  4. 製品チャートの最新バージョンで製品リポジトリ URL を更新します。


    (注)  


    リポジトリの URL に複数のバージョンが含まれている場合、Ops センターは自動的に最新バージョンを選択します。


    configure
      cluster cluster_name
       ops-centers app_name smf_instance_name
            repository url
             exit
           exit 

    例:

    SMI Cluster Manager# config 
    SMI Cluster Manager(config)# clusters test2 
    SMI Cluster Manager(config-clusters-test2)# ops-centers smf data 
    SMI Cluster Manager(config-ops-centers-smf/data)# repository <url> 
    SMI Cluster Manager(config-ops-centers-smf/data)# exit 
    SMI Cluster Manager(config-clusters-test2)# exit 
    

    注:

    clusters cluster_name :展開するノードに関する情報を指定します。 cluster_name は、クラスタの名前です。

  5. 製品チャートの最新バージョンに更新するには、次のコマンドを実行します。

    clusters cluster_name actions sync run 

    SMI Cluster Manager# clusters test2 actions sync run

注:

  • ops-centers app_name instance_name :製品 Ops センターとインスタンスを指定します。 app_name は、アプリケーション名です。 instance_name は 、インスタンスの名前です。

  • repository url :チャートをダウンロードするためのローカル レジストリの URL を指定します。

  • actions :クラスタで実行されるアクションを指定します。

  • sync run :クラスタの同期をトリガーします。


重要


  • クラスタ同期により、SMF Ops センターが更新され、アプリケーション ポッドが 1 つずつ自動的に更新されます( helm sync コマンドを介して)。

  • 特定のポッドでローリング アップグレードをトリガすると、SMF はそのポッドへの新しいコールのルーティングを回避します。

  • SMF は、ローリング アップグレードが開始されたポッドを再起動する前に、30 秒間待機して進行中のコールを受け入れます。また、SMF は、アップグレード期間中(最大コール設定時間は 10 秒)に、進行中のすべてのコールを 30 秒以内に完全に確立します。


アップグレードのモニタリング

以下の構成例を使用して、SMI Cluster Manager Ops Center を介してアップグレードのステータスをモニタします。

config 
   clusters cluster_name actions sync run debug true 
   clusters cluster_name actions sync logs 
   monitor sync-logs cluster_name 
   clusters cluster_name actions sync status 
   exit 

  • clusters cluster_name :展開するノードに関する情報を指定します。 cluster_name は、クラスタの名前です。

  • actions :クラスタで実行されるアクションを指定します。

  • sync run:クラスタの同期をトリガーします。

  • sync logs :現在のクラスタ同期ログを表示します。

  • sync status :クラスタ同期の現在のステータスを示します。debug true :デバッグ モードを開始します。

  • monitor sync logs :クラスタの同期プロセスをモニタします。

例:
SMI Cluster Manager# clusters test1 actions sync run
SMI Cluster Manager# clusters test1 actions sync run debug true
SMI Cluster Manager# clusters test1 actions sync logs
SMI Cluster Manager# monitor sync-logs test1
SMI Cluster Manager# clusters test1 actions sync status

重要


アップグレード後は、CEE Ops センターでポッドの詳細を確認できます。ポッドの詳細については、「ポッド詳細の表示」セクションを参照してください。


ポッド詳細の表示

CEE Ops センター CLI 内の CEE Ops センターを通して現在のポッドの詳細を表示するために次のサンプル構成を使用します:

cluster pods instance_name pod_name detail 

  • cluster pods :クラスタ内の現在のポッドを指定します。

  • instance_name :インスタンスの名前を指定します。

  • pod_name :ポッドの名前を指定します。

  • detail:指定されたポッドの詳細を表示します。

次に、 smf-data インスタンスの alertmanager-0 という名前のポッドの詳細を表示する例を示します。

例:
cee# cluster pods smf-data alertmanager-0 detail
details apiVersion: "v1"
kind: "Pod"
metadata:
  annotations:
    alermanager.io/scrape: "true"
    cni.projectcalico.org/podIP: "<ipv4address/subnet>"
    config-hash: "5532425ef5fd02add051cb759730047390b1bce51da862d13597dbb38dfbde86"
  creationTimestamp: "2020-02-26T06:09:13Z"
  generateName: "alertmanager-"
  labels:
    component: "alertmanager"
    controller-revision-hash: "alertmanager-67cdb95f8b"
    statefulset.kubernetes.io/pod-name: "alertmanager-0"
  name: "alertmanager-0"
  namespace: "smf"
  ownerReferences:
  - apiVersion: "apps/v1"
    kind: "StatefulSet"
    blockOwnerDeletion: true
    controller: true
    name: "alertmanager"
    uid: "82a11da4-585e-11ea-bc06-0050569ca70e"
  resourceVersion: "1654031"
  selfLink: "/api/v1/namespaces/smf/pods/alertmanager-0"
  uid: "82aee5d0-585e-11ea-bc06-0050569ca70e"
spec:
  containers:
  - args:
    - "/alertmanager/alertmanager"
    - "--config.file=/etc/alertmanager/alertmanager.yml"
    - "--storage.path=/alertmanager/data"
    - "--cluster.advertise-address=$(POD_IP):6783"
    env:
    - name: "POD_IP"
      valueFrom:
        fieldRef:
          apiVersion: "v1"
          fieldPath: "status.podIP"
    image: "<path_to_docker_image>"
    imagePullPolicy: "IfNotPresent"
    name: "alertmanager"
    ports:
    - containerPort: 9093
      name: "web"
      protocol: "TCP"
    resources: {}
    terminationMessagePath: "/dev/termination-log"
    terminationMessagePolicy: "File"
    volumeMounts:
    - mountPath: "/etc/alertmanager/"
      name: "alertmanager-config"
    - mountPath: "/alertmanager/data/"
      name: "alertmanager-store"
    - mountPath: "/var/run/secrets/kubernetes.io/serviceaccount"
      name: "default-token-kbjnx"
      readOnly: true
  dnsPolicy: "ClusterFirst"
  enableServiceLinks: true
  hostname: "alertmanager-0"
  nodeName: "for-smi-cdl-1b-worker94d84de255"
  priority: 0
  restartPolicy: "Always"
  schedulerName: "default-scheduler"
  securityContext:
    fsGroup: 0
    runAsUser: 0
  serviceAccount: "default"
  serviceAccountName: "default"
  subdomain: "alertmanager-service"
  terminationGracePeriodSeconds: 30
  tolerations:
  - effect: "NoExecute"
    key: "node-role.kubernetes.io/oam"
    operator: "Equal"
    value: "true"
  - effect: "NoExecute"
    key: "node.kubernetes.io/not-ready"
    operator: "Exists"
    tolerationSeconds: 300
  - effect: "NoExecute"
    key: "node.kubernetes.io/unreachable"
    operator: "Exists"
    tolerationSeconds: 300
  volumes:
  - configMap:
      defaultMode: 420
      name: "alertmanager"
    name: "alertmanager-config"
  - emptyDir: {}
    name: "alertmanager-store"
  - name: "default-token-kbjnx"
    secret:
      defaultMode: 420
      secretName: "default-token-kbjnx"
status:
  conditions:
  - lastTransitionTime: "2020-02-26T06:09:02Z"
    status: "True"
    type: "Initialized"
  - lastTransitionTime: "2020-02-26T06:09:06Z"
    status: "True"
    type: "Ready"
  - lastTransitionTime: "2020-02-26T06:09:06Z"
    status: "True"
    type: "ContainersReady"
  - lastTransitionTime: "2020-02-26T06:09:13Z"
    status: "True"
    type: "PodScheduled"
  containerStatuses:
  - containerID: "docker://821ed1a272d37e3b4c4c9c1ec69b671a3c3fe6eb4b42108edf44709b9c698ccd"
    image: "<path_to_docker_image>"
    imageID: "docker-pullable://<path_to_docker_image>"
    lastState: {}
    name: "alertmanager"
    ready: true
    restartCount: 0
    state:
      running:
        startedAt: "2020-02-26T06:09:05Z"
  hostIP: "<host_ipv4address>"
  phase: "Running"
  podIP: "<pod_ipv4address>"
  qosClass: "BestEffort"
  startTime: "2020-02-26T06:09:02Z"
cee#

ローリング アップグレード最適化

表 3. 機能の履歴
機能名

リリース情報

説明

プロトコル PFCP ポッドのローリング アップグレード最適化 2024.04.0

プロトコル (PFCP)ポッドの場合、コンバージド コア ゲートウェイは、再送信された要求を処理するために、サービス ポッドにセッション レベルの応答メッセージ キャッシュを導入します。この最適化は、アップグレード手順中のセッションと 1 秒あたりのコール イベント(CEPS)の損失の削減に役立ちます。

エンドポイント ポッドのローリングアップグレード最適化 2024.03.0

コンバージド コア ゲートウェイは、次のポッドのローリング アップグレード最適化サポートを提供します。

  • Radius エンドポイント ポッド

  • Diameter エンドポイント ポッド

  • UDP プロキシ ポッド

  • GTPP エンドポイント ポッド

この最適化は、既存の最適化の強化です。

この機能は、統合コア プロファイルで既存の CLI コマンド supported-features [ app-rx-retx-cache | app-tx-retx | rolling-upgrade-all | rolling-upgrade-enhancement-infra ] を使用します。

ローリング アップグレード最適化

2024.02.0

コンバージド コア ゲートウェイは、次のサポートを提供します。

  • アップグレード中のサービスおよびプロトコル ポッドでの再試行メカニズム

  • 構成ベースのローリング アップグレードの機能拡張

この最適化は、アップグレード手順中のセッションと 1 秒あたりのコール イベント(CEPS)の損失の削減に役立ちます。構成可能なローリングアップグレードの機能拡張により、変更のスムーズなロールアウトが可能になります。

この機能により、統合コア プロファイルに新しい CLI コマンド supported-features [ app-rx-retx-cache | app-tx-retx | rolling-upgrade-all | rolling-upgrade-enhancement-infra ] が導入されます。

デフォルト設定:無効:構成が必要

コンバージド コア ゲートウェイ(CCG)ソフトウェア バージョン 2024.02.0 以降は、最適化の強化を備えたローリング アップグレードをサポートしています。ローリング アップグレードを使用すると、セッションと CEPS への影響を最小限に抑えて、すべてのポッドのグレースフル アップグレードを実行できます。最適化の強化により、必要に応じて、アップグレード プロセスの CLI コマンドを使用してローリング アップグレード機能を有効または無効にするオプションが提供され、運用上の柔軟性がもたらされます。

この機能は、次のアプリケーション レベルの機能拡張をサポートしています。

  • サービス ポッドのアップグレード中のプロトコルポッドにおける再試行メカニズム。

  • アップグレード中のサービス ポッドおよびプロトコル ポッドでの一時的なセッションまたはトランザクションの処理。

  • 再起動中または非アクティブなポッドを検出するためのトポロジと IPC メカニズムの変更処理。非アクティブなポッドの場合、再試行オプションはポッドの他のインスタンスに対して試行されます。

  • プロトコル(PFCP)ポッドの着信および発信の再送信要求を処理するためのキャッシュの維持。

supported-features [ app-rx-retx-cache | app-tx-retx | rolling-upgrade-all | rolling-upgrade-enhancement-infra ] CLI コマンドを使用して、ローリング アップグレードの拡張機能を設定できます。


重要


  • 既存のセッションへの影響を防ぐために、実行時にローリング アップグレード機能を有効または無効にしないことを推奨します。

  • 他のコマンド オプションはすべてデバッグ目的でのみ使用できるため、rolling-upgrade-all オプションのみを使用することを強く推奨します。


ローリング アップグレード最適化の仕組み

このセクションでは、さまざまなポッドのアップグレードとローリング アップグレードの手順について説明します。

ポッドのアップグレード

サービス ポッド

ピア ポッドは特定のポッドのアップグレードや再起動を認識するため、そのポッドとの間のトランザクションが正常に処理されるようになります。

ここでは、サービス ポッドでの着信および発信メッセージの処理について説明します。

着信メッセージ(Incoming Messages)

  • アップグレード中、サービス ポッドの状態は、トポロジの更新を介して他のポッドに伝達されます。セッションにアフィニティが存在しない場合、そのポッドは新しいメッセージの転送用に選択されません。

  • セッションでは、サービス ポッドにコンテキストがない場合、これがキャッシュ タイムアウト後のユーザーに対する最初のメッセージであり、アプリケーション停止メッセージがプロトコルポッドに伝達されます。このポッドは、他のサービス ポッド インスタンスにメッセージをリダイレクトします。

  • サービス ポッドにセッションのコンテキストがあり、セッションまたはユーザーに対する保留中の手順やトランザクションがない場合、アプリケーション停止メッセージがプロトコル ポッドに送信します。このポッドは、他のサービス ポッド インスタンスにメッセージをリダイレクトします。ただし、プロトコル ポッドと通信する前に、セッション状態の強制同期が CDL に対して実行されます。さらに、セッションまたはユーザーのアフィニティ エントリが削除されます。

発信メッセージ(Outgoing Messages)

  • セッションまたはユーザーのコール フローまたは手順の完了後、サービス ポッドがアップグレードまたは再起動の通知を受信すると、セッションまたは PDU の状態と CDL との同期が実行されます。さらに、サービスまたは ユーザーのアフィニティ エントリが削除され、サービス ポッド インスタンスに対する後続メッセージのトリガーが許可されません。

  • 進行中の既存のコール フローについては、コールを完了させるためのベスト エフォートでトランザクションが処理されます。

プロトコル ポッド

ここでは、REST エンドポイント、GTPC エンドポイント、およびプロトコル(PFCP)エンドポイント ポッドでのメッセージの処理について説明します。

REST エンドポイント ポッド

ここでは、REST エンドポイント ポッドでの着信および発信メッセージの処理について説明します。

着信メッセージ(Incoming Messages)

  • 新しい TCP 接続の場合、入力 K8 サービスはアップグレードまたは再起動中に特定の REST エンドポイント ポッドを選択しません。そのような要求は他のインスタンスに転送されます。

  • アップグレード通知または再起動通知を受信後、既存の接続で GOAWAY フレームが送信されます。このフレームを送信すると、新しいメッセージがピア ノードの新しい接続で送信されます。

発信メッセージ(Outgoing Messages)

  • サービス ポッドから発信要求メッセージを受信後、アプリケーション停止通知がサービス ポッドに送り返されます。その結果、サービス ポッドが、メッセージをトリガする別の REST エンドポイント インスタンスを選択できます。

  • 既存の一時的なメッセージの発信応答では、ベスト エフォート方式でトランザクションが完了します。

GTPC エンドポイント ポッド

着信メッセージ(Incoming Messages)

GTPC エンドポイント ポッドの再起動中時に、着信要求メッセージの処理をサポートするために、セッション レベルの応答メッセージ キャッシュがサービス ポッドに追加されました。サービス ポッドは、シーケンス番号、送信元 IP アドレス、送信元ポート、および要求メッセージ タイプに基づいて、応答メッセージ バッファを保存します。

  • GTPC エンドポイントポッドの再起動が原因で回線上の応答メッセージが失われた場合、ピアで要求メッセージが再試行されます。このメッセージは、セッション レベルの応答メッセージ キャッシュを使用して応答されます。

  • 応答メッセージがサービス ポッドで生成されない場合でも、メッセージは再送信としてサービスで検出されて適宜処理されます。

発信メッセージ(Outgoing Messages)

GTPC エンドポイント ポッドの再起動中、発信要求メッセージは次の方法で処理されます。

  • サービス ポッドが、BGIPC を実行する際の要求のタイムアウト間隔と再送信回数を設定します。タイムアウト間隔と送信回数は、S5、S11、および S5E インターフェイスに対して定義されている N3 T3 に基づいています。

  • GTPC エンドポイント ポッドの代わりに、サービスポッドが送信元ポートとシーケンス番号を設定します。

  • このメカニズムは、ポッドの再起動中に応答メッセージが失われた場合の発信メッセージの再送信に役立ちます。サービス ポッドは、シーケンス番号とポートを生成します。この場合、ピアでもメッセージが再送信として検出されるため、回線上のメッセージに不明瞭さはありません。

プロトコル(PFCP)エンドポイント ポッド

着信メッセージ(Incoming Messages)

セッション レベルの応答メッセージ キャッシュがサービス ポッドに追加され、PFCP エンドポイント ポッドの再起動時に、着信要求メッセージの処理をサポートします。サービス ポッドは、シーケンス番号、送信元 IP アドレス、送信元ポート、および要求メッセージ タイプに基づいて、応答メッセージ バッファを保存します。

  • プロトコル エンドポイント ポッドの再起動が原因で回線上の応答メッセージが失われた場合、ピアで要求メッセージが再試行されます。このメッセージは、セッション レベルの応答メッセージ キャッシュを使用して応答されます。

  • 応答メッセージがサービス ポッドで生成されない場合でも、メッセージは再送信としてサービスで検出されて適宜処理されます。

発信メッセージ(Outgoing Messages)

プロトコル エンドポイント ポッドの再起動中、発信要求メッセージは次の方法で処理されます。

  • サービス ポッドが、BGIPC を実行する際の要求のタイムアウト間隔と再送信回数を設定します。タイムアウト間隔と送信回数は、PFCP インターフェイスに対して定義された N3 T3 タイマーに基づいています。

  • プロトコル エンドポイント ポッドの代わりに、サービス ポッドが送信元ポートとシーケンス番号を設定します。

  • このメカニズムは、ポッドの再起動中に応答メッセージが失われた場合の発信メッセージの再送信に役立ちます。サービス ポッドは、シーケンス番号とポートを生成します。この場合、ピアでメッセージが再送信として検出されるため、回線上のメッセージに不明瞭さはありません。

ノード マネージャ ポッド

ノード マネージャ ポッドの 1 つのインスタンスは、アップグレード中にコールを処理するために使用できます。準備プローブとタイマーも、アップグレード シナリオ用に構成されます。ポッドが非アクティブの場合、サービス ポッドは他のノード マネージャのポッド インスタンスを再試行します。

CDL ポッド

CDL ポッドには、アップグレード プロセス中にサービスを継続するための複数のレプリカがあります。アップグレードおよび再起動プロセス中の障害を最小限に抑えるために、CDL エンドポイントに対して複数の接続ストリームを使用できます。これらのプロセスでエラーが発生した場合、再試行メカニズムは別の CDL エンドポイント接続に対しても実装されます。

RADIUS エンドポイント ポッド

次に、ローリング アップグレード中の RADIUS エンドポイント ポッドの動作を示します。

  • アップグレード中、ポッドの状態は、トポロジの更新を介して他のポッドに伝達されます。非アクティブになるポッドは、新しいメッセージを転送するために選択されていません。

  • アップグレードの RADIUS エンドポイント ポッドでメッセージを受信すると、アプリケーション停止指示が他のポッドに伝達されます。

  • アプリケーション停止指示を受信すると、メッセージは他のアクティブな RADIUS エンドポイント ポッドにリダイレクトされます。

Diameter エンドポイント ポッド

次に、ローリング アップグレード中の Diameter エンド ポイント ポッドの動作を示します:

  • VIP スイッチ オーバーの前に、着信メッセージはサービス ポッドまたは Diameter ピアに転送されます。

  • VIP スイッチオーバー後、新しいメッセージは停止中のポッドで受信されません。

UDP プロキシ ポッド

アップグレード中、UDP プロキシ ポッドは着信メッセージを許可します。

GTPP エンドポイント ポッド

アップグレード中、GTPP エンドポイント ポッドは着信メッセージを許可します。

ローリング アップグレード最適化サポートを利用したバージョンへのソフトウェアのアップグレード

ここでは、ローリング アップグレードを実行する方法と、ローリング アップグレードの拡張機能を有効にする方法について説明します。


重要


ローリング アップグレードの手順に関連する、次の重要な注意事項を確認します。

  • ローリング アップグレード最適化機能は、リリース 2024.02.0 以降からアップグレードする場合にのみ使用する必要があります。

    リリース 2024.02.0 以前のバージョンからリリース 2024.02.0 以降にアップグレードする場合は、最初にシャットスタート アップグレードを実行します。

  • アップグレード後、CLI コマンドを使用して、ローリング アップグレードの拡張機能を有効にしてください。その後、将来のリリースへの後続のローリング アップグレードには、利用可能な最適化が含まれます。


ローリング アップグレードの考慮事項

SMF の両方のラック(Rack 1 と Rack 2)は日のシナリオであり、リリース 2024.02.0 より前のバージョンです。

ローリング方法を実行するには、次の手順に従います。

  1. Rack 1 を雷日のシナリオに移動し、Rack 2 を両方の GR インスタンスでアクティブのままにします。

  2. Rack 1 の GR インスタンスを Standby_ERROR に移動します。

  3. Rack 1 をシャットダウンします。

  4. Rack 1 をリリース 2024.02 に移行するには、sync- Phase ops-center を介してクラスタ同期を実行します。

  5. ローリング アップグレードの拡張機能を有効にするには、推奨構成を適用します。

    ローリング アップグレードの推奨構成は次のとおりです。

    config 
       profile converged-core converged_core_profile_name 
       supported-features [ rolling-upgrade-all ]  
       end 
  6. Rack 1 を開始します。

  7. CDL の調整が完了するまで 30 分間待機します。

  8. GR インスタンスをプライマリに切り替えて、Rack 1 をアクティブにします。

  9. Rack 2 をシャットダウンします。

  10. Rack 2 のステップ 4 ~ 6 を続けます。

  11. 日のシナリオには Rack 1 と Rack 2 の構成を行います。

制限事項

この機能には、次の制限事項があります。

  • ローリング アップグレードの間、サービス ポッドは一度に 1 つずつ再起動します。このアップグレードにより、セッションが均等に再配布されます。最初に再起動するサービス ポッドのセッション数が多くなります。同様に、最後に再起動したサービス ポッドのセッション数が最小になります。このようなセッションの再配布により、一部のサービス ポッドのメモリ要件が一時的に急増する可能性があります。セッションがサービス ポッドのローカル キャッシュから削除された後、システムは期待どおりに動作します。

  • サービス ポッドでの一連の手順は、ローリング アップグレード中も継続されます。ただし、これらを正常に完了させるためのベスト エフォート メカニズムが実装されています。

ローリング アップグレードのサポートされる機能の構成

ローリング アップグレードでサポートされている機能を有効にするには、次の構成例を使用します。

config 
   profile converged-core cc_profile_name 
      supported-features [ app-rx-retx-cache | app-tx-retx | rolling-upgrade-all | rolling-upgrade-enhancement-infra ] 
      end 

注:

  • profile converged-core cc_profile_name :コンバージド コア プロファイルの名前を指定します。このキーワードを使用すると、コンバージド コア プロファイル構成モードを開始できます。

  • supported-features [ app-rx-retx-cache | app-tx-retx | rolling-upgrade-all | rolling-upgrade-enhancement-infra ] :ローリング アップグレードでサポートされている機能を有効にするには、次のいずれかのオプションを指定します。

    • app-rx-retx-cache :アプリケーションでの着信メッセージの再送信キャッシュを有効にします。

    • app-tx-retx :アプリケーションでのアウトバウンド メッセージの再送信を有効にします。

    • rolling-upgrade-all rolling-upgrade-enhancement-infra app-rx-retx-cache 、および app-tx-retxrolling キーワード オプションで使用可能なすべてのローリング アップグレード機能を有効にします。デフォルトでは、ローリング アップグレード機能は無効になっています。

      rolling-upgrade-all は推奨オプションです。

    • rolling-upgrade-enhancement-infra :インフラレベルの機能を有効にします。


    重要


    • 既存のセッションへの影響を防ぐために、実行時にローリング アップグレード機能を有効または無効にしないことを推奨します。

    • 他のコマンド オプションはすべてデバッグ目的でのみ使用できるため、rolling-upgrade-all オプションのみを使用することを強く推奨します。


ローリング アップグレード最適化の確認

show running-config profile amf-services コマンドを使用して、ローリング アップグレードでサポートされる機能を確認します。

show running-config amf-services コマンドの出力例を次に示します。

show running-config profile amf-services
amf-services am1
   supported-features [ rolling-upgrade-all ]
exit

OAM サポート

バルク統計

ローリング アップグレード最適化機能では、次の統計情報がサポートされています。

IPC 再試行統計情報:

「ipc_request_total」統計は、再試行の原因に関する追加のラベル「retry_cause」で更新されます。

CDL 統計情報:

CDL 操作に次の統計が追加されます。

  • cdl_request_total

  • cdl_response_total

  • cdl_request_seconds_total

  • cdl_request_duration_histgram_total

これらの CDL 統計は、次のフィルタで更新されます。

  • retry:再試行メッセージを表示するために使用されます

  • method_name:CDL 強制同期更新を表示するために使用されます


(注)  


以前のリリースでは、CDL 統計は、フィルタ rpc_name を STREAM_SESSION_DB として、RPC 統計を介して表示されていました。リリース 2024.02 以降、CDL 統計は、前述の CDL 統計を使用する場合にのみ使用できます。


アプリケーション停止カウンタ:

App-infra でアクションを表示するために、「application_stop_action」統計が追加されました。これらのアクションの例には、セッション キャッシュの削除やアフィニティの削除があります。