Gebruikershulpmiddelen

Site-hulpmiddelen


installatie_handleidingen:3_node_glusterfs_centos7_cluster

Verschillen

Dit geeft de verschillen weer tussen de geselecteerde revisie en de huidige revisie van de pagina.

Link naar deze vergelijking

Beide kanten vorige revisie Vorige revisie
Volgende revisie
Vorige revisie
installatie_handleidingen:3_node_glusterfs_centos7_cluster [2018/12/23 15:05]
abel [diskindeling]
installatie_handleidingen:3_node_glusterfs_centos7_cluster [2019/01/04 09:13] (huidige)
abel [Een 3 Node GlusterFS cluster op CentOS 7]
Regel 1: Regel 1:
 ====== Een 3 Node GlusterFS cluster op CentOS 7 ====== ====== Een 3 Node GlusterFS cluster op CentOS 7 ======
  
-<note warning>Work in progress</note>+GlusterFS als oplossing om je storage redundant te maken. Het idee is dat als er een disk, een netwerkkaart een voeding een processor, of alles aan 1 server kapot gaat moet de boel blijven draaien.
  
-Begin met [[installatie_handleidingen:centos7|een kaal ingerichte CentOS 7 server]] met bij voorkeur een extra, apart storage LAN.+Begin met [[installatie_handleidingen:centos7|een kaal ingerichte CentOS 7 server]] met bij voorkeur een apart storage LAN. over[[werkinstructies:netwerkteaming| een netwerk team]].
  
 +<note>needs re-write to striped-replicated</note>
 +<note warning>Work in progress</note>
 =====  diskindeling ===== =====  diskindeling =====
  
Regel 63: Regel 65:
 vgcreate glusterVG0 /dev/vdb1'' vgcreate glusterVG0 /dev/vdb1''
  
-De logical volumes __moeten__ thin provisioned zijn om een quirk in de werking van glusterfs omdat we de werking van de arbitrator willen gebruiken die dit noodzakelijk maakt.+Bij thin provisioning maak je eerst een thin pool logical volume aan waarbinnen vervolgens de thin logical volumes worden aangemaakt die voor glusterfs worden gemaakt.
  
-Dit betekent ook dat we een schijf altijd in drieën moeten delen om de schijf symetrisch over de servers te verdelen.+''lvcreate -l 100%FREE -T glusterVG0/thin_pool''
  
-Hier wordt het wat ingewikkeld, de arbitrator slaat alleen metadata van de files op namelijk 4kb per filein mijn situatie is komt dit neer op een 2tb volume met 250000 files dus 1gb aan arbitrator data.+Nu kunnen de thin logical volumes worden aangemaakt voor de 2 replicated bricks en de arbitrator bricks. 
 +hoeveel ruimte heeft de thin pool:\\ ''lvdisplay glusterVG0/thin_pool'' 
 +<code> 
 +  --- Logical volume --- 
 +  LV Name                thin_pool 
 +  VG Name                glusterVG0 
 +  LV UUID                3u7VPa-omd2-ka05-Ex32-AaFa-Kt0D-tBt9Bj 
 +  LV Write Access        read/write 
 +  LV Creation host, time server2.auriel.nl, 2018-12-23 15:18:19 +0100 
 +  LV Pool metadata       thin_pool_tmeta 
 +  LV Pool data           thin_pool_tdata 
 +  LV Status              available 
 +  # open                 0 
 +  LV Size                <3,69 GiB 
 +  Allocated pool data    0,00% 
 +  Allocated metadata     11,13% 
 +  Current LE             944 
 +  Segments               1 
 +  Allocation             inherit 
 +  Read ahead sectors     auto 
 +  - currently set to     8192 
 +  Block device           253:
 +</code>
  
-Nu wordt een glusterfs volume zo groot als de kleinste bricken een arbitrator geldt wel als een brick, dus vandaar de thin provisioning met over-provisioning. +dus 994 LEdat is ongeveer 3900kb per LE. Stel dat we 10 test files gaan neerzetten moet er rekening worden gehouden met ±40kb aan arbitrator dataom het hele verhaal even te houden gaan we dus 942 LE door 2 delen dus 471 LE per thin logical volume≈1791Mb (er is dus 2LE≈7800kb voor de arbitrator brick, ruimschoots voldoende) 
  
