OpenShift Container Storage is now OpenShift Data Foundation starting with version 4.9.
3.2.2. 替换块存储中的块
如果要替换来自资源不足或有故障的节点的块,它可以被替换为到新节点。
要使用新的 IP 更新 Gluster 块 PV,在节点替换中引用 https://access.redhat.com/solutions/5042501
执行以下命令:
执行以下命令从 heketi 获取区域和集群信息
heketi-cli topology info --user=<user> --secret=<user key>
# heketi-cli topology info --user=<user> --secret=<user key>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - --user
- heketi 用户
- --secret
- 指定用户的 secret key
- 获取集群 ID 和区 ID 后,请参阅添加新节点来添加新节点。https://access.redhat.com/documentation/en-us/red_hat_openshift_container_storage/3.11/html-single/operations_guide/index#sect_Adding_New_Nodes
执行以下命令添加设备
heketi-cli device add --name=<device name> --node=<node id> --user=<user> --secret=<user key>
# heketi-cli device add --name=<device name> --node=<node id> --user=<user> --secret=<user key>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - --name
- 要添加的设备名称
- --node
- 新添加的节点 ID
例如:
heketi-cli device add --name=/dev/vdc --node=2639c473a2805f6e19d45997bb18cb9c --user=admin --secret=adminkey
# heketi-cli device add --name=/dev/vdc --node=2639c473a2805f6e19d45997bb18cb9c --user=admin --secret=adminkey Device added successfully
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在新节点及其关联的设备添加到 heketi 后,可以从 heketi 中移除错误或不需要的节点
要从 heketi 中删除任何节点,请按照这个工作流操作:
- 节点禁用(通过下下下放置节点来允许节点使用)
- 节点替换(从 Heti 中删除节点及其所有关联设备)
- 设备删除(从 Heketi 节点中删除设备)
- 节点删除(从 Heketi 管理中删除节点)
执行以下命令从 heketi 获取节点列表
#heketi-cli node list --user=<user> --secret=<user key>
#heketi-cli node list --user=<user> --secret=<user key>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
heketi-cli node list --user=admin --secret=adminkey
# heketi-cli node list --user=admin --secret=adminkey Id:05746c562d6738cb5d7de149be1dac04 Cluster:607204cb27346a221f39887a97cf3f90 Id:ab37fc5aabbd714eb8b09c9a868163df Cluster:607204cb27346a221f39887a97cf3f90 Id:c513da1f9bda528a9fd6da7cb546a1ee Cluster:607204cb27346a221f39887a97cf3f90 Id:e6ab1fe377a420b8b67321d9e60c1ad1 Cluster:607204cb27346a221f39887a97cf3f90
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 执行以下命令获取节点的节点信息,必须从 heketi 中删除:
heketi-cli node info <nodeid> --user=<user> --secret=<user key>
# heketi-cli node info <nodeid> --user=<user> --secret=<user key>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 执行以下命令禁止节点被 heketi。这使得节点离线:
heketi-cli node disable <node-id> --user=<user> --secret=<user key>
# heketi-cli node disable <node-id> --user=<user> --secret=<user key>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
heketi-cli node disable ab37fc5aabbd714eb8b09c9a868163df --user=admin --secret=adminkey
# heketi-cli node disable ab37fc5aabbd714eb8b09c9a868163df --user=admin --secret=adminkey Node ab37fc5aabbd714eb8b09c9a868163df is now offline
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 执行以下命令从 Heketi 中删除节点及其所有关联设备:
#heketi-cli node remove <node-id> --user=<user> --secret=<user key>
#heketi-cli node remove <node-id> --user=<user> --secret=<user key>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
heketi-cli node remove ab37fc5aabbd714eb8b09c9a868163df --user=admin --secret=adminkey
# heketi-cli node remove ab37fc5aabbd714eb8b09c9a868163df --user=admin --secret=adminkey Node ab37fc5aabbd714eb8b09c9a868163df is now removed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 执行以下命令从 heketi 节点中删除设备:
heketi-cli device delete <device-id> --user=<user> --secret=<user key>
# heketi-cli device delete <device-id> --user=<user> --secret=<user key>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
heketi-cli device delete 0fca78c3a94faabfbe5a5a9eef01b99c --user=admin --secret=adminkey
# heketi-cli device delete 0fca78c3a94faabfbe5a5a9eef01b99c --user=admin --secret=adminkey Device 0fca78c3a94faabfbe5a5a9eef01b99c deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 执行以下命令从 Heketi 管理中删除节点:
#heketi-cli node delete <nodeid> --user=<user> --secret=<user key>
#heketi-cli node delete <nodeid> --user=<user> --secret=<user key>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
heketi-cli node delete ab37fc5aabbd714eb8b09c9a868163df --user=admin --secret=adminkey
# heketi-cli node delete ab37fc5aabbd714eb8b09c9a868163df --user=admin --secret=adminkey Node ab37fc5aabbd714eb8b09c9a868163df deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在其中一个 gluster pod 上执行以下命令将故障节点替换为新节点:
执行以下命令获取托管在 block-hosting-volume 下的块卷列表:
gluster-block list <block-hosting-volume> --json-pretty
# gluster-block list <block-hosting-volume> --json-pretty
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 执行以下命令以获取托管块卷的服务器列表,还要保存 GBID 和 PASSWORD 值供以后使用:
gluster-block info <block-hosting-volume>/<block-volume> --json-pretty
# gluster-block info <block-hosting-volume>/<block-volume> --json-pretty
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 执行以下命令将有问题的节点替换为新节点:
gluster-block replace <volname/blockname> <old-node> <new-node> [force]
# gluster-block replace <volname/blockname> <old-node> <new-node> [force]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
注意只有在被替换的块仍在使用时才执行后续步骤。
如果块卷当前未挂载,请跳过这一步。如果应用程序正在使用块卷,则需要在启动器一端重新加载映射程序设备。
确定 initiator 节点和 targetname:
查找 initiator 节点:
oc get pods -o wide | grep <podname>
# oc get pods -o wide | grep <podname>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中 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 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>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 找到 targetname:
oc describe pv <pv_name> | grep IQN
# oc describe pv <pv_name> | grep IQN
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc describe pv pvc-c50c69db-5f76-11ea-b27b-005056b253d1 | 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 initiator 节点上执行以下命令查找映射程序设备:
mount | grep <targetname>
# mount | grep <targetname>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新载入映射程序设备:
multipath -r mpathX
# multipath -r mpathX
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
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
# 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
通过在 initiator 中执行以下命令注销旧的门户:
iscsiadm -m node -T <targetname> -p <old node> -u
# iscsiadm -m node -T <targetname> -p <old node> -u
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
iscsiadm -m node -T iqn.2016-12.org.gluster-block:d6d18f43-8a74-4b2c-a5b7-df1fa3f5bc9a -p 192.168.124.63 -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.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要重新发现新节点,请执行以下命令:
iscsiadm -m discovery -t st -p <new node>
# iscsiadm -m discovery -t st -p <new node>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
iscsiadm -m discovery -t st -p 192.168.124.73
# 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过执行以下操作登录到新门户:
更新身份验证凭据(从第 11ii 步中使用 GBID 和 PASSWORD)
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> -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>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 登录到新门户
iscsiadm -m node -T <targetname> -p <new node ip> -l
# iscsiadm -m node -T <targetname> -p <new node ip> -l
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
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
# 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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要验证启用的主机卷是否已替换并成功运行,请在 initiator 中执行以下命令:
ll /dev/disk/by-path/ip-* | grep <targetname> | grep <“new node ip”>
# ll /dev/disk/by-path/ip-* | grep <targetname> | grep <“new node ip”>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow