16. Arranque do cluster de armazenamento de ficheiros e blocos

Tempo estimado até à conclusão: 3 horas

Operable component owner: FILE

Perfil de competências: engenheiro de implementação

Esta página fornece instruções para configurar o armazenamento de ficheiros e blocos para o cluster com o NetApp ONTAP.

16.1. Configure os comutadores do cluster ONTAP

  1. Verifique as palavras-passe switch-xx-ad-stgesw01-admin e switch-xx-ad-stgesw02-admin (têm o mesmo valor). Se as palavras-passe não existirem, inicialize as credenciais e gere uma nova palavra-passe aleatória. Inicie sessão no comutador através da consola para definir a palavra-passe do administrador:

    # configure terminal
    # username ADMIN_USER password PASSWORD
    # exit
    # copy running-config startup-config
    
  2. Guarde as credenciais num segredo e anexe-as a 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. Execute o seguinte comando para obter os nomes dos comutadores de armazenamento:

    kubectl get storageswitch -n gpc-system
    

    Deverá ver um resultado semelhante ao seguinte:

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

    Para cada comutador, siga os passos abaixo e use o nome do comutador.

  4. Execute o seguinte comando para obter a configuração do comutador a partir do switchstaticconfig CR:

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

    Deverá ver um resultado semelhante ao seguinte:

    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. Implemente a configuração do comutador obtida no comutador através de um cabo série ou de um servidor de consola, copiando e colando o conteúdo no comutador.

    Esta configuração pressupõe que:

    • Para o A250: e0c/e0d no dispositivo de armazenamento está ligado à porta 4-6 através de um cabo de divisão.
    • Para o A400: o e3a/e3b no dispositivo de armazenamento está ligado à porta 7-34 através de um cabo de 40 GbE ou 100 GbE (não dividido).
    • Para o A800: e0a/e1a no dispositivo de armazenamento está ligado à porta 7-34 através de um cabo de 40 GbE ou 100 GbE (não dividido).

    No entanto, isto pode não ser o caso. Em muitas instalações, o dispositivo de armazenamento está ligado às portas 4 a 6, mesmo quando o dispositivo é um A400 ou um A800. Se um A400 ou um A800 estiver ligado às portas 4 a 6, ajuste a configuração do comutador para remover as seguintes linhas antes de aplicar:

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

    Em seguida, substitua esta linha:

      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
    

    Com esta opção:

      interface e1/1-34
    

    Com estas alterações, as portas 1 a 34 estão todas configuradas para cabos de 40 GbE ou 100 GbE (não divididos).

    Além disso, remova as seguintes linhas da parte do banner MOTD da configuração para evitar possíveis confusões no futuro:

    
      * 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
    

    Substitua estas linhas por:

      * Ports  1-34: 40/100GbE Intra-Cluster/HA Ports, int e1/1-34
    
  6. Confirme o CR do objeto ManagementSwitch.

    Examine o objeto do cluster KIND de arranque ManagementSwitch e encontre o CR correto que representa o comutador que contém o dispositivo de armazenamento. Identifique as portas de comutação físicas no comutador de gestão, que estão fisicamente ligadas aos comutadores de armazenamento, e confirme que estas ligações existem no CR ManagementSwitch em lacpGroups.

    Por exemplo, se a ligação de gestão ao comutador de armazenamento estiver ligada às portas 10 e 11 no comutador de gestão, confirme que as seguintes informações existem:

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

    Use o seguinte comando para obter os lacpGroups:

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

    Um exemplo de resultado deve ter o seguinte aspeto, o que lhe permite confirmar a existência das portas:

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

16.2. Inicialize os dispositivos ONTAP

