16. Bootstrap cluster penyimpanan file dan blok

Perkiraan waktu penyelesaian: 3 jam

Pemilik komponen yang dapat dioperasikan: FILE

Profil keterampilan: engineer deployment

Halaman ini memberikan petunjuk untuk menyiapkan penyimpanan file dan blok untuk cluster menggunakan NetApp ONTAP.

16.1. Mengonfigurasi switch cluster ONTAP

  1. Periksa sandi switch-xx-ad-stgesw01-admin dan switch-xx-ad-stgesw02-admin (keduanya akan memiliki nilai yang sama). Jika sandi tidak ada, inisialisasi kredensial dan buat sandi acak baru. Login ke switch melalui konsol untuk menyetel sandi administrator:

    # configure terminal
    # username ADMIN_USER password PASSWORD
    # exit
    # copy running-config startup-config
    
  2. Simpan kredensial di Secret dan tambahkan ke 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. Jalankan perintah berikut untuk mendapatkan nama switch penyimpanan:

    kubectl get storageswitch -n gpc-system
    

    Anda akan melihat output yang mirip dengan berikut ini:

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

    Untuk setiap switch, lakukan langkah-langkah berikut dan gunakan nama switch.

  4. Jalankan perintah berikut untuk mengambil konfigurasi switch dari CR switchstaticconfig:

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

    Anda akan melihat output yang mirip dengan berikut ini:

    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. Deploy konfigurasi switch yang diperoleh ke switch menggunakan kabel serial atau server konsol dengan menyalin dan menempelkan konten ke switch.

    Konfigurasi ini mengasumsikan bahwa:

    • Untuk A250: e0c/e0d di perangkat penyimpanan terhubung ke port 4-6 menggunakan kabel breakout.
    • Untuk A400: e3a/e3b di perangkat penyimpanan terhubung ke port 7-34 menggunakan kabel 40GbE atau 100GbE (non-breakout).
    • Untuk A800: e0a/e1a di perangkat penyimpanan terhubung ke port 7-34 menggunakan kabel 40GbE atau 100GbE (non-breakout).

    Namun, hal ini mungkin tidak terjadi. Di banyak penginstalan, perangkat penyimpanan terhubung ke port 4-6, meskipun perangkatnya adalah A400 atau A800. Jika A400 atau A800 terhubung ke port 4-6, sesuaikan konfigurasi switch untuk menghapus baris berikut sebelum menerapkan:

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

    Kemudian, ganti baris ini:

      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
    

    Dengan ini:

      interface e1/1-34
    

    Dengan perubahan ini, port 1-34 semuanya dikonfigurasi untuk kabel 40GbE atau 100GbE (non-breakout).

    Selain itu, hapus baris berikut dari bagian banner MOTD pada konfigurasi untuk menghindari kemungkinan kebingungan di masa mendatang:

    
      * 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
    

    Ganti baris ini dengan:

      * Ports  1-34: 40/100GbE Intra-Cluster/HA Ports, int e1/1-34
    
  6. Konfirmasi CR objek ManagementSwitch.

    Lihat objek ManagementSwitch cluster KIND bootstrap dan temukan CR yang benar yang merepresentasikan switch yang menyimpan perangkat penyimpanan. Identifikasi switchport fisik pada switch pengelolaan, yang terhubung secara fisik ke switch penyimpanan, dan konfirmasi bahwa koneksi ini ada di CR ManagementSwitch di lacpGroups.

    Misalnya, jika koneksi pengelolaan ke switch penyimpanan terhubung ke port 10 dan 11 di switch pengelolaan, konfirmasi bahwa info berikut ada:

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

    Gunakan perintah berikut untuk mendapatkan lacpGroups:

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

    Contoh output akan terlihat seperti ini, sehingga Anda dapat mengonfirmasi keberadaan port:

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

16.2. Menginisialisasi appliance ONTAP

