작동 가능한 구성요소 소유자: FILE
기술 프로필: 배포 엔지니어 이 페이지에서는 NetApp ONTAP를 사용하여 클러스터의 파일 및 블록 스토리지를 설정하는 방법을 설명합니다.16.1. ONTAP 클러스터 스위치 구성
비밀번호
switch-xx-ad-stgesw01-admin및switch-xx-ad-stgesw02-admin를 확인합니다 (값이 동일함). 비밀번호가 없으면 사용자 인증 정보를 초기화하고 새 무작위 비밀번호를 생성합니다. 콘솔을 통해 스위치에 로그인하여 관리자 비밀번호를 설정합니다.# configure terminal # username ADMIN_USER password PASSWORD # exit # copy running-config startup-config사용자 인증 정보를 보안 비밀에 저장하고
cell.yaml에 추가apiVersion: v1 kind: Secret metadata: name: netapp-ontap-cluster-switch-credential namespace: gpc-system type: Opaque stringData: username: ADMIN_USER password: PASSWORD다음 명령어를 실행하여 스토리지 스위치의 이름을 가져옵니다.
kubectl get storageswitch -n gpc-system다음과 비슷한 출력이 표시됩니다.
NAME AGE MANAGEMENTIP kb-ab-stgesw01 10d 192.0.2.0 kb-ab-stgesw02 10d 192.0.2.1각 스위치에 대해 다음 단계를 수행하고 스위치 이름을 사용합니다.
다음 명령어를 실행하여
switchstaticconfigCR에서 스위치 구성을 가져옵니다.kubectl get switchstaticconfigs -n gpc-system $SWITCH_NAME-static-config -o yaml | /root/release/scripts/yq_linux_amd64 '.spec.config'다음과 비슷한 출력이 표시됩니다.
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 !콘텐츠를 스위치에 복사하여 붙여넣어 직렬 케이블이나 콘솔 서버를 사용하여 획득한 스위치 구성을 스위치에 배포합니다.
이 구성에서는 다음을 가정합니다.
- A250: 스토리지 기기의 e0c/e0d가 브레이크아웃 케이블을 사용하여 포트 4~6에 연결됩니다.
- A400: 스토리지 기기의 e3a/e3b가 40GbE 또는 100GbE (브레이크아웃 아님) 케이블을 사용하여 포트 7~34에 연결됩니다.
- A800: 스토리지 기기의 e0a/e1a가 40GbE 또는 100GbE (브레이크아웃 아님) 케이블을 사용하여 포트 7~34에 연결됩니다.
하지만 그렇지 않을 수도 있습니다. 많은 설치에서 기기가 A400 또는 A800인 경우에도 저장장치가 포트 4~6에 연결됩니다. A400 또는 A800이 포트 4~6에 연결된 경우 스위치 구성을 조정하여 다음 줄을 삭제한 후 적용합니다.
interface breakout module 1 port 1-3 map 10g-4x interface breakout module 1 port 4-6 map 25g-4x그런 다음 이 줄을 다음으로 바꿉니다.
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다음과 같이 바꿉니다.
interface e1/1-34이러한 변경사항으로 인해 포트 1~34가 모두 40GbE 또는 100GbE (브레이크아웃 아님) 케이블로 구성됩니다.
또한 향후 혼동을 방지하기 위해 구성의 MOTD 배너 부분에서 다음 줄을 삭제합니다.
* 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 1-34: 40/100GbE Intra-Cluster/HA Ports, int e1/1-34ManagementSwitch 객체 CR을 확인합니다.
부트스트랩 KIND 클러스터
ManagementSwitch객체를 살펴보고 스토리지 기기를 보유하는 스위치를 나타내는 올바른 CR을 찾습니다. 관리 스위치에서 스토리지 스위치에 물리적으로 연결된 물리적 스위치 포트를 식별하고 이러한 연결이 lacpGroups의 ManagementSwitch CR에 있는지 확인합니다.예를 들어 스토리지 스위치에 대한 관리 연결이 관리 스위치의 포트 10과 11에 연결된 경우 다음 정보가 있는지 확인합니다.
kind: ManagementSwitch spec: ... serverNetwork: ... lacpGroups: - - 10 - - 11다음 명령어를 사용하여 lacpGroups를 가져옵니다.
kubectl get ManagementSwitchinternal <switch-name> --namespace=gpc-system -o=jsonpath='{.spec.serverNetwork.lacpGroups}'다음과 같은 출력 예시를 통해 포트가 있는지 확인할 수 있습니다.
[[1],[2],[3],[4],[5],[6]]
16.2. ONTAP 어플라이언스 초기화
AFF 250/400/800 시스템의 각 컨트롤러에 대해 다음 단계를 반복합니다. 각 시스템에는 컨트롤러 또는 노드가 두 개 있습니다.
직렬 콘솔과 기본 사용자 이름
admin를 사용하여 스토리지 컨트롤러 노드에 연결합니다.NetApp ONTAP 시스템의 버전을 확인합니다.
version명령어를 실행합니다.- NetApp ONTAP 시스템 버전은 9.15.1이어야 합니다. 버전이 9.15.1 이전인 경우 조직 관리자 클러스터 부트스트랩 전에 노드를 9.15.1로 업그레이드합니다. 자세한 내용은 업그레이드 가이드를 참고하세요.
클러스터 상호 연결 IP 인터페이스 주소를 설정합니다.
먼저 cellcfg에서 현재
StorageNode의 예상.spec.network.clusterInterconnectIP값을 찾습니다.# 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)'위 명령어를 실행하면 모든
StorageNode의 이름과.spec.network.clusterInterconnectIP값이 출력됩니다. 예를 들면 다음과 같습니다.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위의 예에서 노드
aa-ad-stge03-01의 경우 다음 단계에서 IP169.254.0.9및169.254.0.10가 사용됩니다. 이는169.254.0.9가 노드aa-ad-stge03-01의 cellcfg에 정의된 IP이고169.254.0.10가169.254.0.9다음 IP (숫자)이기 때문입니다.그런 다음 현재 노드의 실제 클러스터 상호 연결 IP 값을 확인합니다.
network interface show다음 출력과 같이
169.254로 시작하는 네트워크 인터페이스가 두 개 표시됩니다.::> 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 trueclus1인터페이스의 주소가 cellcfg에 정의된 값과 일치하고clus2인터페이스의 주소가clus1주소 (숫자) 다음 IP인 경우 이 단계의 나머지를 건너뛰고 다음 단계로 진행하면 됩니다.클러스터 vserver의 인터페이스가 1개만 표시되면
net port show를 실행하여 두 번째 포트가 작동하는지 확인합니다. 이 경우 인터페이스 중 하나를 누락한 것이므로 다음 두 가지 옵션으로 수정할 수 있습니다.옵션 1: 다음 명령어를 사용하여 인터커넥트 IP를 수동으로 추가합니다.
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: 현재 노드의 cellcfg에 지정된 클러스터 상호 연결 IP 다음 IP (숫자 순서)를 선택합니다. 예를 들어 현재 노드의 cellcfg에 지정된 클러스터 상호 연결 IP가
169.254.0.3인 경우169.254.0.4을 선택합니다.포트: ONTAP 모델에 따라 포트가 다를 수 있습니다. 이전 출력에 인터페이스가 표시되지 않는 포트를 선택해야 합니다.
- A250의 경우 e0c와 e0d 중에서 선택합니다.
- A400의 경우 e3a와 e3b 중에서 선택합니다.
- A800: e0a와 e1a 중에서 선택합니다.
옵션 2: ONTAP 노드를 공장 초기화합니다 (ONTAP 부팅 메뉴에서 구성 9a 및 9b가 포함됨). 재설정 후 명령어를 다시 실행하여 IP가 2개 있는지 확인합니다. 옵션 1을 먼저 시도하고 문제가 발생할 경우에만 옵션 2로 대체하는 것이 좋습니다.
그런 다음
clus1상호 연결 IP를 cellcfg에서 현재 노드에 지정된clusterInterconnectIP값으로 업데이트합니다.net int modify -vserver Cluster -lif clus1 -address <interconnect-ip>- interconnect-ip: 현재 노드의 cellcfg에 지정된
clusterInterconnectIP값입니다.
다음으로
clus2상호 연결 IP가 cellcfg에서 현재 노드에 지정된clusterInterconnectIP값 다음의 IP (숫자)가 되도록 업데이트합니다.net int modify -vserver Cluster -lif clus2 -address <next-interconnect-ip>- next-interconnect-ip: 현재 노드의 cellcfg에 지정된 클러스터 상호 연결 IP 다음의 IP (숫자 순서)를 선택합니다. 예를 들어 현재 노드의 cellcfg에 지정된 클러스터 상호 연결 IP가
169.254.0.3인 경우169.254.0.4을 선택합니다.
마지막으로 현재 노드의 실제 클러스터 상호 연결 IP 값이 cellcfg에서 예상되는 값과 일치하는지 확인합니다.
network interface show다음 출력과 같이
169.254로 시작하는 네트워크 인터페이스 두 개가 표시됩니다.clus1인터페이스의 주소는 cellcfg에 정의된 값과 일치해야 합니다.clus2인터페이스의 주소는clus1주소 (숫자) 다음 IP여야 합니다.::> 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선택사항: 클러스터 간 연결을 확인합니다.
ping -lif clus2 -vserver Cluster -destination <interconnect-ip-other-node>interconnect-ip-other-node: 다른 노드에서 클러스터 간 IP를 선택합니다. 연결이 있으면 핑이 응답해야 합니다.
관리자 비밀번호를 설정합니다 (모든 노드에서 동일해야 하며 비밀번호를 입력할 때 사용됨). 비밀번호가 복잡성 요구사항을 충족하는지 확인하세요. 그렇지 않으면 정책을 준수하지 않는 사용자 계정에 관한 경고가 표시됩니다.
::> 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관리 IP와 게이트웨이를 설정합니다. 필요한 정보를 얻는 방법은 아래 안내를 참고하세요.
::> 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: GATEWAYctrl+c를 입력하여 기본 게이트웨이를 설정한 후 클러스터 설정 마법사를 종료합니다.다음 명령어를 실행하여 서브넷 정보를 가져옵니다.
# cat cellcfg/*-storage.yaml | /root/release/scripts/yq_linux_amd64 'select(.kind == "StorageCluster") | (.spec.network.clusterManagement.netmask)'다음과 비슷한 출력이 표시됩니다.
203.0.113.0다음 명령어를 실행하여 게이트웨이 정보를 가져옵니다.
kubectl get subnetclaim -n root kb-ad-mgmtsw01-stge-os-subnet -o jsonpath={.status.ipv4SubnetStatus.gateway} ; echo다음과 비슷한 출력이 표시됩니다.
203.0.113.1다음은 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관리자 사용자에 대해 SSH를 사용 설정합니다.
security login create -user-or-group-name admin -application ssh -authentication-method password -role admin노드 이름을
cell.yaml에 지정된 이름으로 바꿉니다.system node rename -node localhost -newname NODE_NAME디스크가 올바르게 구성되었는지 확인합니다.
storage aggregate show -fields uses-shared-disks를 실행하고aggr0가 true를 반환하는지 확인합니다. 출력 예시:::> storage aggregate show -fields uses-shared-disks aggregate uses-shared-disks --------- ----------------- aggr0 truerun -node * sysconfig -r를 실행하고P3로 끝나는 기기 이름이 있는지 확인합니다. 이는 디스크에 파티션이 3개 있는지 확인하기 위한 것입니다. 출력 예시:::> 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/16347584run -node local disk show -n를 실행하여 디스크 파티션이Not Owned이고2 * <number of disks>파티션이 있는지 확인합니다. 이 예에서는 디스크 12개의 소유되지 않은 파티션 24개를 보여줍니다.::> 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이 단계 중 하나라도 실패하면 시스템을 초기화하세요.
16.3. 네트워크 시간 프로토콜 설정
부트스트랩 클러스터에서 실행되는 NTP 릴레이의 NTP 서버 IP를 가져옵니다.
kubectl get ntpservers -n ntp-system -o jsonpath='{.items[*].status.managementIP}{"\n"}'
각 NTP 서버에 대해 첫 번째 ONTAP 노드에서 다음 명령어를 실행합니다.
cluster time-service ntp server create -server NTP_SERVER_IP
예를 들어 ONTAP 노드가 kb-ad-stge01-01, kb-ad-stge01-02, kb-ad-stge02-01, kb-ad-stge02-02인 경우 kb-ad-stge01-01 노드에서 명령어를 실행합니다.
16.4. cellcfg 폴더 확인
파일 저장소의 저장소 사용자 이름 및 비밀번호 값을 검색하려면 저장소 전용 하드웨어 공급업체 파일을 사용하세요(예: WO15_SO7100911835-2_GDCH-4d-A250-A400_DD-010223.xlsx).
16.4.1. 관리자 비밀번호 확인
StorageCluster.spec.adminSecretName 다음에 나오는 /CELLCFG/file-storage.yaml에서 참조되는 ONTAP 보안 비밀 이름을 찾습니다.
해당 보안 비밀을 찾아 값이 채워져 있는지 확인합니다. 그렇지 않은 경우 관리자 사용자 이름과 비밀번호를 바꿉니다.
apiVersion: v1
kind: Secret
metadata:
name: SECRET_NAME
namespace: gpc-system
type: Opaque
stringData:
netapp_username: admin
netapp_password: PASSWORD
16.4.2. ONTAP 라이선스 확인
ONTAP 소프트웨어 라이선스는 하드웨어 공급업체에서 제공해야 합니다.
/cellcfg/af-storage.yaml 폴더에서 StorageCluster.spec.licenses 필드를 찾아 라이선스가 채워져 있는지 확인합니다.
그렇지 않은 경우 라이선스를 사용하여 필드를 채웁니다.
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
참고로 라이선스 항목이 셀 구성에 표시되는 방식의 예는 다음과 같습니다.
licenses:
ABGITNWODUEVQELPECCAAAAAAAAA
AHJJWYTTTXKZOFKVBTBAAAAAAAAA
AHZTHBPQACAAAAKVBTBAAAAAAAAA
ALTXOYXSVDDCMADPECCAAAAAAAAA
ANWFPBPQACAAAAKVBTBAAAAAAAAA
APLKENWODUEVQELPECCAAAAAAAAA
ARIHVQFAHJMIWBDPECCAAAAAAAAA
AXFTCRFAHJMIWBDPECCAAAAAAAAA
16.5. 실행 전 유효성 검사
유효성 검사 명령어를 실행합니다.
gdcloud system check-config --config PATH_TO_CELL_CONFIG --artifacts-directory PATH_TO_ARTIFACTS \
--scenario FileBlockStorage
로그에 오류가 있으면 메시지에 따라 문제를 해결하고 유효성 검사를 다시 실행합니다.
16.5.1. 잠재적 문제
이 섹션에는 파일 블록 스토리지 어플라이언스의 사전 유효성 검사를 실행할 때 발생할 수 있는 문제가 포함되어 있습니다.
16.5.1.1. StorageAggregate의 NumDisks
잘못된 디스크 수에 대한 유효성 검사 실패는 무시하되 StorageAggregate CR에서 NumDisks 값을 수동으로 확인합니다. StorageAggregate은 xx-storage.yaml 파일에 정의되어 있습니다.
하나의 파일 블록 어플라이언스에 대해 StorageAggregates로 구성된 총 디스크 수는 어플라이언스에 표시된 디스크 수에서 예비 디스크 수를 뺀 수와 일치해야 합니다. 디스크 12개당 예비 디스크 1개를 예약하는 것이 좋습니다.
NumDisks 값을 계산하려면 다음 수식을 사용하세요.
NumDisks = (Total_Disks/2) - ceil(Total_Disks/12)
이 섹션에 설명된 (24/2) - ceil(24/12) 예시에 공식을 적용하면 NumDisks이 10과 같습니다.
16.6. 설치 실행
설치 명령어를 실행합니다.
gdcloud system storage install -v 3 --config PATH_TO_CELL_CONFIG
이 명령어는 다음을 수행합니다.
- NetApp 클러스터를 설정하고 사용 가능한 노드를 추가합니다.
- 집계를 만듭니다.
- 데이터 포트에서 LACP 및 VLAN을 설정합니다.
- 라이선스 설정
- 모니터링 구성
- 외부 키 관리를 구성합니다.
작업이 완료되면 ONTAP 콘솔에서 node show를 실행하여 다음과 같은 경고가 없는지 확인합니다.
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.
있는 경우 안내에 따라 이러한 노드에 로그인하고 해당 cluster join 명령어를 실행하여 작업 후 사라지는지 확인합니다.
16.7. 보안 설정 업데이트
로그인 배너를 설정합니다.
security login banner modify -vserver <cluster name> -message "<banner>"CLI 세션 제한 시간을 10분으로 제한합니다.
system timeout modify 10관리자 역할에 비밀번호 복잡성 및 최대 로그인 시도 횟수를 적용합니다.
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 3UI 세션 시간 제한을 10분으로 제한합니다.
::> 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>사용자 잠금 설정을 조정합니다.
::> security login role config modify -vserver * -max-failed-login-attempts 3 -lockout-duration 1 -role * ::> security ssh modify -vserver * -max-authentication-retry-count 3USB 포트를 사용 중지합니다 (적용하려면 재부팅해야 함).
::> set diag ::*> system node usb-ports modify -node * -is-disabled-next-boot true부트스트랩 인증서를 삭제합니다.
bootstrap-web-ca 인증서를 찾습니다.
::> security certificate show-user-installedbootstrap-web-ca 인증서가 있으면 출력은 다음과 같습니다.
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
노드를 재부팅하려면 다음 명령어를 사용하여 한 번에 하나씩 재부팅합니다.
::> system node reboot -node <node-name> -inhibit-takeover true
16.8. 긴급 액세스 사용자 저장
설정 중에 4개의 비상 계정이 자동으로 생성되고 다음과 같은 Kubernetes 비밀로 저장됩니다.
- storage-root-level1
- storage-root-level1-backup
- storage-root-level2
- storage-root-level2-backup
storage-root-level2 및 storage-root-level2-backup의 경우 규정에 따라 사용자 인증 정보를 종이에 저장하고 안전하게 보관하세요.
다음 명령어를 사용하여 보안 비밀에서 사용자 이름과 비밀번호를 가져옵니다. 이때 SECRET_NAME을 사용할 보안 비밀로 바꿉니다.
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 --decodeONTAP 클러스터의 이름을 가져옵니다.
::> cluster identity show관리자 권한이 있는 예상치 못한 사용자가 있는지 확인합니다.
::> useradmin user list- 선택사항: 인프라 운영자의 승인을 받아 삭제합니다. 항상 프로덕션 및 고객 워크로드에서 다음을 실행합니다.
::> 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 ```이전 단계에서 만든 NetApp 관리 사용자를 삭제합니다.
::> 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리드 인프라 운영자 (IO)는 각 어플라이언스의 사용자 이름과 비밀번호를 별도의 종이에 알아보기 쉽게 적습니다. 내용이 보이지 않도록 서류를 접고 'TOR 스위치 1의 루트 사용자 인증 정보'와 같이 서류에 라벨을 지정한 후 안전하게 보관할 수 있도록 L1 엔지니어에게 전달합니다.
리드 IO가 지켜보는 가운데 L1 엔지니어가 서류를 물리적 금고에 보관합니다.
IO는 보안 비밀에 주석을 추가하여 보안 비밀이 안전에 저장되었음을 표시합니다.
kubectl annotate secrets storage-root-level2 -n gpc-system disk.gdc.goog/persisted=''16.9. NTP 서버 업데이트
관리자 클러스터를 설치한 후 다음 단계를 실행합니다.
관리자 클러스터에서 실행되는 NTP 릴레이의 새 NTP 서버 IP를 가져옵니다.
kubectl get ntpservers -n gpc-systemONTAP에서 기존 NTP 서버를 모두 삭제합니다.
cluster time-service ntp server show cluster time-service ntp server delete -server NTP_SERVER_IPONTAP에 새 NTP 서버를 추가합니다.
cluster time-service ntp server create -server NTP_SERVER_IP