16. Amorçage du cluster de stockage de fichiers et de blocs

Durée estimée : 3 heures

Propriétaire du composant opérationnel : FICHIER

Profil de compétences : ingénieur de déploiement

Cette page explique comment configurer le stockage de fichiers et de blocs pour le cluster à l'aide de NetApp ONTAP.

16.1. Configurer les commutateurs de cluster ONTAP

  1. Recherchez les mots de passe switch-xx-ad-stgesw01-admin et switch-xx-ad-stgesw02-admin (ils auront la même valeur). Si les mots de passe n'existent pas, initialisez les identifiants et générez un nouveau mot de passe aléatoire. Connectez-vous au commutateur via la console pour définir le mot de passe administrateur :

    # configure terminal
    # username ADMIN_USER password PASSWORD
    # exit
    # copy running-config startup-config
    
  2. Enregistrez les identifiants dans un secret et ajoutez-les à cell.yaml.

    apiVersion: v1
    kind: Secret
    metadata:
      name: netapp-ontap-cluster-switch-credential
      namespace: gpc-system
    type: Opaque
    stringData:
      username: ADMIN_USER
      password: PASSWORD
    
  3. Exécutez la commande suivante pour obtenir les noms des commutateurs de stockage :

    kubectl get storageswitch -n gpc-system
    

    Un résultat semblable aux lignes suivantes doit s'afficher :

    NAME             AGE   MANAGEMENTIP
    kb-ab-stgesw01   10d   192.0.2.0
    kb-ab-stgesw02   10d   192.0.2.1
    

    Pour chaque commutateur, procédez comme suit et utilisez le nom du commutateur.

  4. Exécutez la commande suivante pour récupérer la configuration du commutateur à partir du CR switchstaticconfig :

    kubectl get switchstaticconfigs -n gpc-system $SWITCH_NAME-static-config -o yaml | /root/release/scripts/yq_linux_amd64 '.spec.config'
    

    Un résultat semblable aux lignes suivantes doit s'afficher :

    banner motd !
    ******************************************************************************
    * NetApp Reference Configuration File (RCF)
    *
    * Switch   : Nexus N9K-C9336C-FX2
    * Filename : Nexus-9336C-RCF-v1.8-Cluster.txt
    * Date     : 11-01-2021
    * Version  : v1.8
    *
    * Port Usage:
    * Ports  1- 3: Breakout mode (4x10G) Intra-Cluster/HA Ports, int e1/1/1-4, e1/2/1-4, e1/3/1-4
    * Ports  4- 6: Breakout mode (4x25G) Intra-Cluster/HA Ports, int e1/4/1-4, e1/5/1-4, e1/6/1-4
    * Ports  7-34: 40/100GbE Intra-Cluster/HA Ports, int e1/7-34
    * Ports 35-36: Intra-Cluster ISL Ports, int e1/35-36
    *
    * Dynamic breakout commands:
    * 10G: interface breakout module 1 port <range> map 10g-4x
    * 25G: interface breakout module 1 port <range> map 25g-4x
    *
    * Undo breakout commands and return interfaces to 40/100G configuration in config mode:
    * no interface breakout module 1 port <range> map 10g-4x
    * no interface breakout module 1 port <range> map 25g-4x
    * interface Ethernet <interfaces taken out of breakout mode>
    * inherit port-profile CLUSTER
    * priority-flow-control mode auto
    * service-policy type qos type input ROCE_QOS
    * exit
    *
    * This RCF supports Clustering, HA, RDMA, and DCTCP using a single port profile.
    *
    ******************************************************************************
    !
    conf t
    !
    interface breakout module 1 port 1-3 map 10g-4x
    interface breakout module 1 port 4-6 map 25g-4x
    !
    feature lacp
    feature lldp
    feature ssh
    feature sftp-server
    feature scp-server
    !
    vlan 17,18
    exit
    !
    cdp enable
    cdp advertise v1
    cdp timer 5
    system default switchport
    no system default switchport shutdown
    snmp-server community cshm1! group network-operator
    errdisable recovery interval 30
    port-channel load-balance src-dst ip-l4port-vlan
    no ip domain-lookup
    logging console 1
    !
    !
    class-map type qos match-any HA
    match dscp 40
    match cos 5
    !
    class-map type qos match-any RDMA
    match dscp 16
    match cos 2
    !
    class-map type qos match-any CT
    match dscp 0
    match cos 0
    !
    policy-map type qos ROCE_QOS
    class type qos HA
      set qos-group 5
    class type qos RDMA
      set qos-group 2
    class type qos class-default
      set qos-group 0
    !
    class-map type network-qos HA_NETQOS
    match qos-group 5
    !
    class-map type network-qos RDMA_NETQOS
    match qos-group 2
    !
    class-map type network-qos CT_NETQOS
    match qos-group 0
    !
    policy-map type queuing ROCE_QUEUING
    class type queuing c-out-8q-q7
      priority level 1
    class type queuing c-out-8q-q6
      bandwidth remaining percent 0
    class type queuing c-out-8q-q5
      bandwidth remaining percent 43
      random-detect threshold burst-optimized ecn
    class type queuing c-out-8q-q4
      bandwidth remaining percent 0
    class type queuing c-out-8q-q3
      bandwidth remaining percent 0
    class type queuing c-out-8q-q2
      random-detect threshold burst-optimized ecn
      bandwidth remaining percent 28
    class type queuing c-out-8q-q1
      bandwidth remaining percent 0
    class type queuing c-out-8q-q-default
      bandwidth remaining percent 28
      random-detect threshold burst-optimized ecn
    !
    policy-map type network-qos NETQOS
    class type network-qos HA_NETQOS
      pause pfc-cos 5
      mtu 9216
    class type network-qos RDMA_NETQOS
      pause pfc-cos 2
      mtu 9216
    class type network-qos CT_NETQOS
      mtu 9216
    !
    system qos
    service-policy type network-qos NETQOS
    service-policy type queuing output ROCE_QUEUING
    !
    copp profile strict
    !
    !
    !********** Port Profiles **********
    !
    port-profile type ethernet CLUSTER
    description 10/25/40/1000GbE Intra-Cluster/HA Nodes
    switchport mode trunk
    switchport trunk allowed vlan 1,17-18
    spanning-tree port type edge trunk
    spanning-tree bpduguard enable
    mtu 9216
    state enabled
    exit
    !
    !
    !********** Interfaces **********
    !
    interface e1/1/1-4, e1/2/1-4, e1/3/1-4, e1/4/1-4, e1/5/1-4, e1/6/1-4, e1/7-34
    inherit port-profile CLUSTER
    priority-flow-control mode auto
    service-policy input ROCE_QOS
    exit
    !
    !********** Intra-Cluster ISL ports **********
    !
    interface Ethernet1/35
    description Intra-Cluster Switch ISL Port 1/35 (port channel)
    priority-flow-control mode auto
    switchport mode trunk
    switchport trunk allowed vlan 1
    mtu 9216
    channel-group 1 mode active
    no shutdown
    !
    interface Ethernet1/36
    description Intra-Cluster Switch ISL Port 1/36 (port channel)
    priority-flow-control mode auto
    switchport mode trunk
    switchport trunk allowed vlan 1
    mtu 9216
    channel-group 1 mode active
    no shutdown
    !
    interface port-channel1
    service-policy input ROCE_QOS
    priority-flow-control mode auto
    switchport mode trunk
    switchport trunk allowed vlan 1
    mtu 9216
    no shutdown
    !
    !********** Set management ip **********
    !
    interface mgmt0
    ip address 172.28.2.10/29
    !
    vrf context management
    ip route 0.0.0.0/0 mgmt0 172.28.2.9
    !
    hostname kb-ad-stgesw01
    !
    end
    !
    !********** Save config *******
    copy run start
    !
    
  5. Déployez la configuration de commutateur obtenue sur le commutateur à l'aide d'un câble série ou d'un serveur de console en copiant et en collant le contenu dans le commutateur.

    Cette configuration suppose que :

    • Pour l'A250 : e0c/e0d sur le périphérique de stockage est connecté aux ports 4 à 6 à l'aide d'un câble répartiteur.
    • Pour l'A400 : e3a/e3b sur le périphérique de stockage est connecté au port 7-34 à l'aide d'un câble 40 GbE ou 100 GbE (non réparti).
    • Pour A800 : e0a/e1a sur le périphérique de stockage est connecté au port 7-34 à l'aide d'un câble 40 GbE ou 100 GbE (non réparti).

    Toutefois, ce n'est peut-être pas le cas. Dans de nombreuses installations, le périphérique de stockage est connecté aux ports 4 à 6, même s'il s'agit d'un A400 ou d'un A800. Si une carte A400 ou A800 est connectée aux ports 4 à 6, ajustez la configuration du commutateur pour supprimer les lignes suivantes avant d'appliquer les modifications :

      interface breakout module 1 port 1-3 map 10g-4x
      interface breakout module 1 port 4-6 map 25g-4x
    

    Remplacez ensuite cette ligne :

      interface e1/1/1-4, e1/2/1-4, e1/3/1-4, e1/4/1-4, e1/5/1-4, e1/6/1-4, e1/7-34
    

    Par les lignes de code suivantes :

      interface e1/1-34
    

    Avec ces modifications, les ports 1 à 34 sont tous configurés pour les câbles 40GbE ou 100GbE (non répartis).

    De plus, supprimez les lignes suivantes de la partie bannière MOTD de la configuration pour éviter toute confusion à l'avenir :

    
      * Ports  1- 3: Breakout mode (4x10G) Intra-Cluster/HA Ports, int e1/1/1-4, e1/2/1-4, e1/3/1-4
      * Ports  4- 6: Breakout mode (4x25G) Intra-Cluster/HA Ports, int e1/4/1-4, e1/5/1-4, e1/6/1-4
      * Ports  7-34: 40/100GbE Intra-Cluster/HA Ports, int e1/7-34
    

    Remplacez ces lignes par :

      * Ports  1-34: 40/100GbE Intra-Cluster/HA Ports, int e1/1-34
    
  6. Confirmez le CR de l'objet ManagementSwitch.

    Examinez l'objet ManagementSwitch du cluster KIND d'amorçage et trouvez la CR correcte qui représente le commutateur contenant le périphérique de stockage. Identifiez les ports de commutateur physiques sur le commutateur de gestion, qui sont physiquement connectés aux commutateurs de stockage, et vérifiez que ces connexions existent dans le CR ManagementSwitch dans lacpGroups.

    Par exemple, si la connexion de gestion au commutateur de stockage est connectée aux ports 10 et 11 du commutateur de gestion, vérifiez que les informations suivantes existent :

    kind: ManagementSwitch
    spec:
      ...
      serverNetwork:
        ...
        lacpGroups:
        - - 10
        - - 11
    

    Utilisez la commande suivante pour obtenir les lacpGroups :

    kubectl get ManagementSwitchinternal <switch-name> --namespace=gpc-system -o=jsonpath='{.spec.serverNetwork.lacpGroups}'
    

    Un exemple de résultat doit ressembler à ceci, ce qui vous permet de confirmer l'existence des ports :

    [[1],[2],[3],[4],[5],[6]]
    

