We have ansible role to replace gluster node.I think it works only with same FQDN. https://github.com/sac/gluster-ansible-maintenance I am not sure if it covers all senarios, but you can try with same FQDN.
On Fri, Jun 14, 2019 at 7:13 AM Adrian Quintero <[email protected]> wrote: > Strahil, > Thanks for all the follow up, I will try to reproduce the same scenario > today, deploy a 9 node cluster, Completely kill the initiating node (vmm10) > and see If i can recover using the extra server approach (Different > IP/FQDN). If I am able to recover I will also try to test with your > suggested second approach (Using same IP/FQDN). > My objective here is to document the possible recovery scenarios without > any downtime or impact. > > I have documented a few setup and recovery scenarios with 6 and 9 nodes > already with a hyperconverged setup and I will make them available to the > community, hopefully this week, including the tests that you have been > helping me with. Hopefully this will provide help to others that are in the > same situation that I am, and it will also provide me with feedback from > more knowledgeable admins out there so that I can get this into production > in the near future. > > > Thanks again. > > > > On Wed, Jun 12, 2019 at 11:58 PM Strahil <[email protected]> wrote: > >> Hi Adrian, >> >> Please keep in mind that when a server dies, the easiest way to recover >> is to get another freshly installed server with different IP/FQDN . >> Then you will need to use 'replace-brick' and once gluster replaces that >> node - you should be able to remove the old entry in oVirt. >> Once the old entry is gone, you can add the new installation in oVirt via >> the UI. >> >> Another approach is to have the same IP/FQDN for the fresh install.In >> this situation, you need to have the same gluster ID (which should be a >> text file) and the peer IDs. Most probably you can create them on your own >> , based on data on the other gluster peers. >> Once the fresh install is available in 'gluster peer' , you can initiate >> a reset-brick' (don't forget to set the SELINUX , firewall and repos) and a >> full heal. >> From there you can reinstall the machine from the UI and it should be >> available for usage. >> >> P.S.: I know that the whole procedure is not so easy :) >> >> Best Regards, >> Strahil Nikolov >> On Jun 12, 2019 19:02, Adrian Quintero <[email protected]> wrote: >> >> Strahil, I dont use the GUI that much, in this case I need to understand >> how all is tied together if I want to move to production. As far as Gluster >> goes, I can get do the administration thru CLI, however when my test >> environment was set up it was setup using geodeploy for Hyperconverged >> setup under oVirt. >> The initial setup was 3 servers with the same amount of physical disks: >> sdb, sdc, sdc, sdd, sde(this last one used for caching as it is an SSD) >> >> vmm10.mydomain.com:/gluster_bricks/brick1(/dev/sdb) engine >> vmm10.mydomain.com:/gluster_bricks/brick2(/dev/sdb) vmstore1 >> vmm10.mydomain.com:/gluster_bricks/brick3(/dev/sdc) data1 >> vmm10.mydomain.com:/gluster_bricks/brick4(/dev/sdd) data2 >> >> vmm11.mydomain.com:/gluster_bricks/brick1(/dev/sdb) engine >> vmm11.mydomain.com:/gluster_bricks/brick2(/dev/sdb) vmstore1 >> vmm11.mydomain.com:/gluster_bricks/brick3(/dev/sdc) data1 >> vmm11.mydomain.com:/gluster_bricks/brick4(/dev/sdd) data2 >> >> vmm12.mydomain.com:/gluster_bricks/brick1(/dev/sdb) engine >> vmm12.mydomain.com:/gluster_bricks/brick2(/dev/sdb) vmstore1 >> vmm12.mydomain.com:/gluster_bricks/brick3(/dev/sdc) data1 >> vmm12.mydomain.com:/gluster_bricks/brick4(/dev/sdd) data2 >> >> *As you can see from the above the the engine volume is conformed of >> hosts vmm10 (Initiating cluster server but now dead sever), vmm11 and vmm12 >> and on block device /dev/sdb (100Gb LV), also the vmstore1 volume is also >> on /dev/sdb (2600Gb LV).* >> /dev/mapper/gluster_vg_sdb-gluster_lv_engine xfs >> 100G 2.0G 98G 2% /gluster_bricks/engine >> /dev/mapper/gluster_vg_sdb-gluster_lv_vmstore1 xfs >> 2.6T 35M 2.6T 1% /gluster_bricks/vmstore1 >> /dev/mapper/gluster_vg_sdc-gluster_lv_data1 xfs >> 2.7T 4.6G 2.7T 1% /gluster_bricks/data1 >> /dev/mapper/gluster_vg_sdd-gluster_lv_data2 xfs >> 2.7T 9.5G 2.7T 1% /gluster_bricks/data2 >> vmm10.mydomain.com:/engine >> fuse.glusterfs 300G 9.2G 291G 4% >> /rhev/data-center/mnt/glusterSD/vmm10.virt.iad3p:_engine >> vmm10.mydomain.com:/vmstore1 >> fuse.glusterfs 5.1T 53G 5.1T 2% >> /rhev/data-center/mnt/glusterSD/vmm10.virt.iad3p:_vmstore1 >> vmm10.mydomain.com:/data1 >> fuse.glusterfs 8.0T 95G 7.9T 2% >> /rhev/data-center/mnt/glusterSD/vmm10.virt.iad3p:_data1 >> vmm10.mydomain.com:/data2 >> fuse.glusterfs 8.0T 112G 7.8T 2% >> /rhev/data-center/mnt/glusterSD/vmm10.virt.iad3p:_data2 >> >> >> >> >> *before any issues I increased the size of the cluster and the gluster >> cluster with the following, creating 4 distributed replicated volumes >> (engine, vmstore1, data1, data2)* >> >> vmm13.mydomain.com:/gluster_bricks/brick1(/dev/sdb) engine >> vmm13.mydomain.com:/gluster_bricks/brick2(/dev/sdb) vmstore1 >> vmm13.mydomain.com:/gluster_bricks/brick3(/dev/sdc) data1 >> vmm13.mydomain.com:/gluster_bricks/brick4(/dev/sdd) data2 >> >> vmm14.mydomain.com:/gluster_bricks/brick1(/dev/sdb) engine >> vmm14.mydomain.com:/gluster_bricks/brick2(/dev/sdb) vmstore1 >> vmm14.mydomain.com:/gluster_bricks/brick3(/dev/sdc) data1 >> vmm14.mydomain.com:/gluster_bricks/brick4(/dev/sdd) data2 >> >> vmm15.mydomain.com:/gluster_bricks/brick1(/dev/sdb) engine >> vmm15.mydomain.com:/gluster_bricks/brick2(/dev/sdb) vmstore1 >> vmm15.mydomain.com:/gluster_bricks/brick3(/dev/sdc) data1 >> vmm15.mydomain.com:/gluster_bricks/brick4(/dev/sdd) data2 >> >> vmm16.mydomain.com:/gluster_bricks/brick1(/dev/sdb) engine >> vmm16.mydomain.com:/gluster_bricks/brick2(/dev/sdb) vmstore1 >> vmm16.mydomain.com:/gluster_bricks/brick3(/dev/sdc) data1 >> vmm16.mydomain.com:/gluster_bricks/brick4(/dev/sdd) data2 >> >> vmm17.mydomain.com:/gluster_bricks/brick1(/dev/sdb) engine >> vmm17.mydomain.com:/gluster_bricks/brick2(/dev/sdb) vmstore1 >> vmm17.mydomain.com:/gluster_bricks/brick3(/dev/sdc) data1 >> vmm17.mydomain.com:/gluster_bricks/brick4(/dev/sdd) data2 >> >> vmm18.mydomain.com:/gluster_bricks/brick1(/dev/sdb) engine >> vmm18.mydomain.com:/gluster_bricks/brick2(/dev/sdb) vmstore1 >> vmm18.mydomain.com:/gluster_bricks/brick3(/dev/sdc) data1 >> vmm18.mydomain.com:/gluster_bricks/brick4(/dev/sdd) data >> >> >> *with your first suggestion I dont think it is possible to recover as I >> will lose the engine if I stop the "engine" volume, It might be doable for >> vmstore1, data1 and data2 but not the engine.* >> A) If you have space on another gluster volume (or volumes) or on >> NFS-based storage, you can migrate all VMs live . Once you do it, the >> simple way will be to stop and remove the storage domain (from UI) and >> gluster volume that correspond to the problematic brick. Once gone, you >> can remove the entry in oVirt for the old host and add the newly built >> one. Then you can recreate your volume and migrate the data back. >> >> *I tried removing the brick using CLI but get the following error:* >> volume remove-brick start: failed: Host node of the brick >> vmm10.mydomain.com:/gluster_bricks/engine/engine is down >> >> *So I used the force command:* >> gluster vol remove-brick engine >> vmm10.mydomain.com:/gluster_bricks/engine/engine >> vmm11.mydomain.com:/gluster_bricks/engine/engine >> vmm12.mydomain.com:/gluster_bricks/engine/engine >> force >> Remove-brick force will not migrate files from the removed bricks, so >> they will no longer be available on the volume. >> Do you want to continue? (y/n) y >> volume remove-brick commit force: success >> >> *so I lost my engine:* >> Please enter your authentication name: vdsm@ovirt >> Please enter your password: >> Id Name State >> ---------------------------------------------------- >> 3 HostedEngine paused >> >> hosted-engine --vm-start >> The hosted engine configuration has not been retrieved from shared >> storage. Please ensure that ovirt-ha-agent is running and the storage >> server is reachable. >> >> I guess this fail scenario is more complex than I thought, hosted engine >> should of survived, as far as gluster I am able to get around command line, >> the issue is the engine, though it was running on vmm18 and not running on >> any bricks belonging to vmm10, 11, or 12 (original setup) it still failed... >> virsh list --all >> Please enter your authentication name: vdsm@ovirt >> Please enter your password: >> Id Name State >> ---------------------------------------------------- >> - HostedEngine shut off >> >> *Now I cant get it to start:* >> hosted-engine --vm-start >> The hosted engine configuration has not been retrieved from shared >> storage. Please ensure that ovirt-ha-agent is running and the storage >> server is reachable. >> df -hT still showing mounts from old hosts bricks, could the problem be >> that this was the initiating host of the hyperconverged setup? >> vmm10.mydomain.com:/engine >> fuse.glusterfs 200G 6.2G 194G 4% /rhev/data-center/mnt/glusterSD/ >> vmm10.mydomain.com:_engine >> >> >> I will re-create everything from scratch and simulate this again, and see >> why is it too complex to recover ovirt's engine with gluster when a server >> dies completely. Maybe it is my lack of understanding with regards how >> ovirt integrates with gluster though I have a decent understanding of >> Gluster to work with it... >> >> I will let you know once I have the cluster recreated and will kill the >> same server and see if I missed anything from the recommendations your >> provided. >> >> Thanks, >> >> -- >> Adrian. >> >> >> >> >> >> >> >> On Tue, Jun 11, 2019 at 4:13 PM Strahil Nikolov <[email protected]> >> wrote: >> >> Do you have empty space to store the VMs ? If yes, you can always script >> the migration of the disks via the API . Even a bash script and curl can do >> the trick. >> >> About the /dev/sdb , I still don't get it . A pure "df -hT" from a node >> will make it way clear. I guess '/dev/sdb' is a PV and you got 2 LVs ontop >> of it. >> >> Note: I should admit that as an admin - I don't use UI for gluster >> management. >> >> For now do not try to remove the brick. The approach is either to migrate >> the qemu disks to another storage or to reset-brick/replace-brick in order >> to restore the replica count. >> I will check the file and I will try to figure it out. >> >> Redeployment never fixes the issue, it just speeds up the recovery. If >> you can afford the time to spent on fixing the issue - then do not redeploy. >> >> I would be able to take a look next week , but keep in mind that I'm not >> so in deep with oVirt - I have started playing with it when I deployed my >> lab. >> >> Best Regards, >> Strahil Nikolov >> >> Strahil, >> >> Looking at your suggestions I think I need to provide a bit more info on >> my current setup. >> >> >> >> 1. >> >> I have 9 hosts in total >> 2. >> >> I have 5 storage domains: >> - >> >> hosted_storage (Data Master) >> - >> >> vmstore1 (Data) >> - >> >> data1 (Data) >> - >> >> data2 (Data) >> - >> >> ISO (NFS) //had to create this one because oVirt 4.3.3.1 would not >> let me upload disk images to a data domain without an ISO (I think >> this is >> due to a bug) >> >> 3. >> >> Each volume is of the type “Distributed Replicate” and each one is >> composed of 9 bricks. >> I started with 3 bricks per volume due to the initial Hyperconverged >> setup, then I expanded the cluster and the gluster cluster by 3 hosts at a >> time until I got to a total of 9 hosts. >> >> >> 1. >> - >> >> >> >> >> >> >> >> >> *Disks, bricks and sizes used per volume / dev/sdb engine 100GB / dev/sdb >> vmstore1 2600GB / dev/sdc data1 2600GB / dev/sdd data2 2600GB / dev/sde >> -------- 400GB SSD Used for caching purposes From the above layout a >> few >> questions came up:* >> 1. >> >> >> >> *Using the web UI, How can I create a 100GB brick and a 2600GB brick to >> replace the bad bricks for “engine” and “vmstore1” within the same >> block >> device (sdb) ? What about / dev/sde (caching disk), When I tried >> creating a >> new brick thru the UI I saw that I could use / dev/sde for caching >> but only >> for 1 brick (i.e. vmstore1) so if I try to create another brick how >> would I >> specify it is the same / dev/sde device to be used for caching?* >> >> >> >> 1. >> >> If I want to remove a brick and it being a replica 3, I go to storage >> > Volumes > select the volume > bricks once in there I can select the 3 >> servers that compose the replicated bricks and click remove, this gives a >> pop-up window with the following info: >> >> Are you sure you want to remove the following Brick(s)? >> - vmm11:/gluster_bricks/vmstore1/vmstore1 >> - vmm12.virt.iad3p:/gluster_bricks/vmstore1/vmstore1 >> - 192.168.0.100:/gluster-bricks/vmstore1/vmstore1 >> - Migrate Data from the bricks? >> >> If I proceed with this that means I will have to do this for all the >> 4 volumes, that is just not very efficient, but if that is the only way, >> then I am hesitant to put this into a real production environment as there >> is no way I can take that kind of a hit for +500 vms :) and also I >> wont have that much storage or extra volumes to play with in a real >> sceneario. >> >> 2. >> >> After modifying yesterday */ etc/vdsm/ <http://vdsm.id>vdsm.id >> <http://vdsm.id> by following ( >> >> <https://stijn.tintel.eu/blog/2013/03/02/ovirt-problem-duplicate-uuids>https://stijn.tintel.eu/blog/2013/03/02/ovirt-problem-duplicate-uuids >> <https://stijn.tintel.eu/blog/2013/03/02/ovirt-problem-duplicate-uuids>) I >> was able to add the server **back **to the cluster using a new fqdn >> and a new IP, and tested replacing one of the bricks and this is my >> mistake >> as mentioned in #3 above I used / dev/sdb entirely for 1 brick because >> thru >> the UI I could not separate the block device and be used for 2 bricks (one >> for the engine and one for vmstore1). **So in the “gluster vol info” >> you might see <http://vmm102.mydomain.com>vmm102.mydomain.com >> <http://vmm102.mydomain.com> * >> *but in reality it is <http://myhost1.mydomain.com>myhost1.mydomain.com >> <http://myhost1.mydomain.com> * >> 3. >> >> *I am also attaching gluster_peer_status.txt * *and in the last 2 >> entries of that file you will see and entry >> <http://vmm10.mydomain.com>vmm10.mydomain.com <http://vmm10.mydomain.com> >> (old/bad entry) and <http://vmm102.mydomain.com>vmm102.mydomain.com >> <http://vmm102.mydomain.com> (new entry, same server vmm10, but renamed to >> vmm102). * >> *Also please find gluster_vol_info.txt file. * >> 4. >> >> *I am ready * >> *to redeploy this environment if needed, but I am also ready to test any >> other suggestion. If I can get a good understanding on how to recover from >> this I will be ready to move to production. * >> 5. >> >> >> >> *Wondering if you’d be willing to have a look at my setup through a >> shared screen? * >> >> *Thanks * >> >> >> *Adrian* >> >> On Mon, Jun 10, 2019 at 11:41 PM Strahil <[email protected]> wrote: >> >> Hi Adrian, >> >> You have several options: >> A) If you have space on another gluster volume (or volumes) or on >> NFS-based storage, you can migrate all VMs live . Once you do it, the >> simple way will be to stop and remove the storage domain (from UI) and >> gluster volume that correspond to the problematic brick. Once gone, you >> can remove the entry in oVirt for the old host and add the newly built >> one.Then you can recreate your volume and migrate the data back. >> >> B) If you don't have space you have to use a more riskier approach >> (usually it shouldn't be risky, but I had bad experience in gluster v3): >> - New server has same IP and hostname: >> Use command line and run the 'gluster volume reset-brick VOLNAME >> HOSTNAME:BRICKPATH HOSTNAME:BRICKPATH commit' >> Replace VOLNAME with your volume name. >> A more practical example would be: >> 'gluster volume reset-brick data ovirt3:/gluster_bricks/data/brick >> ovirt3:/gluster_ ricks/data/brick commit' >> >> If it refuses, then you have to cleanup '/gluster_bricks/data' (which >> should be empty). >> Also check if the new peer has been probed via 'gluster peer >> status'.Check the firewall is allowing gluster communication (you can >> compare it to the firewalls on another gluster host). >> >> The automatic healing will kick in 10 minutes (if it succeeds) and will >> stress the other 2 replicas, so pick your time properly. >> Note: I'm not recommending you to use the 'force' option in the previous >> command ... for now :) >> >> - The new server has a different IP/hostname: >> Instead of 'reset-brick' you can use 'replace-brick': >> It should be like this: >> gluster volume replace-brick data old-server:/path/to/brick >> new-server:/new/path/to/brick commit force >> >> In both cases check the status via: >> gluster volume info VOLNAME >> >> If your cluster is in production , I really recommend you the first >> option as it is less risky and the chance for unplanned downtime will be >> minimal. >> >> The 'reset-brick' in your previous e-mail shows that one of the servers >> is not connected. Check peer status on all servers, if they are less than >> they should check for network and/or firewall issues. >> On the new node check if glusterd is enabled and running. >> >> In order to debug - you should provide more info like 'gluster volume >> info' and the peer status from each node. >> >> Best Regards, >> Strahil Nikolov >> >> On Jun 10, 2019 20:10, Adrian Quintero <[email protected]> wrote: >> >> > >> > Can you let me know how to fix the gluster and missing brick?, >> > I tried removing it by going to "storage > Volumes > vmstore > bricks > >> selected the brick >> > However it is showing as an unknown status (which is expected because >> the server was completely wiped) so if I try to "remove", "replace brick" >> or "reset brick" it wont work >> > If i do remove brick: Incorrect bricks selected for removal in >> Distributed Replicate volume. Either all the selected bricks should be from >> the same sub volume or one brick each for every sub volume! >> > If I try "replace brick" I cant because I dont have another server with >> extra bricks/disks >> > And if I try "reset brick": Error while executing action Start Gluster >> Volume Reset Brick: Volume reset brick commit force failed: rc=-1 out=() >> err=['Host myhost1_mydomain_com not connected'] >> > >> > Are you suggesting to try and fix the gluster using command line? >> > >> > Note that I cant "peer detach" the sever , so if I force the removal >> of the bricks would I need to force downgrade to replica 2 instead of 3? >> what would happen to oVirt as it only supports replica 3? >> > >> > thanks again. >> > >> > On Mon, Jun 10, 2019 at 12:52 PM Strahil <[email protected]> wrote: >> >> >> >> >> Hi Adrian, >> >> Did you fix the issue with the gluster and the missing brick? >> >> If yes, try to set the 'old' host in maintenance an >> >> >> >> -- >> Adrian Quintero >> >> >> >> -- >> Adrian Quintero >> >> > > -- > Adrian Quintero > _______________________________________________ > Users mailing list -- [email protected] > To unsubscribe send an email to [email protected] > Privacy Statement: https://www.ovirt.org/site/privacy-policy/ > oVirt Code of Conduct: > https://www.ovirt.org/community/about/community-guidelines/ > List Archives: > https://lists.ovirt.org/archives/list/[email protected]/message/44ITPT3QMJIZIQRRHKYETFED4GGMUJRX/ > -- Thanks, Gobinda
_______________________________________________ Users mailing list -- [email protected] To unsubscribe send an email to [email protected] Privacy Statement: https://www.ovirt.org/site/privacy-policy/ oVirt Code of Conduct: https://www.ovirt.org/community/about/community-guidelines/ List Archives: https://lists.ovirt.org/archives/list/[email protected]/message/APGDG32KPWOKLRXWIBWRWOOWIFJWA3WE/