-Hoeveel overprovisioning precies is dus wat vaagmaar uit mijn ervaring met een multipurpose nas kan je dus stellen dat je rekening noet houden met 1/2 gb meta data per tb storage.+''lvcreate -V 1791M -T glusterVG0/thin_pool -n gluster_replica0'' 
 +<code> 
 +  Rounding up size to full physical extent 1,75 GiB  
 +  Logical volume "gluster_replica0" created. 
 +</code> 
 +''lvcreate -V 1791M -T glusterVG0/thin_pool -n gluster_replica1'' 
 +<code> 
 +  Rounding up size to full physical extent 1,75 GiB 
 +  Logical volume "gluster_replica1" created. 
 +</code> 
 +''lvcreate -V 1791M -T glusterVG0/thin_pool -n gluster_arbitrator0'' 
 +<code> 
 +  Rounding up size to full physical extent 1,75 GiB 
 +  WARNING: Sum of all thin volume sizes (5,25 GiB) exceeds the size of thin pool glusterVG0/thin_pool and the size of whole volume group (<3,70 GiB). 
 +  WARNING: You have not turned on protection against thin pools running out of space. 
 +  WARNING: Set activation/thin_pool_autoextend_threshold below 100 to trigger automatic extension of thin pools before they get full. 
 +  Logical volume "gluster_arbitrator0" created. 
 +</code>
  
-''lvcreate -n glusterLV1 -l 100%FREE glusterVG'' +Hier krijgen we de waarschuwing dat we overprovisioned zijn, maar de logical volume wordt wel aangemaakt.
- +
-vervolgens een xfs filesysteem:\\ +
-''mkfs -t xfs /dev/mapper/glusterVG-glusterLV1''+
  
 +vervolgens een xfs filesysteem op al die logical volumes:\\
 +''mkfs -t xfs /dev/mapper/glusterVG0-gluster_replica0\\
 +mkfs -t xfs /dev/mapper/glusterVG0-gluster_replica1\\
 +mkfs -t xfs /dev/mapper/glusterVG0-gluster_arbitrator0 ''
  
 het filesysteem mounten. het filesysteem mounten.
    
-maak een mountpoint: ''mkdir -p /GLUSTER_DATA/brick1''+maak de mountpoints:\\ 
 +''mkdir -p /GLUSTER0_DATA/brick0\\ 
 +mkdir -p /GLUSTER0_DATA/brick1\\ 
 +mkdir -p /GLUSTER0_DATA/arbitrator0''
  
 maak de mount ''vi /etc/fstab'' en voeg toe: maak de mount ''vi /etc/fstab'' en voeg toe:
 <code> <code>
-/dev/mapper/glusterVG-glusterLV1        /GLUSTER_DATA/brick1  xfs     defaults        0 0+/dev/mapper/glusterVG0-gluster_replica0      /GLUSTER0_DATA/brick0        xfs   defaults   0 0 
 +/dev/mapper/glusterVG0-gluster_replica1      /GLUSTER0_DATA/brick1        xfs   defaults   0 0 
 +/dev/mapper/glusterVG0-gluster_arbitrator0   /GLUSTER0_DATA/arbitrator0   xfs   defaults   0 0
 </code> </code>
  
Regel 92: Regel 139:
 en maak de volume directory aan waar glusterfs uiteindelijk mee gaat werken: en maak de volume directory aan waar glusterfs uiteindelijk mee gaat werken:
  
-''mkdir /GLUSTER_DATA/brick1/gv1'' +''mkdir /GLUSTER0_DATA/brick0/gv1\\ 
 +mkdir /GLUSTER0_DATA/brick1/gv1\\ 
 +mkdir /GLUSTER0_DATA/arbitrator0/gv1''
 ===== GlusterFS server installatie ===== ===== GlusterFS server installatie =====
  
Regel 136: Regel 184:
 ZONE=trusted ZONE=trusted
 </code> </code>
-==== start een Trusted pool ====+===== start een Trusted pool =====
  
 Door een probe wordt het cluster geinitieerd.  Door een probe wordt het cluster geinitieerd. 
Regel 161: Regel 209:
  
  
-==== Define en start een GlusterFS volume ====+===== Define en start een GlusterFS volume =====
  
-Nu kan je een GlusterFS volume aanmaken, we hadden al een directory aangemaakt op een gemount logical volume, een zogenaamde "brick" . In dit voorbeeld ''/GLUSTER_DATA/brick1/gv1/''.+Nu kan je een GlusterFS volume aanmaken, we hadden al een aantal directory aangemaakt op een gemount logical volume, een zogenaamde "brick" . In dit voorbeeld ''/GLUSTER0_DATA/brick1/gv1/'' etc..
  
 De naamgeving van een brick directory is freeform, en het gebruik van LVM is ook niet perse noodzakelijk. Voor zover ik kan nagaan zou je zelfs de brick kunnen definiëren als een rauw mountpoint, dus zonder de extra directory daarin. De naamgeving van een brick directory is freeform, en het gebruik van LVM is ook niet perse noodzakelijk. Voor zover ik kan nagaan zou je zelfs de brick kunnen definiëren als een rauw mountpoint, dus zonder de extra directory daarin.
  