Ulangi langkah-langkah berikut untuk setiap pengontrol pada sistem AFF 250/400/800. Setiap sistem memiliki dua pengontrol atau node.

  1. Gunakan konsol serial dan nama pengguna default admin untuk terhubung ke node pengontrol penyimpanan.

  2. Verifikasi versi sistem NetApp ONTAP.

    • Jalankan perintah version.
    • Versi sistem NetApp ONTAP harus 9.15.1. Jika versinya lebih lama dari 9.15.1, upgrade node ke 9.15.1 sebelum bootstrap cluster admin org. Untuk mengetahui detailnya, lihat Panduan Upgrade.
  3. Tetapkan alamat antarmuka IP interkoneksi cluster.

    Pertama, temukan nilai .spec.network.clusterInterconnectIP yang diharapkan untuk StorageNode saat ini di 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)'
    

    Menjalankan perintah sebelumnya akan mencetak nama semua StorageNode dan nilai .spec.network.clusterInterconnectIP-nya. Contoh:

    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
    

    Dari contoh sebelumnya, untuk node aa-ad-stge03-01, IP 169.254.0.9 dan 169.254.0.10 akan digunakan pada langkah-langkah berikut. Hal ini karena 169.254.0.9 adalah IP yang ditentukan dalam cellcfg untuk node aa-ad-stge03-01 dan 169.254.0.10 adalah IP berikutnya (secara numerik) setelah 169.254.0.9.

    Selanjutnya, periksa nilai IP interkoneksi cluster yang sebenarnya untuk node saat ini.

    network interface show
    

    Anda akan melihat dua antarmuka jaringan yang dimulai dengan 169.254, mirip dengan output berikut:

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

    Jika alamat untuk antarmuka clus1 cocok dengan nilai yang ditentukan dalam cellcfg dan alamat untuk antarmuka clus2 adalah IP berikutnya setelah alamat clus1 (secara numerik), Anda dapat melewati langkah ini dan melanjutkan ke langkah berikutnya.

    Jika Anda hanya melihat 1 antarmuka untuk vserver Cluster, jalankan net port show untuk memverifikasi bahwa port kedua sudah aktif dan berjalan. Jika demikian, berarti Anda melewatkan salah satu antarmuka dan Anda memiliki dua opsi untuk memperbaikinya:

    • Opsi 1: Tambahkan IP interconnect secara manual dengan perintah berikut:

        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: Pilih IP berikutnya (secara numerik) setelah IP interconnect cluster yang ditentukan dalam cellcfg untuk node saat ini. Misalnya, jika IP interkoneksi cluster yang ditentukan dalam cellcfg untuk node saat ini adalah 169.254.0.3, pilih 169.254.0.4.

      • port: Bergantung pada model ONTAP, port dapat berbeda. Anda harus memilih port yang tidak memiliki antarmuka yang ditampilkan dalam output sebelumnya.

        • Untuk A250: pilih antara e0c dan e0d.
        • Untuk A400: pilih antara e3a dan e3b.
        • Untuk A800: pilih antara e0a dan e1a.
    • Opsi 2: Reset ke setelan pabrik node ONTAP (Opsi ini melibatkan config 9a dan 9b di menu boot ONTAP). Jalankan kembali perintah setelah reset untuk memeriksa apakah ada 2 IP. Perhatikan bahwa sebaiknya coba opsi 1 terlebih dahulu dan hanya beralih ke opsi 2 jika tidak berfungsi dengan benar.

    Selanjutnya, perbarui IP interkoneksi clus1 menjadi nilai clusterInterconnectIP yang ditentukan untuk node saat ini di cellcfg.

    net int modify -vserver Cluster -lif clus1 -address <interconnect-ip>
    
    • interconnect-ip: Nilai clusterInterconnectIP yang ditentukan dalam cellcfg untuk node saat ini.

    Selanjutnya, perbarui IP interkoneksi clus2 menjadi IP berikutnya (secara numerik) setelah nilai clusterInterconnectIP yang ditentukan untuk node saat ini di cellcfg.

    net int modify -vserver Cluster -lif clus2 -address <next-interconnect-ip>
    
    • next-interconnect-ip: Pilih IP berikutnya (secara numerik) setelah IP interkoneksi cluster yang ditentukan dalam cellcfg untuk node saat ini. Misalnya, jika IP interkoneksi cluster yang ditentukan dalam cellcfg untuk node saat ini adalah 169.254.0.3, pilih 169.254.0.4.

    Terakhir, periksa nilai IP interkoneksi cluster yang sebenarnya untuk node saat ini agar cocok dengan nilai yang diharapkan dalam cellcfg.

    network interface show
    

    Anda akan melihat dua antarmuka jaringan yang dimulai dengan 169.254, mirip dengan output berikut. Alamat untuk antarmuka clus1 harus cocok dengan nilai yang ditentukan dalam cellcfg. Alamat untuk antarmuka clus2 harus berupa IP berikutnya setelah alamat clus1 (secara numerik).

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

    Opsional: verifikasi konektivitas antar-cluster.

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

    interconnect-ip-other-node: Pilih IP intercluster dari node lain. Jika ada konektivitas, ping akan membalas.

  4. Tetapkan sandi admin (sandi ini harus sama di semua node dan digunakan saat mengisi sandi). Pastikan sandi memenuhi persyaratan kerumitan atau Anda akan melihat peringatan tentang akun pengguna yang tidak mematuhi persyaratan.

     ::> 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. Tetapkan IP dan gateway pengelolaan. Lihat petunjuk di bawah tentang cara mendapatkan informasi yang diperlukan.

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

    Keluar dari wizard penyiapan cluster setelah menyetel gateway default dengan memasukkan ctrl+c.

    Jalankan perintah berikut untuk mendapatkan informasi subnet:

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

    Anda akan melihat output yang mirip dengan berikut ini:

    203.0.113.0
    

    Jalankan perintah berikut untuk mendapatkan informasi gateway:

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

    Anda akan melihat output yang mirip dengan berikut ini:

    203.0.113.1
    

    Berikut adalah contoh cara mendapatkan informasi 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. Aktifkan SSH untuk pengguna admin:

      security login create -user-or-group-name admin -application ssh -authentication-method password -role admin
    
  7. Ganti nama node menjadi nama yang ditentukan dalam cell.yaml.

    system node rename -node localhost -newname NODE_NAME
    
  8. Pastikan disk dikonfigurasi dengan benar.

    1. Jalankan storage aggregate show -fields uses-shared-disks dan verifikasi bahwa aggr0 menampilkan nilai benar (true). Contoh output:

      ::> storage aggregate show -fields uses-shared-disks
      aggregate uses-shared-disks
      --------- -----------------
      aggr0     true
      
    2. Jalankan run -node * sysconfig -r dan verifikasi bahwa ada nama perangkat yang berakhiran P3. Hal ini untuk memastikan disk memiliki 3 partisi. Contoh output:

      ::> 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. Jalankan run -node local disk show -n untuk memverifikasi bahwa partisi disk adalah Not Owned dan ada 2 * <number of disks> partisi. Contoh ini menunjukkan 24 partisi yang tidak dimiliki untuk 12 disk.

      ::> 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. Jika salah satu langkah ini gagal, reset sistem ke setelan pabrik.

