3.2.2. 블록 스토리지에서 블록 교체
리소스가 부족하거나 문제가 있는 노드에서 블록을 교체하려면 새 노드로 교체할 수 있습니다.
새 IP로 Gluster 블록 PV를 업데이트하려면 노드 교체 후 https://access.redhat.com/solutions/5042501를 참조하십시오.
다음 명령을 실행합니다.
다음 명령을 실행하여 heketi에서 영역 및 클러스터 정보를 가져옵니다.
# heketi-cli topology info --user=<user> --secret=<user key>
- --user
- heketi 사용자
- --secret
- 지정된 사용자의 시크릿 키
- 클러스터 ID 및 영역 ID를 가져온 후 새 노드 추가 를 참조하여 새 노드를 추가합니다.
다음 명령을 실행하여 장치를 추가합니다.
# heketi-cli device add --name=<device name> --node=<node id> --user=<user> --secret=<user key>
- --name
- 추가할 장치 이름
- --node
- 새로 추가된 노드 ID
예를 들면 다음과 같습니다.
# heketi-cli device add --name=/dev/vdc --node=2639c473a2805f6e19d45997bb18cb9c --user=admin --secret=adminkey Device added successfully
새로운 노드와 관련 장치가 heketi에 추가되면 결함이 있거나 원치 않는 노드가 heketi에서 제거 될 수 있습니다.
heketi에서 노드를 제거하려면 다음 워크플로우를 따르십시오.
- node disable (DEallow usage of a node byplacing it offline)
- node replace(노드 제거 및 Heketi에서 연결된 모든 장치 제거)
- 장치 삭제( Heketi 노드에서 장치 삭제)
- 노드 삭제( Heketi 관리에서 노드 삭제)
다음 명령을 실행하여 heketi에서 노드 목록을 가져옵니다.
#heketi-cli node list --user=<user> --secret=<user key>
예를 들면 다음과 같습니다.
# heketi-cli node list --user=admin --secret=adminkey Id:05746c562d6738cb5d7de149be1dac04 Cluster:607204cb27346a221f39887a97cf3f90 Id:ab37fc5aabbd714eb8b09c9a868163df Cluster:607204cb27346a221f39887a97cf3f90 Id:c513da1f9bda528a9fd6da7cb546a1ee Cluster:607204cb27346a221f39887a97cf3f90 Id:e6ab1fe377a420b8b67321d9e60c1ad1 Cluster:607204cb27346a221f39887a97cf3f90
다음 명령을 실행하여 heketi에서 삭제해야 하는 노드의 노드 정보를 가져옵니다.
# heketi-cli node info <nodeid> --user=<user> --secret=<user key>
예를 들면 다음과 같습니다.
# heketi-cli node info c513da1f9bda528a9fd6da7cb546a1ee --user=admin --secret=adminkey Node Id: c513da1f9bda528a9fd6da7cb546a1ee State: online Cluster Id: 607204cb27346a221f39887a97cf3f90 Zone: 1 Management Hostname: dhcp43-171.lab.eng.blr.redhat.com Storage Hostname: 10.70.43.171 Devices: Id:3a1e0717e6352a8830ab43978347a103 Name:/dev/vdc State:online Size (GiB):499 Used (GiB):100 Free (GiB):399 Bricks:1 Id:89a57ace1c3184826e1317fef785e6b7 Name:/dev/vdd State:online Size (GiB):499 Used (GiB):10 Free (GiB):489 Bricks:5
다음 명령을 실행하여 heketi에서 노드를 비활성화합니다. 그러면 노드가 오프라인 상태가 됩니다.
# heketi-cli node disable <node-id> --user=<user> --secret=<user key>
예를 들면 다음과 같습니다.
# heketi-cli node disable ab37fc5aabbd714eb8b09c9a868163df --user=admin --secret=adminkey Node ab37fc5aabbd714eb8b09c9a868163df is now offline
다음 명령을 실행하여 Heketi에서 노드와 연결된 모든 장치를 제거합니다.
#heketi-cli node remove <node-id> --user=<user> --secret=<user key>
예를 들면 다음과 같습니다.
# heketi-cli node remove ab37fc5aabbd714eb8b09c9a868163df --user=admin --secret=adminkey Node ab37fc5aabbd714eb8b09c9a868163df is now removed
다음 명령을 실행하여 heketi 노드에서 장치를 삭제합니다.
# heketi-cli device delete <device-id> --user=<user> --secret=<user key>
예를 들면 다음과 같습니다.
# heketi-cli device delete 0fca78c3a94faabfbe5a5a9eef01b99c --user=admin --secret=adminkey Device 0fca78c3a94faabfbe5a5a9eef01b99c deleted
다음 명령을 실행하여 Heketi 관리에서 노드를 삭제합니다.
#heketi-cli node delete <nodeid> --user=<user> --secret=<user key>
예를 들면 다음과 같습니다.
# heketi-cli node delete ab37fc5aabbd714eb8b09c9a868163df --user=admin --secret=adminkey Node ab37fc5aabbd714eb8b09c9a868163df deleted
gluster Pod 중 하나에서 다음 명령을 실행하여 문제가 있는 노드를 새 노드로 교체합니다.
다음 명령을 실행하여 block-hosting-volume에서 호스팅되는 블록 볼륨 목록을 가져옵니다.
# gluster-block list <block-hosting-volume> --json-pretty
다음 명령을 실행하여 블록 볼륨을 호스팅하는 서버 목록을 가져오고 나중에 사용할 수 있도록 GBID 및 managers 값을 저장합니다.
# gluster-block info <block-hosting-volume>/<block-volume> --json-pretty
다음 명령을 실행하여 문제가 있는 노드를 새 노드로 교체합니다.
# gluster-block replace <volname/blockname> <old-node> <new-node> [force]
예를 들면 다음과 같습니다.
{ "NAME":"block", "CREATE SUCCESS":"192.168.124.73", "DELETE SUCCESS":"192.168.124.63", "REPLACE PORTAL SUCCESS ON":[ "192.168.124.79" ], "RESULT":"SUCCESS" } Note: If the old node is down and does not come up again then you can force replace: gluster-block replace sample/block 192.168.124.63 192.168.124.73 force --json-pretty { "NAME":"block", "CREATE SUCCESS":"192.168.124.73", "DELETE FAILED (ignored)":"192.168.124.63", "REPLACE PORTAL SUCCESS ON":[ "192.168.124.79" ], "RESULT":"SUCCESS" }
참고다음 단계는 교체할 블록이 아직 사용 중인 경우에만 실행해야 합니다.
블록 볼륨이 현재 마운트되어 있지 않은 경우 이 단계를 건너뜁니다. 블록 볼륨이 애플리케이션에서 사용 중인 경우 이니시에이터 측에서 매퍼 장치를 다시 로드해야 합니다.
이니시에이터 노드 및 targetname을 식별합니다.
이니시에이터 노드를 찾으려면 다음을 수행합니다.
# oc get pods -o wide | grep <podname>
여기서 podname은 blockvolume이 마운트된 Pod의 이름입니다.
예를 들면 다음과 같습니다
# oc get pods -o wide | grep cirros1 cirros1-1-x6b5n 1/1 Running 0 1h 10.130.0.5 dhcp46-31.lab.eng.blr.redhat.com <none>
대상 이름을 찾으려면 다음을 수행합니다.
# oc describe pv <pv_name> | grep IQN
예를 들면 다음과 같습니다.
# oc describe pv pvc-c50c69db-5f76-11ea-b27b-005056b253d1 | grep IQN IQN: iqn.2016-12.org.gluster-block:87ffbcf3-e21e-4fa5-bd21-7db2598e8d3f
이니시에이터 노드에서 다음 명령을 실행하여 매퍼 장치를 찾습니다.
# mount | grep <targetname>
매퍼 장치를 다시 로드합니다.
# multipath -r mpathX
예를 들면 다음과 같습니다.
# mount | grep iqn.2016-12.org.gluster-block:d6d18f43-8a74-4b2c-a5b7-df1fa3f5bc9a/dev/mapper/mpatha on /var/lib/origin/openshift.local.volumes/plugins/kubernetes.io/iscsi/iface-default/192.168.124.63:3260-iqn.2016-12.org.gluster-block:d6d18f43-8a74-4b2c-a5b7-df1fa3f5bc9a-lun-0 type xfs (rw,relatime,seclabel,attr2,inode64,noquota) # multipath -r mpatha
이니시에이터에서 다음 명령을 실행하여 이전 포털에서 로그아웃합니다.
# iscsiadm -m node -T <targetname> -p <old node> -u
예를 들면 다음과 같습니다.
# iscsiadm -m node -T iqn.2016-12.org.gluster-block:d6d18f43-8a74-4b2c-a5b7-df1fa3f5bc9a -p 192.168.124.63 -u Logging out of session [sid: 8, target: iqn.2016-12.org.gluster-block:d6d18f43-8a74-4b2c-a5b7-df1fa3f5bc9a, portal: 192.168.124.63,3260] Logout of [sid: 8, target: iqn.2016-12.org.gluster-block:d6d18f43-8a74-4b2c-a5b7-df1fa3f5bc9a, portal: 192.168.124.63,3260] successful.
새 노드를 다시 검색하려면 다음 명령을 실행합니다.
# iscsiadm -m discovery -t st -p <new node>
예를 들면 다음과 같습니다.
# iscsiadm -m discovery -t st -p 192.168.124.73 192.168.124.79:3260,1 iqn.2016-12.org.gluster-block:d6d18f43-8a74-4b2c-a5b7-df1fa3f5bc9a 192.168.124.73:3260,2 iqn.2016-12.org.gluster-block:d6d18f43-8a74-4b2c-a5b7-df1fa3f5bc9a
다음을 실행하여 새 포털에 로그인합니다.
인증 인증 정보 업데이트 (단계 11ii에서 GBID 및 암호 해독 사용)
# iscsiadm -m node -T <targetname> -o update -n node.session.auth.authmethod -v CHAP -n node.session.auth.username -v <GBID> -n node.session.auth.password -v <PASSWORD> -p <new node ip>
새 포털에 로그인합니다.
# iscsiadm -m node -T <targetname> -p <new node ip> -l
예를 들면 다음과 같습니다.
# iscsiadm -m node -T iqn.2016-12.org.gluster-block:d6d18f43-8a74-4b2c-a5b7-df1fa3f5bc9a -o update -n node.session.auth.authmethod -v CHAP -n node.session.auth.username -v d6d18f43-8a74-4b2c-a5b7-df1fa3f5bc9a -n node.session.auth.password -v a6a9081f-3d0d-4e8b-b9b0-d2be703b455d -p 192.168.124.73 # iscsiadm -m node -T iqn.2016-12.org.gluster-block:d6d18f43-8a74-4b2c-a5b7-df1fa3f5bc9a -p 192.168.124.73 -l
활성화된 호스팅 볼륨이 교체되고 성공적으로 실행 중인지 확인하려면 이니시에이터에서 다음 명령을 실행합니다.
# ll /dev/disk/by-path/ip-* | grep <targetname> | grep <“new node ip”>