Thanks Gobinda,
I am in the process of finishing up the 9 node cluster, once done I will
test this ansible role...



On Fri, Jun 14, 2019 at 12:45 PM Gobinda Das <[email protected]> wrote:

> 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
>


-- 
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/PG6EZNY7NBLKYXYR7YJARPAWH72BSZ3H/

Reply via email to