16.3. Menyiapkan Network Time Protocol

Dapatkan IP server NTP untuk relay NTP yang berjalan di bootstrap cluster:

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

Untuk setiap server NTP, jalankan perintah berikut di node ONTAP pertama:

  cluster time-service ntp server create -server NTP_SERVER_IP

Misalnya, jika node ONTAP Anda adalah kb-ad-stge01-01, kb-ad-stge01-02, kb-ad-stge02-01, dan kb-ad-stge02-02, Anda menjalankan perintah di node kb-ad-stge01-01.

16.4. Periksa folder cellcfg

Untuk mengambil nilai nama pengguna dan sandi penyimpanan untuk penyimpanan file, gunakan file vendor hardware yang dikhususkan untuk penyimpanan, misalnya, WO15_SO7100911835-2_GDCH-4d-A250-A400_DD-010223.xlsx

16.4.1. Verifikasi sandi admin

Temukan nama secret ONTAP yang dirujuk di /CELLCFG/file-storage.yaml setelah StorageCluster.spec.adminSecretName.

Temukan Secret yang sesuai dan pastikan nilainya terisi. Jika tidak, ganti nama pengguna dan sandi admin:

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

16.4.2. Memverifikasi lisensi ONTAP

Lisensi software ONTAP Anda harus disediakan oleh vendor HW.

Temukan kolom StorageCluster.spec.licenses di folder /cellcfg/af-storage.yaml dan pastikan lisensi diisi. Jika tidak, isi kolom dengan lisensi:

  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

Sebagai referensi, berikut adalah contoh tampilan entri lisensi dalam konfigurasi sel:

  licenses:

  ABGITNWODUEVQELPECCAAAAAAAAA
  AHJJWYTTTXKZOFKVBTBAAAAAAAAA
  AHZTHBPQACAAAAKVBTBAAAAAAAAA
  ALTXOYXSVDDCMADPECCAAAAAAAAA
  ANWFPBPQACAAAAKVBTBAAAAAAAAA
  APLKENWODUEVQELPECCAAAAAAAAA
  ARIHVQFAHJMIWBDPECCAAAAAAAAA
  AXFTCRFAHJMIWBDPECCAAAAAAAAA

16.5. Validasi preflight

Jalankan perintah validasi:

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

Jika ada error dalam log, ikuti pesan untuk memperbaiki masalah dan jalankan validasi lagi.

16.5.1. Potensi masalah

Bagian ini berisi potensi masalah yang mungkin Anda temui saat melakukan validasi pra-penerbangan pada perangkat penyimpanan blok file.

16.5.1.1. NumDisks untuk StorageAggregate

Abaikan kegagalan validasi pada jumlah disk yang salah, tetapi verifikasi nilai NumDisks secara manual di CR StorageAggregate. StorageAggregate ditentukan dalam file xx-storage.yaml.