Repita os passos seguintes para cada controlador nos sistemas AFF 250/400/800. Cada sistema tem dois controladores ou nós.

  1. Use a consola série e o nome de utilizador predefinido admin para estabelecer ligação ao nó do controlador de armazenamento.

  2. Verifique a versão do sistema NetApp ONTAP.

    • Execute o comando version.
    • A versão do sistema NetApp ONTAP tem de ser 9.15.1. Se a versão for anterior a 9.15.1, atualize os nós para 9.15.1 antes da inicialização do cluster de administrador da organização. Para ver detalhes, consulte o guia de atualização.
  3. Defina os endereços da interface IP de interconexão do cluster.

    Primeiro, localize o valor .spec.network.clusterInterconnectIP esperado para o StorageNode atual no 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)'
    

    A execução do comando anterior imprime os nomes de todos os StorageNodes e os respetivos valores de .spec.network.clusterInterconnectIP. Por exemplo:

    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
    

    No exemplo anterior, para o nó aa-ad-stge03-01, os IPs 169.254.0.9 e 169.254.0.10 seriam usados nos passos seguintes. Isto deve-se ao facto de 169.254.0.9 ser o IP definido no cellcfg para o nó aa-ad-stge03-01 e 169.254.0.10 ser o IP seguinte (numericamente) após 169.254.0.9.

    Em seguida, verifique os valores de IP de interligação do cluster reais para o nó atual.

    network interface show
    

    Deverá ver duas interfaces de rede a começar por 169.254, semelhante ao seguinte resultado:

    ::> 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
    

    Se o endereço da interface clus1 corresponder ao valor definido no cellcfg e o endereço da interface clus2 for o IP seguinte ao endereço clus1 (numericamente), pode ignorar o resto deste passo e avançar para o passo seguinte.

    Se vir apenas 1 interface para o servidor virtual do cluster, execute net port show para verificar se a segunda porta está em funcionamento. Se for o caso, significa que perdeu uma das interfaces e tem duas opções para corrigir o problema:

    • Opção 1: adicione manualmente o IP de interligação através do seguinte comando:

        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: escolha o IP seguinte (numericamente) após o IP de interligação do cluster especificado no cellcfg para o nó atual. Por exemplo, se o IP de interligação do cluster especificado no cellcfg para o nó atual for 169.254.0.3, escolha 169.254.0.4.

      • Porta: consoante o modelo do ONTAP, a porta pode ser diferente. Deve escolher a porta que não tem uma interface apresentada no resultado anterior.

        • Para o A250: escolha entre e0c e e0d.
        • Para o A400: escolha entre e3a e e3b.
        • Para o A800: escolha entre e0a e e1a.
    • Opção 2: reponha as definições de fábrica do nó ONTAP (isto envolve uma configuração 9a e 9b no menu de arranque do ONTAP). Execute o comando novamente após a reposição para verificar se existem 2 IPs. Tenha em atenção que é recomendável experimentar primeiro a opção 1 e só recorrer à opção 2 se as coisas não estiverem a funcionar corretamente.

    Em seguida, atualize o IP de interconexão clus1 para o valor clusterInterconnectIP especificado para o nó atual no cellcfg.

    net int modify -vserver Cluster -lif clus1 -address <interconnect-ip>
    
    • interconnect-ip: o valor clusterInterconnectIP especificado no cellcfg para o nó atual.

    Em seguida, atualize o IP de interligação clus2 para que seja o IP seguinte (numericamente) após o valor clusterInterconnectIP especificado para o nó atual no cellcfg.

    net int modify -vserver Cluster -lif clus2 -address <next-interconnect-ip>
    
    • next-interconnect-ip: escolha o IP seguinte (numericamente) após o IP de interligação do cluster especificado no cellcfg para o nó atual. Por exemplo, se o IP de interligação do cluster especificado no cellcfg para o nó atual for 169.254.0.3, escolha 169.254.0.4.

    Por último, verifique se os valores de IP de interconexão do cluster reais do nó atual correspondem aos valores esperados no cellcfg.

    network interface show
    

    Deverá ver duas interfaces de rede a começar por 169.254, semelhantes ao seguinte resultado. O endereço da interface clus1 deve corresponder ao valor definido no cellcfg. O endereço da interface clus2 deve ser o IP seguinte ao endereço clus1 (numericamente).

    ::> 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
    

    Opcional: valide a conetividade entre clusters.

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

    interconnect-ip-other-node: escolha um IP intercluster de outros nós. Se houver conetividade, o ping deve responder.

  4. Defina a palavra-passe de administrador (deve ser a mesma em todos os nós e é usada quando preenche a palavra-passe). Certifique-se de que a palavra-passe cumpre os requisitos de complexidade. Caso contrário, é apresentado um aviso sobre contas de utilizador não 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. Defina o IP de gestão e o gateway. Consulte as instruções abaixo sobre como obter as informações necessárias.

    ::> 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
    

    Saia do assistente de configuração do cluster depois de definir o gateway predefinido introduzindo ctrl+c.

    Execute o seguinte comando para obter as informações da sub-rede:

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

    Deverá ver um resultado semelhante ao seguinte:

    203.0.113.0
    

    Execute o seguinte comando para obter as informações do gateway:

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

    Deverá ver um resultado semelhante ao seguinte:

    203.0.113.1
    

    Segue-se um exemplo de como obter informações de IP:

    # 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. Ative o SSH para o utilizador administrador:

      security login create -user-or-group-name admin -application ssh -authentication-method password -role admin
    
  7. Mude o nome do nó para o nome especificado em cell.yaml.

    system node rename -node localhost -newname NODE_NAME
    
  8. Verifique se os discos estão configurados corretamente.

    1. Execute storage aggregate show -fields uses-shared-disks e verifique se aggr0 devolve o valor verdadeiro. Exemplo de saída:

      ::> storage aggregate show -fields uses-shared-disks
      aggregate uses-shared-disks
      --------- -----------------
      aggr0     true
      
    2. Execute run -node * sysconfig -r e verifique se existem nomes de dispositivos que terminam em P3. Isto serve para garantir que os discos têm 3 partições. Exemplo de saída:

      ::> 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. Execute run -node local disk show -n para verificar se as partições do disco são Not Owned e se existem 2 * <number of disks> partições. Este exemplo mostra 24 partições não pertencentes a ninguém para 12 discos.

      ::> 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. Se algum destes passos falhar, faça uma reposição de fábrica do sistema.

16.3. Configure o Network Time Protocol

Obtenha os IPs do servidor NTP para os retransmissores NTP em execução no cluster de arranque:

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

Para cada um dos servidores NTP, execute o seguinte comando no primeiro nó do ONTAP:

  cluster time-service ntp server create -server NTP_SERVER_IP

Por exemplo, se os seus nós ONTAP forem kb-ad-stge01-01, kb-ad-stge01-02, kb-ad-stge02-01 e kb-ad-stge02-02, execute o comando no nó kb-ad-stge01-01.

16.4. Verifique a pasta cellcfg

Para obter os valores do nome de utilizador e da palavra-passe de armazenamento para o armazenamento de ficheiros, use o ficheiro do fornecedor de hardware dedicado ao armazenamento, por exemplo, WO15_SO7100911835-2_GDCH-4d-A250-A400_DD-010223.xlsx

16.4.1. Valide a palavra-passe de administrador

Encontre o nome do segredo do ONTAP referenciado em /CELLCFG/file-storage.yaml após StorageCluster.spec.adminSecretName.

Encontre o segredo correspondente e certifique-se de que os valores estão preenchidos. Caso contrário, substitua o nome de utilizador e a palavra-passe de administrador:

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

16.4.2. Valide as licenças do ONTAP

As suas licenças de software ONTAP têm de ter sido fornecidas pelo fornecedor de hardware.

Localize o campo StorageCluster.spec.licenses na pasta /cellcfg/af-storage.yaml e certifique-se de que as licenças estão preenchidas. Caso contrário, preencha os campos com as licenças:

  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

Para referência, segue-se um exemplo de como as entradas de licença devem ser apresentadas na configuração da célula:

  licenses:

  ABGITNWODUEVQELPECCAAAAAAAAA
  AHJJWYTTTXKZOFKVBTBAAAAAAAAA
  AHZTHBPQACAAAAKVBTBAAAAAAAAA
  ALTXOYXSVDDCMADPECCAAAAAAAAA
  ANWFPBPQACAAAAKVBTBAAAAAAAAA
  APLKENWODUEVQELPECCAAAAAAAAA
  ARIHVQFAHJMIWBDPECCAAAAAAAAA
  AXFTCRFAHJMIWBDPECCAAAAAAAAA

16.5. Validação prévia

Execute o comando de validação:

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

Se existirem erros no registo, siga as mensagens para corrigir o problema e execute a validação novamente.

16.5.1. Potenciais problemas

Esta secção contém potenciais problemas que pode encontrar ao realizar a validação prévia dos dispositivos de armazenamento de blocos de ficheiros.

16.5.1.1. NumDisks para StorageAggregate

Ignore as falhas de validação na contagem de discos incorreta, mas valide manualmente o valor de NumDisks no CR StorageAggregate. O StorageAggregate está definido no ficheiro xx-storage.yaml.

