Bug 1224619
Summary: | nfs-ganesha:delete node throws error and pcs status also notifies about failures, in fact I/O also doesn't resume post grace period | |||
---|---|---|---|---|
Product: | [Red Hat Storage] Red Hat Gluster Storage | Reporter: | Saurabh <saujain> | |
Component: | nfs-ganesha | Assignee: | Kaleb KEITHLEY <kkeithle> | |
Status: | CLOSED ERRATA | QA Contact: | Saurabh <saujain> | |
Severity: | urgent | Docs Contact: | ||
Priority: | high | |||
Version: | rhgs-3.1 | CC: | annair, ansubram, asrivast, bmohanra, kkeithle, mmadhusu, mzywusko, ndevos, nlevinki, rcyriac, skoduri | |
Target Milestone: | --- | |||
Target Release: | RHGS 3.1.0 | |||
Hardware: | x86_64 | |||
OS: | Linux | |||
Whiteboard: | ||||
Fixed In Version: | glusterfs-3.7.1-6 | Doc Type: | Bug Fix | |
Doc Text: |
Previously, deleting a node was intentionally made disruptive. It removed the node from the Highly Available (HA) cluster and deleted the virtual IP address (VIP). Due to this, any clients that have NFS mounts on the deleted node(s) experienced I/O errors. With this release, when a node is deleted from the HA cluster, clients must remount using one of remaining valid VIPs. For a less disruptive experience, a fail-over can be initiated by administratively killing the ganesha.nfsd process on a node. The VIP will move to another node and clients will seamlessly switch.
|
Story Points: | --- | |
Clone Of: | ||||
: | 1234474 (view as bug list) | Environment: | ||
Last Closed: | 2015-07-29 04:52:40 UTC | Type: | Bug | |
Regression: | --- | Mount Type: | --- | |
Documentation: | --- | CRM: | ||
Verified Versions: | Category: | --- | ||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
Cloudforms Team: | --- | Target Upstream Version: | ||
Embargoed: | ||||
Bug Depends On: | ||||
Bug Blocks: | 1202842, 1234474, 1234584 |
Description
Saurabh
2015-05-25 07:04:22 UTC
Well, later I tried to disable nfs-ganesha using the command "gluster nfs-ganesha disable" and it failed with this error, [root@nfs1 ~]# gluster nfs-ganesha disable nfs-ganesha: failed: Commit failed on 41146369-15cf-466f-9c9f-5264ef8cf6b2. Error: Could not stop NFS-Ganesha. whereas nfs-ganesha stopped on all nodes, here is the pcs status from all nodes and thing to notice is that it on all nodes it does not match. nfs1 Error: cluster is not currently running on this node --- nfs2 Cluster name: Last updated: Mon May 25 14:35:43 2015 Last change: Mon May 25 14:30:39 2015 Stack: cman Current DC: nfs2 - partition WITHOUT quorum Version: 1.1.11-97629de 4 Nodes configured 2 Resources configured Online: [ nfs2 nfs3 ] OFFLINE: [ nfs1 nfs4 ] Full list of resources: nfs4-cluster_ip-1 (ocf::heartbeat:IPaddr): Stopped nfs4-trigger_ip-1 (ocf::heartbeat:Dummy): Stopped Failed actions: nfs4-cluster_ip-1_start_0 on nfs2 'not configured' (6): call=488, status=complete, last-rc-change='Mon May 25 14:30:16 2015', queued=0ms, exec=36ms --- nfs3 Cluster name: Last updated: Mon May 25 14:35:44 2015 Last change: Mon May 25 14:30:39 2015 Stack: cman Current DC: nfs2 - partition WITHOUT quorum Version: 1.1.11-97629de 4 Nodes configured 2 Resources configured Online: [ nfs2 nfs3 ] OFFLINE: [ nfs1 nfs4 ] Full list of resources: nfs4-cluster_ip-1 (ocf::heartbeat:IPaddr): Stopped nfs4-trigger_ip-1 (ocf::heartbeat:Dummy): Stopped Failed actions: nfs4-cluster_ip-1_start_0 on nfs2 'not configured' (6): call=488, status=complete, last-rc-change='Mon May 25 14:30:16 2015', queued=0ms, exec=36ms --- nfs4 Error: cluster is not currently running on this node --- if we delete a node we should not delete the VIP >> >> We'd have to decide between these two choices, >> 1. Delete the node from the cluster, delete the resources and free the VIP (no VIP resource movement) >> Clients connected to this node will see an I/O disruption in this case >> 2. Delete the node from the cluster, but move the VIP resource to another node in the cluster in the background. >> Clients connected to this node will not see any I/O disruption in this case. >> >> I request the opinions of the rest of the team to decide on the best choice here. >> >> Thanks >> Meghana >> > > The design intent from the start was to go with Option 1 listed above. > > Deletion of a node is a disruptive admin operation, something that would typically even be included in a maint window, only that in our case we can manage it online as well. All resources associated with that node need to be stopped first and then deleted. Only then should delete node (as a gluster TSP operation) be done. This needs to be reflected in the docs. > > An admin sh/would know that clients are connected to that node, in which case admins typically send out appropriate warning notices prior to such operations being performed. So I/O disruption is expected - only that it is a known. If some clients don't disconnect and keep using the mount (mounting from that node) then it is the admin's job to take a call on how to proceed with the delete node op. The idea was that he would need to first run the ha-script to do the appropriate stopping and deletion of cluster rsrcs associated with that node and only then proceed with the actual physical removal of that node from the TSP. Reverse is done during addition, when the physical addition of the node and associated bricks would be done first, followed by invocation of the ha-script which creates and starts all resources associated with the newly added node. The conf file needs to appropriately updated as well in both cases. > > So keep it simple for this first release and do not allow FO of the VIP etc. It will reduce other headaches. > > Anand > Please note that the above is from a simplification point of view. If you strongly feel that you *have* to FO the VIP and there is a technical rationale behind that decision please explain that as it is possible I have missed something. I don't feel there is anything wrong with doing that apart from one case which is: suppose there is are 8 storage nodes which have 8 ganesha heads serving them (calculated on basis of workload requirements etc.). If one storage node is deleted, we have 7 and if VIP(8) is failed over and kept alive, we have 8 VIPs serving the 7 storage nodes now. Now, that should not lead to a non-load-balanced case for some user scenarios. Because from a load-balancing perspective one node (now) will keep getting more connections than the rest as it continues to host 2 VIPs (and maybe the admin does not intend to add another node anytime in the near future). We just need to be able to defend this configuration either way (failing over the vip of a deleted node OR doing away with it altogether). merged downstream https://code.engineering.redhat.com/gerrit/51681 merged upstream (master) http://review.gluster.org/11353 merged upstream (release-3.7) http://review.gluster.org/11427 Marking this BZ as verified as node is deleted and VIP is not floating any more, [root@nfs11 ~]# time bash /usr/libexec/ganesha/ganesha-ha.sh --delete /etc/ganesha/ nfs16 Removing Constraint - colocation-nfs11-cluster_ip-1-nfs11-trigger_ip-1-INFINITY Removing Constraint - location-nfs11-cluster_ip-1 Removing Constraint - location-nfs11-cluster_ip-1-nfs12-1000 Removing Constraint - location-nfs11-cluster_ip-1-nfs13-2000 Removing Constraint - location-nfs11-cluster_ip-1-nfs14-3000 Removing Constraint - location-nfs11-cluster_ip-1-nfs16-4000 Removing Constraint - location-nfs11-cluster_ip-1-nfs11-5000 Removing Constraint - order-nfs-grace-clone-nfs11-cluster_ip-1-mandatory Deleting Resource - nfs11-cluster_ip-1 Removing Constraint - order-nfs11-trigger_ip-1-nfs-grace-clone-mandatory Deleting Resource - nfs11-trigger_ip-1 Removing Constraint - colocation-nfs12-cluster_ip-1-nfs12-trigger_ip-1-INFINITY Removing Constraint - location-nfs12-cluster_ip-1 Removing Constraint - location-nfs12-cluster_ip-1-nfs13-1000 Removing Constraint - location-nfs12-cluster_ip-1-nfs14-2000 Removing Constraint - location-nfs12-cluster_ip-1-nfs16-3000 Removing Constraint - location-nfs12-cluster_ip-1-nfs11-4000 Removing Constraint - location-nfs12-cluster_ip-1-nfs12-5000 Removing Constraint - order-nfs-grace-clone-nfs12-cluster_ip-1-mandatory Deleting Resource - nfs12-cluster_ip-1 Removing Constraint - order-nfs12-trigger_ip-1-nfs-grace-clone-mandatory Deleting Resource - nfs12-trigger_ip-1 Removing Constraint - colocation-nfs13-cluster_ip-1-nfs13-trigger_ip-1-INFINITY Removing Constraint - location-nfs13-cluster_ip-1 Removing Constraint - location-nfs13-cluster_ip-1-nfs14-1000 Removing Constraint - location-nfs13-cluster_ip-1-nfs16-2000 Removing Constraint - location-nfs13-cluster_ip-1-nfs11-3000 Removing Constraint - location-nfs13-cluster_ip-1-nfs12-4000 Removing Constraint - location-nfs13-cluster_ip-1-nfs13-5000 Removing Constraint - order-nfs-grace-clone-nfs13-cluster_ip-1-mandatory Deleting Resource - nfs13-cluster_ip-1 Removing Constraint - order-nfs13-trigger_ip-1-nfs-grace-clone-mandatory Deleting Resource - nfs13-trigger_ip-1 Removing Constraint - colocation-nfs14-cluster_ip-1-nfs14-trigger_ip-1-INFINITY Removing Constraint - location-nfs14-cluster_ip-1 Removing Constraint - location-nfs14-cluster_ip-1-nfs16-1000 Removing Constraint - location-nfs14-cluster_ip-1-nfs11-2000 Removing Constraint - location-nfs14-cluster_ip-1-nfs12-3000 Removing Constraint - location-nfs14-cluster_ip-1-nfs13-4000 Removing Constraint - location-nfs14-cluster_ip-1-nfs14-5000 Removing Constraint - order-nfs-grace-clone-nfs14-cluster_ip-1-mandatory Deleting Resource - nfs14-cluster_ip-1 Removing Constraint - order-nfs14-trigger_ip-1-nfs-grace-clone-mandatory Deleting Resource - nfs14-trigger_ip-1 Removing Constraint - colocation-nfs16-cluster_ip-1-nfs16-trigger_ip-1-INFINITY Removing Constraint - location-nfs16-cluster_ip-1 Removing Constraint - location-nfs16-cluster_ip-1-nfs11-1000 Removing Constraint - location-nfs16-cluster_ip-1-nfs12-2000 Removing Constraint - location-nfs16-cluster_ip-1-nfs13-3000 Removing Constraint - location-nfs16-cluster_ip-1-nfs14-4000 Removing Constraint - location-nfs16-cluster_ip-1-nfs16-5000 Removing Constraint - order-nfs-grace-clone-nfs16-cluster_ip-1-mandatory Deleting Resource - nfs16-cluster_ip-1 Removing Constraint - order-nfs16-trigger_ip-1-nfs-grace-clone-mandatory Deleting Resource - nfs16-trigger_ip-1 Adding nfs11-trigger_ip-1 nfs-grace-clone (kind: Mandatory) (Options: first-action=start then-action=start) Adding nfs-grace-clone nfs11-cluster_ip-1 (kind: Mandatory) (Options: first-action=start then-action=start) Adding nfs12-trigger_ip-1 nfs-grace-clone (kind: Mandatory) (Options: first-action=start then-action=start) Adding nfs-grace-clone nfs12-cluster_ip-1 (kind: Mandatory) (Options: first-action=start then-action=start) Adding nfs13-trigger_ip-1 nfs-grace-clone (kind: Mandatory) (Options: first-action=start then-action=start) Adding nfs-grace-clone nfs13-cluster_ip-1 (kind: Mandatory) (Options: first-action=start then-action=start) Adding nfs14-trigger_ip-1 nfs-grace-clone (kind: Mandatory) (Options: first-action=start then-action=start) Adding nfs-grace-clone nfs14-cluster_ip-1 (kind: Mandatory) (Options: first-action=start then-action=start) CIB updated CIB updated Removing Constraint - location-nfs_stop-nfs16-nfs16-INFINITY Deleting Resource - nfs_stop-nfs16 nfs16: Successfully destroyed cluster nfs11: Corosync updated nfs12: Corosync updated nfs13: Corosync updated nfs14: Corosync updated ganesha-ha.conf 100% 916 0.9KB/s 00:00 ganesha-ha.conf 100% 916 0.9KB/s 00:00 ganesha-ha.conf 100% 916 0.9KB/s 00:00 [ OK ] ganesha.nfsd: [ OK ] real 0m46.683s user 0m16.353s sys 0m4.389s On the existing cluster, [root@nfs11 ~]# pcs status Cluster name: nozomer Last updated: Tue Jul 7 19:17:50 2015 Last change: Tue Jul 7 19:15:19 2015 Stack: cman Current DC: nfs11 - partition with quorum Version: 1.1.11-97629de 4 Nodes configured 16 Resources configured Online: [ nfs11 nfs12 nfs13 nfs14 ] Full list of resources: Clone Set: nfs-mon-clone [nfs-mon] Started: [ nfs11 nfs12 nfs13 nfs14 ] Clone Set: nfs-grace-clone [nfs-grace] Started: [ nfs11 nfs12 nfs13 nfs14 ] nfs11-cluster_ip-1 (ocf::heartbeat:IPaddr): Started nfs11 nfs11-trigger_ip-1 (ocf::heartbeat:Dummy): Started nfs11 nfs12-cluster_ip-1 (ocf::heartbeat:IPaddr): Started nfs12 nfs12-trigger_ip-1 (ocf::heartbeat:Dummy): Started nfs12 nfs13-cluster_ip-1 (ocf::heartbeat:IPaddr): Started nfs13 nfs13-trigger_ip-1 (ocf::heartbeat:Dummy): Started nfs13 nfs14-cluster_ip-1 (ocf::heartbeat:IPaddr): Started nfs14 nfs14-trigger_ip-1 (ocf::heartbeat:Dummy): Started nfs14 on the deleted node, [root@nfs16 ~]# pcs status Error: cluster is not currently running on this node Made minor updates to the doc text. Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHSA-2015-1495.html |