Jumlah total disk yang dikonfigurasi untuk StorageAggregates untuk satu appliance blok file harus sama dengan jumlah disk yang ditampilkan di appliance dikurangi jumlah disk cadangan. Praktik terbaiknya adalah mencadangkan satu disk cadangan untuk setiap 12 disk.

Untuk menghitung nilai NumDisks, gunakan rumus berikut:

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

NumDisks sama dengan 10 jika Anda menerapkan formula ke contoh (24/2) - ceil(24/12) yang dijelaskan di bagian ini.

16.6. Jalankan penginstalan

Jalankan perintah penginstalan:

  gdcloud system storage install -v 3 --config PATH_TO_CELL_CONFIG

Perintah ini akan melakukan hal berikut:

  • Menyiapkan cluster NetApp dan menambahkan node yang tersedia
  • Membuat agregat
  • Menyiapkan LACP dan VLAN di port data
  • Menyiapkan lisensi
  • Mengonfigurasi Monitoring
  • Mengonfigurasi pengelolaan kunci eksternal

Setelah tugas selesai, jalankan node show di konsol ONTAP untuk memastikan tidak ada peringatan seperti ini:

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.

Jika ada, ikuti petunjuk dan login ke node ini, lalu jalankan perintah cluster join yang sesuai untuk memastikan perintah tersebut hilang setelah operasi.

16.7. Memperbarui setelan keamanan

  1. Menetapkan banner login:

    security login banner modify -vserver <cluster name> -message "<banner>"
    
  2. Membatasi waktu tunggu sesi CLI hingga sepuluh menit:

    system timeout modify 10
    
  3. Menerapkan kerumitan sandi dan upaya login maksimum pada peran admin:

    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. Membatasi waktu tunggu sesi UI hingga sepuluh menit:

    ::> 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. Menyesuaikan setelan penguncian pengguna:

    ::> 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. Menonaktifkan port USB (perlu mulai ulang agar dapat diterapkan):

    ::> set diag
    ::*> system node usb-ports modify -node * -is-disabled-next-boot true
    
  7. Hapus sertifikat bootstrap.

    1. Temukan sertifikat bootstrap-web-ca:

        ::> security certificate show-user-installed
      

      Outputnya akan terlihat seperti ini jika sertifikat bootstrap-web-ca ada:

      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. Saat Anda ingin memulai ulang node, mulai ulang node satu per satu dengan perintah berikut:

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

16.8. Menyimpan pengguna akses darurat

Empat akun breakglass dibuat secara otomatis dan disimpan sebagai secret Kubernetes berikut selama penyiapan.

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

Untuk storage-root-level2 dan storage-root-level2-backup, simpan dan amankan kredensial Anda di atas kertas seperti yang ditentukan:

  1. Dapatkan nama pengguna dan sandi dari secret dengan perintah berikut, ganti SECRET_NAME dengan secret yang ingin Anda gunakan:

    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. Dapatkan nama cluster ONTAP:

      ::> cluster identity show
    
  3. Perhatikan apakah ada pengguna yang tidak terduga dengan hak istimewa administrator:

      ::> useradmin user list
    
    1. Opsional: Hapus dengan persetujuan dari Operator Infrastruktur. Selalu lakukan pada workload produksi dan pelanggan:
          ::> 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. Hapus pengguna administrasi NetApp yang dibuat di langkah sebelumnya.

        ::> 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. Operator infrastruktur (IO) utama menuliskan nama pengguna dan sandi untuk setiap perangkat dengan jelas di kertas terpisah. Mereka melipat kertas sedemikian rupa sehingga isinya tidak terlihat, memberi label pada kertas tersebut, misalnya "Kredensial root untuk switch TOR 1", dan menyerahkannya kepada engineer L1 untuk disimpan dengan aman.

  6. Dengan pengawasan IO utama, engineer L1 menyimpan dokumen di brankas fisik.

  7. IO menambahkan anotasi ke secret untuk menandai bahwa secret telah disimpan di brankas.

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

    16.9. Memperbarui server NTP

Lakukan langkah-langkah berikut setelah cluster admin diinstal:

  1. Dapatkan IP server NTP baru untuk relay NTP yang berjalan di cluster admin:

    kubectl get ntpservers -n gpc-system
    
  2. Di ONTAP, hapus semua server NTP yang ada:

    cluster time-service ntp server show
    cluster time-service ntp server delete -server NTP_SERVER_IP
    
  3. Tambahkan server NTP baru ke ONTAP:

    cluster time-service ntp server create -server NTP_SERVER_IP