-''gluster volume create gv1 replica 2 arbiter 1 server1:/GLUSTER_DATA/brick1/gv1/ server2:/GLUSTER_DATA/brick1/gv1/ server3:/GLUSTER_DATA/brick1/gv1/'' +''gluster volume create gv1 replica 2 arbiter 1 server1:/GLUSTER0_DATA/brick0/gv1/ server2:/GLUSTER0_DATA/brick0/gv1/ server3:/GLUSTER0_DATA/arbitrator0/gv1/ server1:/GLUSTER0_DATA/brick1/gv1/ server3:/GLUSTER0_DATA/brick0/gv1/ server2:/GLUSTER0_DATA/arbitrator0/gv1/ server2:/GLUSTER0_DATA/brick1/gv1/ server3:/GLUSTER0_DATA/brick1/gv1/ server1:/GLUSTER0_DATA/arbitrator0/gv1/''
- +
-In dit geval met 3 nodes zouden we eigenlijk maar 1 copie van alles willen hebben, maar dan bestaat het gevaar van een split brain situatie waarin er geen methode is om aan te tonen welke node over de juiste file waarden beschikt, om toch niet helemaal 3 copien tew hoeven gebruiiken hebben we hier opgegeven : ''arbiter 1''wat resulteert in dat 1 node niet een hele copie van de data bewaard maar alleen  de file metadate. zodoende heb je van 3x2Gb niet maar 2Gb over maar iets minder dan 4Gb.+
  
 <code> <code>
 volume create: gv1: success: please start the volume to access data volume create: gv1: success: please start the volume to access data
 </code> </code>
 +
 +Het volgende is nodig om te zorgen dat op tijd een andere brick gebruikt wordt als een file een volle brick zou gaan veroorzaken. Zonder deze settings krijg je errors in de trand van "no space left on device" als er een brick vol is (ook al is er nog ruimte in andere bricks)
 +
 +''gluster volume set gv1 cluster.min-free-disk 4KB''
 +
 +De waarde is wel belangrijk, want pas als de min-fre-disk berijkt is zal een file naar een andere brick geschreven worden. Dus deze waarde moet gezet worden op de grootte van de te verwachten files. 
 +
 +Bit of a bummer i know.
 +
  
 En start het volume: En start het volume:
  
-'' gluster volume start gv1''+''gluster volume start gv1''
 <code> <code>
 gluster volume start gv1 gluster volume start gv1
Regel 185: Regel 240:
 ''gluster volume info gv1'' ''gluster volume info gv1''
 <code> <code>
 +
 Volume Name: gv1 Volume Name: gv1
-Type: Replicate +Type: Distributed-Replicate 
-Volume ID: 5958b2eb-9789-46c3-b882-0c421bf61b9f+Volume ID: ea51a568-6f47-47b3-a29d-9ec2edabc04f
 Status: Started Status: Started
 Snapshot Count: 0 Snapshot Count: 0
-Number of Bricks: x (2 + 1) = 3+Number of Bricks: x (2 + 1) = 9
 Transport-type: tcp Transport-type: tcp
 Bricks: Bricks:
-Brick1: server1:/GLUSTER_DATA/brick1/gv1 +Brick1: server1:/GLUSTER0_DATA/brick0/gv1 
-Brick2: server2:/GLUSTER_DATA/brick1/gv1 +Brick2: server2:/GLUSTER0_DATA/brick0/gv1 
-Brick3: server3:/GLUSTER_DATA/brick1/gv1 (arbiter)+Brick3: server3:/GLUSTER0_DATA/arbitrator0/gv1 (arbiter) 
 +Brick4: server1:/GLUSTER0_DATA/brick1/gv1 
 +Brick5: server3:/GLUSTER0_DATA/brick0/gv1 
 +Brick6: server2:/GLUSTER0_DATA/arbitrator0/gv1 (arbiter) 
 +Brick7: server2:/GLUSTER0_DATA/brick1/gv1 
 +Brick8: server3:/GLUSTER0_DATA/brick1/gv1 
 +Brick9: server1:/GLUSTER0_DATA/arbitrator0/gv1 (arbiter)
 Options Reconfigured: Options Reconfigured:
 transport.address-family: inet transport.address-family: inet
Regel 243: Regel 305:
 controleren : ''df'' en daar staat dan tussen: controleren : ''df'' en daar staat dan tussen:
 <code> <code>
-server1:/gv1              2082816   53940   2028876   3% /glustervolume1+server1:/gv1              5474304  154968   5319336   3% /glustervolume1
 </code> </code>
  
Regel 293: Regel 355:
  
 https://joejulian.name/post/replacing-a-glusterfs-server-best-practice/ https://joejulian.name/post/replacing-a-glusterfs-server-best-practice/
 +
 +https://access.redhat.com/solutions/276483
 +
 +https://access.redhat.com/solutions/1298163
installatie_handleidingen/3_node_glusterfs_centos7_cluster.1545573909.txt.gz · Laatst gewijzigd: 2018/12/23 15:05 door abel