„GlusterFS telepítés Debian környezetben” változatai közötti eltérés

Innen: IT documentation
Nincs szerkesztési összefoglaló
 
(12 közbenső módosítás ugyanattól a szerkesztőtől nincs mutatva)
1. sor: 1. sor:
==Összefoglalás==
==Összefoglalás==
A [https://docs.gluster.org/en/latest/ GlusterFS] egy szabad terjesztésű, nyílt forráskódú hálózati elosztott fájlrendszer. A GlusterFS szerver-kliens alapú. A kliens mountolja egy vagy több szerver megosztását. Csak a megosztáson keresztüli fájlműveletek replikálódnak a szerverekre.
A [https://docs.gluster.org/en/latest/ GlusterFS] egy szabad terjesztésű, nyílt forráskódú hálózati elosztott fájlrendszer. A GlusterFS szerver-kliens alapú, a kliens csatlakozik (mountolja) egy vagy több szerver megosztásait. Csak a megosztáson keresztüli fájlműveletek replikálódnak a szerverekre, (!) a szerverek megosztásokat tartalmazó mappáiban végzett módosítás nem.
 
A példában 2 szerver node lesz telepítve. Mindkét node egyben kliens is lesz és a saját megosztását használja. Így egy redundáns fájlrendszer jön létre, amit használhatnak a node-ok egyéb szolgáltatásai. Tipikusan fájlszervereknél, webszervereknél használható terhelés elosztott klaszterek létrehozására.
 
A leírás Debian 10.7 64 bit operációs rendszeren készült.


A parancsok root jogot feltételeznek. (állandó root jog: sudo -i)
A parancsok root jogot feltételeznek. (állandó root jog: sudo -i)
10. sor: 6. sor:
A GlusterFS csomagokat a GlusterFS tárolójából telepítjük
A GlusterFS csomagokat a GlusterFS tárolójából telepítjük


A példában a GlusterFS 9.0 verzió lesz telepítve.
==GlusterFS telepítése==
 
Az összes node-on végezzük el a következőket:
== GlusterFS telepítése ==
Az összes node-on végezzük el a következőket.


=== Előfeltételek ===
===Előfeltételek===
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
apt -y install gnupg
apt -y install gnupg
</syntaxhighlight>Célszerű statikus IP címeket adni a node-oknak.
</syntaxhighlight>A példában a két node FQDN-je:
 
=== GlusterFS tároló telepítése ===
<syntaxhighlight lang="bash">
wget -O - https://download.gluster.org/pub/gluster/glusterfs/8/rsa.pub | apt-key add -
echo deb [arch=amd64] https://download.gluster.org/pub/gluster/glusterfs/9/LATEST/Debian/buster/amd64/apt buster main > /etc/apt/sources.list.d/gluster.list
apt update
</syntaxhighlight>
 
===GlusterFS szerver telepítése===
<syntaxhighlight lang="bash">
apt -y install glusterfs-server
</syntaxhighlight>
 
===GlusterFS szerver konfigurálása===
Ha ugyanazon a hoston van a szerver és a kliens, akkor az első node indulásakor a glusterd szolgáltatás indulása és a volume-ok rendelkezésre állása közt van pár másodperc különbség. A tárolóból telepített verzió erre az esetre nincs felkészítve, és az fstab-ban meghatározott GlusterFS volume-okat nem csatolja fel a boot folyamat alatt.
 
Ezért a systemd konfigurációt módosítani kell, hogy a GlusterFS szolgáltatás indulása után pár másodpercet várakozzon. A '''/lib/systemd/system/glusterd.service''' fájt módosítani kell, be kell szúrni a '''ExecStartPost=/bin/sleep 5''' beállítást a következőképpen:<syntaxhighlight lang="ini">
[Unit]
Description=GlusterFS, a clustered file-system server
Documentation=man:glusterd(8)
Requires=rpcbind.service
After=network.target rpcbind.service
Before=network-online.target
 
[Service]
Type=forking
PIDFile=/run/glusterd.pid
LimitNOFILE=65536
Environment="LOG_LEVEL=INFO"
EnvironmentFile=-/etc/sysconfig/glusterd
ExecStart=/usr/sbin/glusterd -p /run/glusterd.pid  --log-level $LOG_LEVEL $GLUSTERD_OPTIONS
ExecStartPost=/bin/sleep 5
KillMode=process
SuccessExitStatus=15
 
[Install]
WantedBy=multi-user.target
 
</syntaxhighlight>Ezután engedélyezni kell a szolgáltatást:<syntaxhighlight lang="bash">
systemctl enable glusterd.service
</syntaxhighlight>Szolgáltatás indítása:<syntaxhighlight lang="bash">
service glusterd start
</syntaxhighlight>
 
== GlusterFS szolgáltatás konfigurálása ==
 
===Pool konfigurálása===
A GlusterFS pool a GlusterFS szerver node-ok csoportja.
 
A példában a két node FQDN-je:


*node1.glusterfs.local
*node1.glusterfs.local
*node2.glusterfs.local
*node2.glusterfs.local


Célszerű az '''/etc/hosts''' fájban felvenni a domain neveket, akkor is, ha a környezeti DNS feloldja a azokat, hogy boot alatt a névfeloldás előtt is használhatóak legyenek. Illetve lehetőség van IP címmel is kezelni a node-okat.<syntaxhighlight lang="ini">
Célszerű statikus IP címeket adni a node-oknak, illetve az '''/etc/hosts''' fájban felvenni a domain neveket, akkor is, ha a környezeti DNS feloldja azokat, hogy boot alatt a névfeloldás előtt is használhatóak legyenek. Illetve lehetőség van IP címmel is kezelni a node-okat.<syntaxhighlight lang="ini">
127.0.0.1 localhost
127.0.0.1 localhost
127.0.1.1 <hostname>
127.0.1.1 <hostname>
84. sor: 28. sor:
ff02::2 ip6-allrouters
ff02::2 ip6-allrouters


</syntaxhighlight>Node2 felvitele a node1 -en:<syntaxhighlight lang="bash">
</syntaxhighlight>
===GlusterFS tároló telepítése===
A megfelelő Gluster és Debian verzió behelyettesítésével telepíthető a tároló.
* [https://docs.gluster.org/en/main/release-notes/ <gluster version>]
* [[wikipedia:Debian_version_history|<debian codename>]]
<syntaxhighlight lang="bash">
wget -O - https://download.gluster.org/pub/gluster/glusterfs/<gluster version>/rsa.pub | apt-key add -
echo deb [arch=amd64] https://download.gluster.org/pub/gluster/glusterfs/<gluster version>/LATEST/Debian/<debian codename>/amd64/apt <debian codename> main > /etc/apt/sources.list.d/gluster.list
apt update
</syntaxhighlight>[https://download.gluster.org/pub/gluster/glusterfs/ Tároló tallózása]
 
===GlusterFS szerver telepítése===
<syntaxhighlight lang="bash">
apt -y install glusterfs-server
</syntaxhighlight>GlusterFS szolgáltatás engedélyezése és indítása:<syntaxhighlight lang="bash">
systemctl enable glusterd.service
systemctl start glusterd.service
</syntaxhighlight>
==GlusterFS szolgáltatás konfigurálása==
 
===Pool konfigurálása===
A GlusterFS pool a GlusterFS szerver node-ok csoportja.
 
Node2 felvitele a node1 -en:<syntaxhighlight lang="bash">
gluster peer probe node2.glusterfs.local
gluster peer probe node2.glusterfs.local
</syntaxhighlight>Ezzel a két node egy glusterfs pool-ban van.
</syntaxhighlight>Ezzel a két node egy GlusterFS pool-ban van.


Továbbiakban a [https://docs.gluster.org/en/latest/CLI-Reference/cli-main/ gluser parancs peer] ágával kezelhetjük a node-okat.
Továbbiakban a [https://docs.gluster.org/en/latest/CLI-Reference/cli-main/ gluster parancs peer] ágával kezelhetjük a node-okat.


===Volume konfigurálása===
===Volume konfigurálása===
Meg kell határozni a fájlrendszerben egy pontot, ahol a a GlusterFS fizikailag tárolja a megosztások tartalmát. Alapesetben ez nem lehet csatolási pont (mount point) és nem lehet a root fájlrendszer (force kapcsolóval elnyomható). Ennek nem kell minden node-on ugyanott lennie, de a példában mindkét node-on az /opt/glusterfs könyvtárat használjuk majd.
Meg kell határozni a fájlrendszerben egy pontot, ahol a GlusterFS fizikailag tárolja a volume-ok tartalmát. Alapesetben ez nem lehet csatolási pont (mount point) és nem lehet a root fájlrendszeren (force kapcsolóval elnyomható). Ennek nem kell minden node-on ugyanott lennie, de a példában mindkét node-on az /opt/glusterfs könyvtárat használjuk majd.
 
A volume-ok lehetnek disperse (szétszórt), distributed (elosztott) és replica (másolat) típusúak, illetve ezek variációi. A replica lényegében tükrözést jelent, beállítható hány node-on legyen meg az adat (file). A distributed azt határozza meg, hány node-ra osztja szét a fileokat, ez esetben minden file csak egy node-on található meg. A disperse típusú volume hasolnó a distributed-hez, csak nem fileokat, hanem a fileok tartalmát osztja szét a node-ok közt, azaz minden file minden node-on megtalálható lesz, de nem teljes tartalommal, hanem az eredeti méret ahányad része, ahány node vesz részt a volume kiszolgálásában. Ez esetben beállítható redundancia, azaz hány node kiesését tűrje a volume. [https://docs.gluster.org/en/main/Quick-Start-Guide/Architecture/#types-of-volumes Bővebb információ.]


Mindkét node-on hozzuk létre a kívánt könyvtára(ka)t. <syntaxhighlight lang="bash">
A példában egy 2 node-os replica volume-t hozunk létre.Mindkét node-on hozzuk létre a kívánt könyvtára(ka)t.
<syntaxhighlight lang="bash">
mkdir -p /opt/glusterfs/share1
mkdir -p /opt/glusterfs/share1
 
</syntaxhighlight>
</syntaxhighlight>Volume (megosztás) létrehozása. <syntaxhighlight lang="bash">
Volume (megosztás) létrehozása.
<syntaxhighlight lang="bash">
gluster volume create share1 replica 2 node1.glusterfs.local:/opt/glusterfs/share1 node2.glusterfs.local:/opt/glusterfs/share1
gluster volume create share1 replica 2 node1.glusterfs.local:/opt/glusterfs/share1 node2.glusterfs.local:/opt/glusterfs/share1
</syntaxhighlight>Ha már használtuk a a könytárat GlusterFS megosztásra és "already part of a volume" hibával találkozunk, akkor távolítsuk el a gfs extended attribútumokat.<syntaxhighlight lang="bash">
</syntaxhighlight>
Megjegyzés: Ha már használtuk a könyvtárat GlusterFS megosztásra és "already part of a volume" hibával találkozunk, akkor távolítsuk el a gfs extended attribútumokat.
<syntaxhighlight lang="bash">
setfattr -x trusted.glusterfs.volume-id /opt/glusterfs/share1
setfattr -x trusted.glusterfs.volume-id /opt/glusterfs/share1
setfattr -x trusted.gfid /opt/glusterfs/share1
setfattr -x trusted.gfid /opt/glusterfs/share1
</syntaxhighlight>
2 node esetén figyelmeztet, hogy ilyen esetben előfordul a [https://docs.gluster.org/en/latest/Troubleshooting/resolving-splitbrain/#types-of-split-brains split-brain] állapot. Ha 2 node-ot szeretnénk, fogadjuk el. (force kapcsolóval elnyomható)


</syntaxhighlight>2 node esetén figyelmeztet, hogy ilyen esetben előfordul a [https://docs.gluster.org/en/latest/Troubleshooting/resolving-splitbrain/#types-of-split-brains split-brain] állapot. Ha 2 node-ot szeretnénk, fogadjuk el. (force kapcsolóval elnyomható)
Volume  elindítása:
 
<syntaxhighlight lang="bash">
Volume  elindítása:<syntaxhighlight lang="bash">
gluster volume start share1
gluster volume start share1
</syntaxhighlight>A biztonság növelése érdekében meghatározhatjuk, mely IP címek érhetik el a volume-ot.<syntaxhighlight lang="bash">
</syntaxhighlight>
A biztonság növelése érdekében meghatározhatjuk, mely IP címek érhetik el a volume-ot.<syntaxhighlight lang="bash">
gluster volume set share1 auth.allow 1.2.3.4,5.6.7.8
gluster volume set share1 auth.allow 1.2.3.4,5.6.7.8
</syntaxhighlight>A [https://docs.gluster.org/en/latest/CLI-Reference/cli-main/ gluser parancs volume] ágával kezelhetjük továbbiakban a volume-okat.
</syntaxhighlight>
A [https://docs.gluster.org/en/latest/CLI-Reference/cli-main/ gluster parancs volume] ágával kezelhetjük továbbiakban a volume-okat.


==GlusterFS kliens konfigurálása==
==GlusterFS kliens konfigurálása==
Meg kell határozni, hogy hová csatoljuk fel a GlusterFS megosztást. A példában az /mnt/glusterfs könyvtárat használjuk, melyet előtte létrehozunk:<syntaxhighlight lang="bash">
Meg kell határozni, hogy hová csatoljuk fel a GlusterFS megosztást. A példában az /mnt/glusterfs könyvtárat használjuk, melyet előtte létrehozunk:<syntaxhighlight lang="bash">
mkdir -p /mnt/glusterfs
mkdir -p /mnt/glusterfs
</syntaxhighlight>Az /etc/fstab fájlban hozzuk létre a következő bejegyzést:<syntaxhighlight lang="ini">
</syntaxhighlight>Az '''/etc/fstab''' fájlban hozzuk létre a következő bejegyzést:<syntaxhighlight lang="ini">
localhost:/share1      /mnt/glusterfs          glusterfs      _netdev      0 0
localhost:/share1      /mnt/glusterfs          glusterfs      _netdev      0 0
</syntaxhighlight>Majd csatoljuk fel a megosztást:<syntaxhighlight lang="bash">
</syntaxhighlight>Majd csatoljuk fel a megosztást:<syntaxhighlight lang="bash">
mount /mnt/glusterfs
mount /mnt/glusterfs
</syntaxhighlight><br />
</syntaxhighlight>
 
== NFS-Ganesha konfigurálása GlusterFS-hez ==
Konfigurálhatunk NFS exportot is egy GlusterFS volumehez. Ehhez az NFS-Ganesha NFS szerver javasolt, melynek van GlusterFS backend-je.
 
=== NFS-Ganesha telepítése ===
<syntaxhighlight lang="bash">
apt -y install glusterfs-ganesha nfs-ganesha nfs-ganesha-gluster
</syntaxhighlight>Volume export konfiguráció készítése Ganesha-hoz:<syntaxhighlight lang="bash">
/usr/libexec/ganesha/create-export-ganesha.sh /etc/ganesha on share1
</syntaxhighlight>A fenti script az /etc/ganesha/export/ könyvtárba létrehozza a megfelelő konfigurációt és includolja azt az /etc/ganesha/ganesha.conf fő konfigurációs fileban. Az export neve alapértelmezetten a Volume neve. Az esetleges változtatásokat a létrehozott /etc/ganesha/export/export.share1.conf fileban lehet megtenni.
 
Érdemes a hostnevet átírni a tárgyi host FQDN-jére, alapérelmezetten localhost-al hozza létre.<syntaxhighlight lang="ini">
# WARNING : Using Gluster CLI will overwrite manual
# changes made to this file. To avoid it, edit the
# file and run ganesha-ha.sh --refresh-config.
EXPORT{
      Export_Id = 2;
      Path = "/share1";
      FSAL {
          name = GLUSTER;
          hostname="node1.glusterfs.local";
          volume="share1";
          }
      Access_type = RW;
      Disable_ACL = true;
      Squash="No_root_squash";
      Pseudo="/share1";
      Protocols = "3", "4" ;
      Transports = "UDP","TCP";
      SecType = "sys";
      Security_Label = False;
    }
 
</syntaxhighlight>Ezután érvényesíteni kell a változásokat:<syntaxhighlight lang="bash">
systemctl restart nfs-ganesha
</syntaxhighlight>A következő paranccsal ellenőrizhetjük az exportot:<syntaxhighlight lang="bash">
showmount -e localhost
</syntaxhighlight>Ezután felcsatolhatjuk az NFS exportot más kliensen vagy magán a kiszolgálón is:<syntaxhighlight lang="bash">
mount node1.glusterfs.local:/share1 /mnt
</syntaxhighlight>
[[Kategória:Debian]]
[[Kategória:Debian]]
[[Kategória:GlusterFS]]
[[Kategória:GlusterFS]]
[[Kategória:Debian10]]

A lap jelenlegi, 2023. május 11., 15:31-kori változata

Összefoglalás

A GlusterFS egy szabad terjesztésű, nyílt forráskódú hálózati elosztott fájlrendszer. A GlusterFS szerver-kliens alapú, a kliens csatlakozik (mountolja) egy vagy több szerver megosztásait. Csak a megosztáson keresztüli fájlműveletek replikálódnak a szerverekre, (!) a szerverek megosztásokat tartalmazó mappáiban végzett módosítás nem.

A parancsok root jogot feltételeznek. (állandó root jog: sudo -i)

A GlusterFS csomagokat a GlusterFS tárolójából telepítjük

GlusterFS telepítése

Az összes node-on végezzük el a következőket:

Előfeltételek

apt -y install gnupg

A példában a két node FQDN-je:

  • node1.glusterfs.local
  • node2.glusterfs.local

Célszerű statikus IP címeket adni a node-oknak, illetve az /etc/hosts fájban felvenni a domain neveket, akkor is, ha a környezeti DNS feloldja azokat, hogy boot alatt a névfeloldás előtt is használhatóak legyenek. Illetve lehetőség van IP címmel is kezelni a node-okat.

127.0.0.1	localhost
127.0.1.1	<hostname>

<node 1 IP address>	node1.glusterfs.local
<node 2 IP address>	node2.glusterfs.local
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

GlusterFS tároló telepítése

A megfelelő Gluster és Debian verzió behelyettesítésével telepíthető a tároló.

wget -O - https://download.gluster.org/pub/gluster/glusterfs/<gluster version>/rsa.pub | apt-key add -
echo deb [arch=amd64] https://download.gluster.org/pub/gluster/glusterfs/<gluster version>/LATEST/Debian/<debian codename>/amd64/apt <debian codename> main > /etc/apt/sources.list.d/gluster.list
apt update

Tároló tallózása

GlusterFS szerver telepítése

apt -y install glusterfs-server

GlusterFS szolgáltatás engedélyezése és indítása:

systemctl enable glusterd.service
systemctl start glusterd.service

GlusterFS szolgáltatás konfigurálása

Pool konfigurálása

A GlusterFS pool a GlusterFS szerver node-ok csoportja.

Node2 felvitele a node1 -en:

gluster peer probe node2.glusterfs.local

Ezzel a két node egy GlusterFS pool-ban van.

Továbbiakban a gluster parancs peer ágával kezelhetjük a node-okat.

Volume konfigurálása

Meg kell határozni a fájlrendszerben egy pontot, ahol a GlusterFS fizikailag tárolja a volume-ok tartalmát. Alapesetben ez nem lehet csatolási pont (mount point) és nem lehet a root fájlrendszeren (force kapcsolóval elnyomható). Ennek nem kell minden node-on ugyanott lennie, de a példában mindkét node-on az /opt/glusterfs könyvtárat használjuk majd.

A volume-ok lehetnek disperse (szétszórt), distributed (elosztott) és replica (másolat) típusúak, illetve ezek variációi. A replica lényegében tükrözést jelent, beállítható hány node-on legyen meg az adat (file). A distributed azt határozza meg, hány node-ra osztja szét a fileokat, ez esetben minden file csak egy node-on található meg. A disperse típusú volume hasolnó a distributed-hez, csak nem fileokat, hanem a fileok tartalmát osztja szét a node-ok közt, azaz minden file minden node-on megtalálható lesz, de nem teljes tartalommal, hanem az eredeti méret ahányad része, ahány node vesz részt a volume kiszolgálásában. Ez esetben beállítható redundancia, azaz hány node kiesését tűrje a volume. Bővebb információ.

A példában egy 2 node-os replica volume-t hozunk létre.Mindkét node-on hozzuk létre a kívánt könyvtára(ka)t.

mkdir -p /opt/glusterfs/share1

Volume (megosztás) létrehozása.

gluster volume create share1 replica 2 node1.glusterfs.local:/opt/glusterfs/share1 node2.glusterfs.local:/opt/glusterfs/share1

Megjegyzés: Ha már használtuk a könyvtárat GlusterFS megosztásra és "already part of a volume" hibával találkozunk, akkor távolítsuk el a gfs extended attribútumokat.

setfattr -x trusted.glusterfs.volume-id /opt/glusterfs/share1
setfattr -x trusted.gfid /opt/glusterfs/share1

2 node esetén figyelmeztet, hogy ilyen esetben előfordul a split-brain állapot. Ha 2 node-ot szeretnénk, fogadjuk el. (force kapcsolóval elnyomható)

Volume elindítása:

gluster volume start share1

A biztonság növelése érdekében meghatározhatjuk, mely IP címek érhetik el a volume-ot.

gluster volume set share1 auth.allow 1.2.3.4,5.6.7.8

A gluster parancs volume ágával kezelhetjük továbbiakban a volume-okat.

GlusterFS kliens konfigurálása

Meg kell határozni, hogy hová csatoljuk fel a GlusterFS megosztást. A példában az /mnt/glusterfs könyvtárat használjuk, melyet előtte létrehozunk:

mkdir -p /mnt/glusterfs

Az /etc/fstab fájlban hozzuk létre a következő bejegyzést:

localhost:/share1      /mnt/glusterfs           glusterfs       _netdev       0 0

Majd csatoljuk fel a megosztást:

mount /mnt/glusterfs

NFS-Ganesha konfigurálása GlusterFS-hez

Konfigurálhatunk NFS exportot is egy GlusterFS volumehez. Ehhez az NFS-Ganesha NFS szerver javasolt, melynek van GlusterFS backend-je.

NFS-Ganesha telepítése

apt -y install glusterfs-ganesha nfs-ganesha nfs-ganesha-gluster

Volume export konfiguráció készítése Ganesha-hoz:

/usr/libexec/ganesha/create-export-ganesha.sh /etc/ganesha on share1

A fenti script az /etc/ganesha/export/ könyvtárba létrehozza a megfelelő konfigurációt és includolja azt az /etc/ganesha/ganesha.conf fő konfigurációs fileban. Az export neve alapértelmezetten a Volume neve. Az esetleges változtatásokat a létrehozott /etc/ganesha/export/export.share1.conf fileban lehet megtenni. Érdemes a hostnevet átírni a tárgyi host FQDN-jére, alapérelmezetten localhost-al hozza létre.

# WARNING : Using Gluster CLI will overwrite manual
# changes made to this file. To avoid it, edit the
# file and run ganesha-ha.sh --refresh-config.
EXPORT{
      Export_Id = 2;
      Path = "/share1";
      FSAL {
           name = GLUSTER;
           hostname="node1.glusterfs.local";
          volume="share1";
           }
      Access_type = RW;
      Disable_ACL = true;
      Squash="No_root_squash";
      Pseudo="/share1";
      Protocols = "3", "4" ;
      Transports = "UDP","TCP";
      SecType = "sys";
      Security_Label = False;
     }

Ezután érvényesíteni kell a változásokat:

systemctl restart nfs-ganesha

A következő paranccsal ellenőrizhetjük az exportot:

showmount -e localhost

Ezután felcsatolhatjuk az NFS exportot más kliensen vagy magán a kiszolgálón is:

mount node1.glusterfs.local:/share1 /mnt