Fullgör glusterfs

Nu har vi äntligen kommit till den roliga biten: försöka få igång lagringen med hjälp av infiniband. Och varför infiniband? Därför att det är snabbt, billigt i förhållande till farten och förhoppningsvis stabilt. Och varför glusterfs? Ja, det har använts under lång tid av Red Hat och fungerar veterligen. Det finns andra alternativ förstås, som nfs-lagring, eller iscsi-lunar. Men det tar vi senare. Vi har redan installerat glusterfs i förra avsnittet så vi fortsätter med att få det att lira. Sen kommer utmaningen med att få live-migration att fungera med två kvm-värdar. Jag har redan tidigare installerat glusterfs-server och -rdma. Då fick jag med följande på köpet.

Efter att ha läst på lite, med betoning på lite, väljer jag att också installera glusterfs-ganesha. Och som ni kan se får jag en hel del beroendepaket installerade samtidigt, fler än vad som syns på bilden Totalt är det 46 paket, men det kan ju givetvis variera beroende på vad man har sedan tidigare.

Sen ska vi också ha in glusterfs-ganesha-nfs.

Därefter ska vi skapa en katalog där vi monterar glusterfs-volymen.

# mkdir /bricks/demo

Vi skapar ett xfs-filsystem på en disk som är tillgänglig. En varning! Tänk till en extra gång när du utför nästa kommando, eftersom det måste göras på rätt hårddisk. Kolla med fdisk -l att du verkligen väljer rätt. Det är bättre att kolla en gång extra.

# mkfs.xfs /dev/sdd

# mount /dev/sdd /bricks/demo

Sen gör vi några kataloger till.

# mkdir /bricks/demo/vol
# mkdir /bricks/demo/scratch

# gluster volume create scratch transport tcp mail.ingos.se:/bricks/demo/scratch

Det här rekommenderas eftersom det är lättare att hantera kataloger och ta bort dem om något går fel genom rm -rf /bricks/demo/vol el.scratch. Annars måste man försöka rensa eller göra om filsystemet.

Nästa steg är att konfigurera i /etc/ganesha/ganesha.conf. Den förklarar bra vad som behövs. Ändra så att det ser ut som i den här nedanför.

 

Starta ganesha:

# systemctl start nfs-ganesha.service

Vänta en minut för att NFS-grace är klar. sen monterar vi volymen.

# mount localhost:/scratch /mnt
Men då åker vi på ett bakslag igen. Vi har inte tillräckliga rättigheter.

Jag öppnade alla följande portar i brandväggen, men felet låg inte där:

  • 24007 TCP för gluster-processen
  • 24008 TCP för Infiniband 
  • Sen öppnade jag en TCP-port för min bricka i volymen. Dvs 49152, eller om jag hade haft fyra brickor: 49152 - 49155 från GlusterFS version 3.4 & senare.
  • 38465, 38466 and 38467 TCP för Gluster NFS-servern.
  • Port 111 TCP och UDP (tcp var redan öppen) och port 2049/TCP enbart för GlusterFS 3.4 & senare (används för portmapper).

Eftersom det inte fungerade får jag utöka rättigheterna i ganesha.conf-filen. 

Okej! Jag ändrade taktik och skippade nfs-ganesha för att i stället köra igång ett grundläggande glusterfs-kluster. Här är en snabbguide med reservation för att det finns vissa felaktigheter.

1. Installera glusterfs. Se till att ha samma version av glusterfs. Åkte på att det inte gick att skapa en pool med två servrar då den ena servern hade version 3.7 av gluster och den andra version 3.8.

2. Ordna med bricks

3. Öppna i brandväggen. 24007-24012/tcp 49152-49155/tcp 2049/tcp

4. Gör en katalog i /bricks/demo på båda servrarna: mkdir /bricks/demo/gv0

5. Skapa volymen, och om det går bra, ska volymen startas också.

 

Nu äntligen gick det att göra en klustervolym. Men detta är givetvis bara början. Vi behöver sätta oss in i hur vi kan köra glusterfs över rdma i stället för tcp. Och vi behöver kanske köra iscsi i stället för ipoib. Ja, det är en hel del att sätta sig in i och få förståelse i.

Så här gjorde jag med brandväggen för att få glusterfs att fungera. Det gör man förstås på alla servrarna som ska ingå i klustret.

Men det gäller att ge klienterna tillstånd att montera enheterna som gluster delar ut. Nedanstående kommando ska ge alla nätverk som börjar på 192.168 att montera utdelningen. Vi får se om det fungerar.

Och kommandot för att se att det tog.

Men glusterfs vill ändå inte tillåta montering av den utdelade volymen. Det blir en hel del felmeddelanden i loggarna, som bland annat den nedanstående.

Efter att ha sökt på Google påstod någon med samma loggfel att ett bibliotek som han installerade rättade till  felet. Så då installerade jag också det för att se om det hjälper.

Första letade jag efter vilket paket som tillhandahöll libaio.so. Pakethanteraren hittade det och sedan installerade jag det med dnf install libaio-devel