16.2. Initialiser les appliances ONTAP

Répétez les étapes suivantes pour chaque contrôleur des systèmes AFF 250/400/800. Chaque système comporte deux contrôleurs ou nœuds.

  1. Utilisez la console série et le nom d'utilisateur par défaut admin pour vous connecter au nœud du contrôleur de stockage.

  2. Vérifiez la version du système NetApp ONTAP.

    • Exécutez la commande version.
    • La version du système NetApp ONTAP doit être 9.15.1. Si la version est antérieure à la version 9.15.1, mettez à niveau les nœuds vers la version 9.15.1 avant l'amorçage du cluster d'administrateur de l'organisation. Pour en savoir plus, consultez le guide de mise à niveau.
  3. Définissez les adresses d'interface IP d'interconnexion du cluster.

    Commencez par localiser la valeur .spec.network.clusterInterconnectIP attendue pour le StorageNode actuel dans cellcfg.

    # Note, this command relies on yq, which can be downloaded from https://github.com/mikefarah/yq.
    # If you do not want to install yq, you can manually inspect cellcfg/*-storage.yaml to determine the IPs.
    cat cellcfg/*-storage.yaml | /root/release/scripts/yq_linux_amd64 'select(.kind == "StorageNode") | (.metadata.name, .spec.network.clusterInterconnectIP)'
    

    L'exécution de la commande précédente affichera les noms de tous les StorageNode et leurs valeurs .spec.network.clusterInterconnectIP. Exemple :

    aa-ad-stge01-01
    169.254.0.1
    ---
    aa-ad-stge01-02
    169.254.0.3
    ---
    aa-ad-stge02-01
    169.254.0.5
    ---
    aa-ad-stge02-02
    169.254.0.7
    ---
    aa-ad-stge03-01
    169.254.0.9
    ---
    aa-ad-stge03-02
    169.254.0.11
    

    Dans l'exemple précédent, pour le nœud aa-ad-stge03-01, les adresses IP 169.254.0.9 et 169.254.0.10 seront utilisées dans les étapes suivantes. En effet, 169.254.0.9 est l'adresse IP définie dans cellcfg pour le nœud aa-ad-stge03-01, et 169.254.0.10 est l'adresse IP suivante (numériquement) après 169.254.0.9.

    Ensuite, vérifiez les valeurs réelles des adresses IP d'interconnexion de cluster pour le nœud actuel.

    network interface show
    

    Vous devriez voir deux interfaces réseau commençant par 169.254, comme dans l'exemple de résultat suivant :

    ::> net int show
       (network interface show)
                 Logical    Status     Network            Current       Current Is
     Vserver     Interface  Admin/Oper Address/Mask       Node          Port    Home
     ----------- ---------- ---------- ------------------ ------------- ------- ----
     Cluster
                 clus1        up/up    169.254.19.166/16  localhost     e3a     true
                 clus2        up/up    169.254.19.167/16  localhost     e3b     true
    

    Si l'adresse de l'interface clus1 correspond à la valeur définie dans cellcfg et que l'adresse de l'interface clus2 est l'adresse IP suivante après l'adresse clus1 (numériquement), vous pouvez ignorer le reste de cette étape et passer à la suivante.

    Si vous ne voyez qu'une seule interface pour le serveur virtuel du cluster, exécutez net port show pour vérifier que le deuxième port est opérationnel. Si c'est le cas, cela signifie que vous avez oublié l'une des interfaces. Deux options s'offrent à vous pour résoudre le problème :

    • Option 1 : Ajoutez manuellement l'adresse IP d'interconnexion à l'aide de la commande suivante :

        net interface create -vserver Cluster -lif clus2 -role cluster -address <interconnect-ip> -netmask 255.255.0.0 -home-node localhost -home-port <port>
      
      • interconnect-ip : choisissez l'adresse IP suivante (numériquement) après l'adresse IP d'interconnexion du cluster spécifiée dans le cellcfg pour le nœud actuel. Par exemple, si l'adresse IP d'interconnexion du cluster spécifiée dans le cellcfg du nœud actuel est 169.254.0.3, choisissez 169.254.0.4.

      • Port : le port peut varier selon le modèle d'ONTAP. Vous devez sélectionner le port dont l'interface n'est pas affichée dans le résultat précédent.

        • Pour A250 : choisissez entre e0c et e0d.
        • Pour A400 : choisissez entre e3a et e3b.
        • Pour A800 : choisissez entre e0a et e1a.
    • Option 2 : Rétablir la configuration d'usine du nœud ONTAP (cela implique une configuration 9a et 9b dans le menu de démarrage ONTAP). Exécutez à nouveau la commande après la réinitialisation pour vérifier que deux adresses IP existent. Notez qu'il est recommandé d'essayer d'abord l'option 1 et de ne passer à l'option 2 que si les choses ne fonctionnent pas correctement.

    Ensuite, mettez à jour l'adresse IP d'interconnexion clus1 pour qu'elle corresponde à la valeur clusterInterconnectIP spécifiée pour le nœud actuel dans cellcfg.

    net int modify -vserver Cluster -lif clus1 -address <interconnect-ip>
    
    • interconnect-ip : valeur clusterInterconnectIP spécifiée dans cellcfg pour le nœud actuel.

    Ensuite, mettez à jour l'adresse IP d'interconnexion clus2 pour qu'elle soit la prochaine adresse IP (numériquement) après la valeur clusterInterconnectIP spécifiée pour le nœud actuel dans cellcfg.

    net int modify -vserver Cluster -lif clus2 -address <next-interconnect-ip>
    
    • next-interconnect-ip : choisissez l'adresse IP suivante (numériquement) après l'adresse IP d'interconnexion du cluster spécifiée dans le fichier cellcfg pour le nœud actuel. Par exemple, si l'adresse IP d'interconnexion du cluster spécifiée dans le fichier cellcfg pour le nœud actuel est 169.254.0.3, choisissez 169.254.0.4.

    Enfin, vérifiez que les valeurs IP d'interconnexion de cluster réelles pour le nœud actuel correspondent aux valeurs attendues dans le fichier cellcfg.

    network interface show
    

    Vous devriez voir deux interfaces réseau commençant par 169.254, comme dans l'exemple de résultat suivant. L'adresse de l'interface clus1 doit correspondre à la valeur définie dans cellcfg. L'adresse de l'interface clus2 doit être l'adresse IP suivante après l'adresse clus1 (numériquement).

    ::> net int show
       (network interface show)
                 Logical    Status     Network            Current       Current Is
     Vserver     Interface  Admin/Oper Address/Mask       Node          Port    Home
     ----------- ---------- ---------- ------------------ ------------- ------- ----
     Cluster
                 clus1        up/up    169.254.0.1/16  localhost     e3a     true
                 clus2        up/up    169.254.0.2/16  localhost     e3b     true
    

    Facultatif : vérifiez la connectivité entre les clusters.

    ping -lif clus2 -vserver Cluster -destination <interconnect-ip-other-node>
    

    interconnect-ip-other-node: Choisissez une adresse IP intercluster à partir d'autres nœuds. Si la connectivité est établie, la commande ping devrait répondre.

  4. Définissez le mot de passe administrateur (il doit être le même sur tous les nœuds et est utilisé lorsque vous saisissez le mot de passe). Assurez-vous que le mot de passe répond aux exigences de complexité. Sinon, un avertissement s'affichera concernant les comptes utilisateur non conformes.

     ::> security login password
    
     Enter your current password: Current password is empty, press Enter
     Enter a new password: Enter NEW_PASSWORD
     Enter it again: Enter NEW_PASSWORD
    
  5. Définissez l'adresse IP et la passerelle de gestion. Consultez les instructions ci-dessous pour savoir comment obtenir les informations requises.

    ::> cluster setup
    
    Type yes to confirm and continue: yes
    Enter the node management interface port: e0M
    Enter the node management interface IP address: IP_ADDRESS
    for this node
    Enter the node management interface netmask: NETMASK for
    this IP
    Enter the node management interface default gateway:
    GATEWAY
    

    Quittez l'assistant de configuration du cluster après avoir défini la passerelle par défaut en saisissant ctrl+c.

    Exécutez la commande suivante pour obtenir les informations sur le sous-réseau :

    # cat cellcfg/*-storage.yaml | /root/release/scripts/yq_linux_amd64 'select(.kind == "StorageCluster") | (.spec.network.clusterManagement.netmask)'
    

    Un résultat semblable aux lignes suivantes doit s'afficher :

    203.0.113.0
    

    Exécutez la commande suivante pour obtenir les informations sur la passerelle :

    kubectl get subnetclaim -n root kb-ad-mgmtsw01-stge-os-subnet -o jsonpath={.status.ipv4SubnetStatus.gateway} ; echo
    

    Un résultat semblable aux lignes suivantes doit s'afficher :

    203.0.113.1
    

    Voici un exemple d'obtention d'informations sur la propriété intellectuelle :

    # cat cellcfg/*-storage.yaml | /root/release/scripts/yq_linux_amd64 'select(.kind == "StorageNode") | (.metadata.name, .spec.network.managementIP)'
    kb-ad-stge01-01
    203.0.113.0
    ---
    kb-ad-stge01-02
    203.0.113.0
    ---
    kb-ad-stge02-01
    203.0.113.0
    ---
    kb-ad-stge02-02
    203.0.113.0
    
  6. Activez SSH pour l'utilisateur administrateur :

      security login create -user-or-group-name admin -application ssh -authentication-method password -role admin
    
  7. Renommez le nœud en lui attribuant le nom spécifié dans cell.yaml.

    system node rename -node localhost -newname NODE_NAME
    
  8. Vérifiez que les disques sont correctement configurés.

    1. Exécutez storage aggregate show -fields uses-shared-disks et vérifiez que aggr0 renvoie "true". Exemple de résultat :

      ::> storage aggregate show -fields uses-shared-disks
      aggregate uses-shared-disks
      --------- -----------------
      aggr0     true
      
    2. Exécutez run -node * sysconfig -r et vérifiez que des noms d'appareils se terminant par P3 existent. Cela permet de s'assurer que les disques comportent trois partitions. Exemple de résultat :

      ::> run -node * sysconfig -r
      1 entry was acted on.
      
      Node: localhost
      Aggregate aggr0 (online, raid_dp) (block checksums)
        Plex /aggr0/plex0 (online, normal, active, pool0)
          RAID group /aggr0/plex0/rg0 (normal, block checksums)
      
            RAID Disk Device  HA  SHELF BAY CHAN Pool Type  RPM  Used (MB/blks)    Phys (MB/blks)
            --------- ------  ------------- ---- ---- ---- ----- --------------    --------------
            dparity   0n.18P3 0n    0   18         0 SSD-NVM   N/A 63849/16345536    63857/16347584
            parity    0n.19P3 0n    0   19         0 SSD-NVM   N/A 63849/16345536    63857/16347584
            data      0n.20P3 0n    0   20         0 SSD-NVM   N/A 63849/16345536    63857/16347584
            data      0n.21P3 0n    0   21         0 SSD-NVM   N/A 63849/16345536    63857/16347584
            data      0n.22P3 0n    0   22         0 SSD-NVM   N/A 63849/16345536    63857/16347584
      
    3. Exécutez run -node local disk show -n pour vérifier que les partitions de disque sont Not Owned et qu'il y a 2 * <number of disks> partitions. Cet exemple montre 24 partitions non attribuées pour 12 disques.

      ::> run -node local disk show -n
        DISK       OWNER                    POOL   SERIAL NUMBER         HOME                    DR HOME
      ------------ -------------            -----  -------------         -------------           -------------
      0n.21P1      Not Owned                  NONE   S5Y0NA0T100941NP001
      0n.21P2      Not Owned                  NONE   S5Y0NA0T100941NP002
      0n.22P1      Not Owned                  NONE   S5Y0NA0T100944NP001
      0n.22P2      Not Owned                  NONE   S5Y0NA0T100944NP002
      0n.18P1      Not Owned                  NONE   S5Y0NA0T101588NP001
      0n.18P2      Not Owned                  NONE   S5Y0NA0T101588NP002
      0n.20P1      Not Owned                  NONE   S5Y0NA0T100947NP001
      0n.20P2      Not Owned                  NONE   S5Y0NA0T100947NP002
      0n.3P1       Not Owned                  NONE   S5Y0NA0T100942NP001
      0n.3P2       Not Owned                  NONE   S5Y0NA0T100942NP002
      0n.1P1       Not Owned                  NONE   S5Y0NA0T100943NP001
      0n.1P2       Not Owned                  NONE   S5Y0NA0T100943NP002
      0n.5P1       Not Owned                  NONE   S5Y0NA0T101314NP001
      0n.5P2       Not Owned                  NONE   S5Y0NA0T101314NP002
      0n.2P1       Not Owned                  NONE   S5Y0NA0T100946NP001
      0n.2P2       Not Owned                  NONE   S5Y0NA0T100946NP002
      0n.23P1      Not Owned                  NONE   S5Y0NA0T100939NP001
      0n.23P2      Not Owned                  NONE   S5Y0NA0T100939NP002
      0n.19P1      Not Owned                  NONE   S5Y0NA0T101608NP001
      0n.19P2      Not Owned                  NONE   S5Y0NA0T101608NP002
      0n.0P1       Not Owned                  NONE   S5Y0NA0T100873NP001
      0n.0P2       Not Owned                  NONE   S5Y0NA0T100873NP002
      0n.4P1       Not Owned                  NONE   S5Y0NA0T101609NP001
      0n.4P2       Not Owned                  NONE   S5Y0NA0T101609NP002
      
    4. Si l'une de ces étapes échoue, rétablissez la configuration d'usine du système.

16.3. Configurer le protocole NTP

Obtenez les adresses IP du serveur NTP pour les relais NTP exécutés dans le cluster d'amorçage :

  kubectl get ntpservers -n ntp-system -o jsonpath='{.items[*].status.managementIP}{"\n"}'

Pour chacun des serveurs NTP, exécutez la commande suivante sur le premier nœud ONTAP :

  cluster time-service ntp server create -server NTP_SERVER_IP

Par exemple, si vos nœuds ONTAP sont kb-ad-stge01-01, kb-ad-stge01-02, kb-ad-stge02-01 et kb-ad-stge02-02, exécutez la commande sur le nœud kb-ad-stge01-01.

16.4. Vérifier le dossier cellcfg

Pour récupérer les valeurs du nom d'utilisateur et du mot de passe de stockage pour le stockage de fichiers, utilisez le fichier du fournisseur de matériel dédié au stockage, par exemple WO15_SO7100911835-2_GDCH-4d-A250-A400_DD-010223.xlsx.

16.4.1. Valider le mot de passe administrateur

Recherchez le nom du secret ONTAP référencé dans /CELLCFG/file-storage.yaml après StorageCluster.spec.adminSecretName.

Recherchez le Secret correspondant et assurez-vous que les valeurs sont renseignées. Sinon, remplacez le nom d'utilisateur et le mot de passe de l'administrateur :

  apiVersion: v1
  kind: Secret
  metadata:
    name: SECRET_NAME
    namespace: gpc-system
  type: Opaque
  stringData:
    netapp_username: admin
    netapp_password: PASSWORD

16.4.2. Vérifier les licences ONTAP

Vos licences logicielles ONTAP doivent avoir été fournies par le fournisseur de matériel.

Recherchez le champ StorageCluster.spec.licenses dans le dossier /cellcfg/af-storage.yaml et assurez-vous que les licences sont renseignées. Si ce n'est pas le cas, renseignez les champs avec les licences :

  apiVersion: ontap.netapp.storage.private.gdc.goog/v1alpha1
  kind: StorageCluster
  metadata:
    creationTimestamp: null
    name: zl-stge-clus-01
    namespace: gpc-system
  spec:
  ...
    licenses:
      - LICENSE_1
      - LICENSE_2
      - LICENSE_3

Pour référence, voici un exemple de la façon dont les entrées de licence doivent apparaître dans la configuration de la cellule :

  licenses:

  ABGITNWODUEVQELPECCAAAAAAAAA
  AHJJWYTTTXKZOFKVBTBAAAAAAAAA
  AHZTHBPQACAAAAKVBTBAAAAAAAAA
  ALTXOYXSVDDCMADPECCAAAAAAAAA
  ANWFPBPQACAAAAKVBTBAAAAAAAAA
  APLKENWODUEVQELPECCAAAAAAAAA
  ARIHVQFAHJMIWBDPECCAAAAAAAAA
  AXFTCRFAHJMIWBDPECCAAAAAAAAA

16.5. Validation préliminaire

Exécutez la commande de validation :

gdcloud system check-config --config PATH_TO_CELL_CONFIG --artifacts-directory PATH_TO_ARTIFACTS \
    --scenario FileBlockStorage

Si le journal contient des erreurs, suivez les messages pour résoudre le problème et exécutez à nouveau la validation.

16.5.1. Problèmes potentiels

Cette section présente les problèmes potentiels que vous pouvez rencontrer lors de la validation préliminaire des appliances de stockage de blocs de fichiers.

16.5.1.1. NumDisks pour StorageAggregate

Ignorez les échecs de validation liés au nombre incorrect de disques, mais vérifiez manuellement la valeur de NumDisks dans le CR StorageAggregate. Le StorageAggregate est défini dans le fichier xx-storage.yaml.

Le nombre total de disques configurés pour StorageAggregates pour une appliance de bloc de fichiers doit correspondre au nombre de disques présents dans l'appliance moins le nombre de disques de secours. Il est recommandé de réserver un disque de secours pour 12 disques.

Pour calculer la valeur de NumDisks, utilisez la formule suivante :

NumDisks = (Total_Disks/2) - ceil(Total_Disks/12)

NumDisks est égal à 10 si vous appliquez la formule à l'exemple (24/2) - ceil(24/12) décrit dans cette section.

16.6. Exécuter l'installation

Exécutez la commande d'installation :

  gdcloud system storage install -v 3 --config PATH_TO_CELL_CONFIG

Cette commande effectue les opérations suivantes :

  • Configure le cluster NetApp et ajoute les nœuds disponibles
  • Crée les agrégats
  • Configure LACP et les VLAN sur les ports de données
  • Configurer les licences
  • Configurer la surveillance
  • Configure la gestion des clés externes

Une fois la tâche terminée, exécutez node show sur la console ONTAP pour vous assurer qu'aucun avertissement de ce type n'est affiché :

kb-stge-clus-01::> node show
Node      Health Eligibility Uptime        Model       Owner    Location
--------- ------ ----------- ------------- ----------- -------- ---------------
kb-ad-stge01-01
          true   true         5 days 02:49 AFF-A250
kb-ad-stge01-02
          true   true         6 days 18:24 AFF-A250
kb-ad-stge02-01
          true   true         5 days 01:52 AFF-A800
kb-ad-stge02-02
          true   true         5 days 01:52 AFF-A800
kb-ad-stge03-01
          true   true         7 days 00:15 AFF-A400
kb-ad-stge03-02
          true   true         7 days 00:26 AFF-A400

Warning: Cluster operation (cluster join) for node "kb-ad-stge03-01" is not complete and the node is not fully functional.
         Run "cluster join" on that node to complete the operation.
6 entries were displayed.

Si c'est le cas, suivez les instructions, connectez-vous à ces nœuds et exécutez la commande cluster join correspondante pour vous assurer qu'il disparaît après l'opération.

16.7. Mettre à jour les paramètres de sécurité

  1. Définir une bannière de connexion :

    security login banner modify -vserver <cluster name> -message "<banner>"
    
  2. Limitez le délai avant expiration de la session CLI à dix minutes :

    system timeout modify 10
    
  3. Appliquez la complexité des mots de passe et le nombre maximal de tentatives de connexion pour le rôle d'administrateur :

    security login role config modify -vserver CLUSTER_NAME -role admin -passwd-minlength 15 -passwd-min-special-chars 1 -passwd-min-lowercase-chars 1 -passwd-min-uppercase-chars 1 -passwd-min-digits 1 -disallowed-reuse 25 -max-failed-login-attempts 3
    
  4. Limitez le délai avant expiration de la session de l'interface utilisateur à dix minutes :

    ::> set diag
    
    Warning: These diagnostic commands are for use by NetApp personnel only.
    Do you want to continue? {y|n}: y
    
    ::> cluster application-record create -name sysmgr.inactivitytimeout -value 10 -vserver <cluster name>
    
  5. Ajustez les paramètres de verrouillage des utilisateurs :

    ::> security login role config modify -vserver * -max-failed-login-attempts 3 -lockout-duration 1 -role *
    ::> security ssh modify -vserver * -max-authentication-retry-count 3
    
  6. Désactivez les ports USB (un redémarrage est nécessaire pour que la modification prenne effet) :

    ::> set diag
    ::*> system node usb-ports modify -node * -is-disabled-next-boot true
    
  7. Supprimez le certificat d'amorçage.

    1. Recherchez le certificat bootstrap-web-ca :

        ::> security certificate show-user-installed
      

      Si le certificat bootstrap-web-ca existe, le résultat se présente comme suit :

      Vserver    Serial Number   Certificate Name                       Type
      ---------- --------------- -------------------------------------- ------------
      aa-aa-stge01
                45B86E1B5CF1CC144B874C80A39D2A99
                                bootstrap-web-ca                       server-ca
          Certificate Authority: bootstrap-web-ca
                Expiration Date: Mon Feb 19 22:55:03 2029
      
  8. Lorsque vous souhaitez redémarrer les nœuds, redémarrez-les un par un à l'aide de la commande suivante :

    ::> system node reboot -node <node-name> -inhibit-takeover true
    

16.8. Stocker les utilisateurs ayant un accès d'urgence

Quatre comptes breakglass sont créés automatiquement et stockés en tant que secrets Kubernetes lors de la configuration.

  • storage-root-level1
  • storage-root-level1-backup
  • storage-root-level2
  • storage-root-level2-backup

Pour storage-root-level2 et storage-root-level2-backup, stockez et sécurisez vos identifiants sur papier comme indiqué :

  1. Obtenez le nom d'utilisateur et le mot de passe du secret à l'aide des commandes suivantes, en remplaçant SECRET_NAME par le secret que vous souhaitez utiliser :

    kubectl get secret -n gpc-system SECRET_NAME -o jsonpath='{.data.username}' | base64 --decode
    kubectl get secret -n gpc-system SECRET_NAME -o jsonpath='{.data.password}' | base64 --decode
    
  2. Obtenez le nom du cluster ONTAP :

      ::> cluster identity show
    
  3. Notez si des utilisateurs inattendus disposent de droits d'administrateur :

      ::> useradmin user list
    
    1. (Facultatif) Supprimez-les avec l'approbation de l'opérateur d'infrastructure. Effectuez toujours les opérations suivantes sur les charges de travail de production et des clients :
          ::> security login delete -user-or-group-name <username> -vserver <Cluster Name> -authentication-method password -application amqp
    
          ::> security login delete -user-or-group-name <username> -vserver <Cluster Name> -authentication-method password -application console
    
          ::> security login delete -user-or-group-name <username> -vserver <Cluster Name> -authentication-method password -application http
    
          ::> security login delete -user-or-group-name <username> -vserver <Cluster Name> -authentication-method password -application ontapi
    
          ::> security login delete -user-or-group-name <username> -vserver <Cluster Name> -authentication-method password -application service-processor
    
          ::> security login delete -user-or-group-name <username> -vserver <Cluster Name> -authentication-method password -application ssh
      ```
    
  4. Supprimez l'utilisateur d'administration NetApp créé à l'étape précédente.

        ::> security login delete -user-or-group-name admin -vserver <Cluster Name> -authentication-method password -application amqp
    
        ::> security login delete -user-or-group-name admin -vserver <Cluster Name> -authentication-method password -application console
    
        ::> security login delete -user-or-group-name admin -vserver <Cluster Name> -authentication-method password -application http
    
        ::> security login delete -user-or-group-name admin -vserver <Cluster Name> -authentication-method password -application ontapi
    
        ::> security login delete -user-or-group-name admin -vserver <Cluster Name> -authentication-method password -application service-processor
    
        ::> security login delete -user-or-group-name admin -vserver <Cluster Name> -authentication-method password -application ssh
    
  5. L'opérateur d'infrastructure principal note lisiblement le nom d'utilisateur et le mot de passe de chaque appliance sur des feuilles de papier distinctes. Ils plient les documents de sorte que leur contenu ne soit pas visible, les étiquettent (par exemple, "Identifiants racine pour le commutateur TOR 1") et les remettent à un ingénieur de niveau 1 pour qu'il les conserve en lieu sûr.

  6. Sous l'œil attentif du responsable des opérations d'entrée/sortie, l'ingénieur de niveau 1 range les documents dans un coffre-fort physique.

  7. L'IO ajoute une annotation aux secrets pour indiquer qu'ils ont été stockés dans le coffre-fort.

    kubectl annotate secrets storage-root-level2 -n gpc-system disk.gdc.goog/persisted=''
    

    16.9. Mettre à jour les serveurs NTP

Effectuez les étapes suivantes après l'installation du cluster d'administrateur :

  1. Obtenez les nouvelles adresses IP du serveur NTP pour les relais NTP exécutés dans le cluster d'administrateur :

    kubectl get ntpservers -n gpc-system
    
  2. Dans ONTAP, supprimez tous les serveurs NTP existants :

    cluster time-service ntp server show
    cluster time-service ntp server delete -server NTP_SERVER_IP
    
  3. Ajoutez les nouveaux serveurs NTP à ONTAP :

    cluster time-service ntp server create -server NTP_SERVER_IP