O número total de discos configurados para StorageAggregates para um dispositivo de bloco de ficheiros tem de corresponder ao número de discos apresentados no dispositivo menos o número de discos sobresselentes. A prática recomendada é reservar um disco sobresselente para cada 12 discos.

Para calcular o valor de NumDisks, use a seguinte fórmula:

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

NumDisks é igual a 10 se aplicar a fórmula ao exemplo (24/2) - ceil(24/12) descrito nesta secção.

16.6. Execute a instalação

Execute o comando de instalação:

  gdcloud system storage install -v 3 --config PATH_TO_CELL_CONFIG

Este comando faz o seguinte:

  • Configura o cluster NetApp e adiciona nós disponíveis
  • Cria os agregados
  • Configura o LACP e as VLANs nas portas de dados
  • Configure licenças
  • Configure a monitorização
  • Configura a gestão de chaves externas

Após a conclusão da tarefa, execute node show na consola do ONTAP para se certificar de que não existem avisos como estes:

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.

Se existirem, siga as instruções e inicie sessão nestes nós e execute o comando cluster join correspondente para se certificar de que desaparece após a operação.

16.7. Atualize as definições de segurança

  1. Defina a faixa de início de sessão:

    security login banner modify -vserver <cluster name> -message "<banner>"
    
  2. Limite o limite de tempo da sessão da CLI a dez minutos:

    system timeout modify 10
    
  3. Aplique a complexidade da palavra-passe e o número máximo de tentativas de início de sessão na função de administrador:

    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. Limite o limite de tempo da sessão da IU a dez minutos:

    ::> 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. Ajuste as definições de bloqueio de utilizadores:

    ::> 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. Desative as portas USB (é necessário reiniciar para que a alteração entre em vigor):

    ::> set diag
    ::*> system node usb-ports modify -node * -is-disabled-next-boot true
    
  7. Remova o certificado de arranque.

    1. Encontre o certificado bootstrap-web-ca:

        ::> security certificate show-user-installed
      

      O resultado tem o seguinte aspeto se o certificado bootstrap-web-ca existir:

      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. Quando quiser reiniciar os nós, reinicie-os um de cada vez com o seguinte comando:

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

16.8. Armazene utilizadores de acesso de emergência

São criadas automaticamente quatro contas de acesso de emergência e armazenadas como os seguintes segredos do Kubernetes durante a configuração.

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

Para storage-root-level2 e storage-root-level2-backup, armazene e proteja as suas credenciais em papel, conforme prescrito:

  1. Obtenha o nome de utilizador e a palavra-passe do segredo com os seguintes comandos, substituindo SECRET_NAME pelo segredo que quer usar:

    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. Obtenha o nome do cluster ONTAP:

      ::> cluster identity show
    
  3. Verifique se existem utilizadores inesperados com privilégios de administrador:

      ::> useradmin user list
    
    1. Opcional: elimine-os com a aprovação do operador de infraestrutura. Realize sempre em cargas de trabalho de produção e de clientes:
          ::> 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. Elimine o utilizador de administração do NetApp criado no passo anterior.

        ::> 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. O operador de infraestrutura (IO) principal anota o nome de utilizador e a palavra-passe de cada dispositivo de forma legível em papéis separados. Dobram os papéis de forma que o conteúdo não fique visível, etiquetam os papéis, por exemplo, "Credenciais de raiz para o comutador TOR 1", e entregam-nos a um engenheiro de nível 1 para serem guardados em segurança.

  6. Com a supervisão do IO principal, o engenheiro de nível 1 guarda os documentos num cofre físico.

  7. O IO adiciona anotações aos segredos para marcar que o segredo foi armazenado no cofre.

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

    16.9. Atualize os servidores NTP

Execute estes passos após a instalação do cluster de administrador:

  1. Obtenha os novos IPs do servidor NTP para os retransmissores NTP em execução no cluster de administração:

    kubectl get ntpservers -n gpc-system
    
  2. No ONTAP, elimine todos os servidores NTP existentes:

    cluster time-service ntp server show
    cluster time-service ntp server delete -server NTP_SERVER_IP
    
  3. Adicione os novos servidores NTP ao ONTAP:

    cluster time-service ntp server create -server NTP_SERVER_IP