piątek, 1 czerwca 2018

Instalacja i konfiguracja GlusterFS

Dane wejściowe:
  • 4 serwery Ubuntu 16.04.4 LTS,
  • 2048 GB RAM-u każdy z serwerów.
Zaczynamy od wpisania do "/etc/hosts" każdego z serwerów informacji o nazwach i adresach IP wszystkich maszyn z naszej sieci GlusterFS. Dla przykładu:
192.168.33.30   kubernetes-master1192.168.33.31   kubernetes-worker1192.168.33.32   kubernetes-worker2192.168.33.33   kubernetes-worker3
Dodajemy wszędzie informację o repozytorium:
sudo add-apt-repository ppa:gluster/glusterfs-3.11
Aktualizujemy bazę:
sudo apt-get update
Instalujemy oprogramowanie:
sudo apt-get install glusterfs-server
Ze względów bezpieczeństwa wyłączamy aktualizację pakietów GlusterFS:
sudo apt-mark hold glusterfs*
Startujemy oprogramowanie i dodajemy konfigurację, która uruchamia usługę podczas startu systemu:
sudo systemctl start glusterd
sudo systemctl enable glusterd
Na pierwszy z serwerów sprawdzamy po kolei czy w sieci są dostępne wszystkie węzły:
vagrant@kubernetes-master1:~$ sudo gluster peer probe kubernetes-worker1
peer probe: success.
vagrant@kubernetes-master1:~$ sudo gluster peer probe kubernetes-worker2
peer probe: success.
vagrant@kubernetes-master1:~$ sudo gluster peer probe kubernetes-worker3
peer probe: success.
Tworzymy wolumen:
vagrant@kubernetes-master1:~$ sudo gluster volume create gvol0 replica 4 kubernetes-master1:/data kubernetes-worker1:/data kubernetes-worker2:/data kubernetes-worker3:/data force
volume create: gvol0: success: please start the volume to access data
Opcja "force" utworzy nam katalog na serwerach jeżeli takowy nie istnieje.

Aktualnie każdy komputer ma dostęp bez żadnych restrykcji do naszego wolumenu z danymi więc dopuszczamy połączenie montujące tylko z:
vagrant@kubernetes-master1:~$ sudo gluster volume set gvol0 auth.allow 127.0.0.1
volume set: success
Startujemy wolumen i wyświetlamy informacje na jego temat:
vagrant@kubernetes-master1:~$ sudo gluster volume start gvol0
volume start: gvol0: success
vagrant@kubernetes-master1:~$ sudo gluster volume status
Status of volume: gvol0
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick kubernetes-master1:/data              49152     0          Y       17935
Brick kubernetes-worker1:/data              49152     0          Y       8542
Brick kubernetes-worker2:/data              49152     0          Y       8411
Brick kubernetes-worker3:/data              49152     0          Y       8472
Self-heal Daemon on localhost               N/A       N/A        Y       17955
Self-heal Daemon on kubernetes-worker3      N/A       N/A        Y       8492
Self-heal Daemon on kubernetes-worker2      N/A       N/A        Y       8431
Self-heal Daemon on kubernetes-worker1      N/A       N/A        Y       8562
Task Status of Volume gvol0
------------------------------------------------------------------------------
There are no active volume tasks
vagrant@kubernetes-master1:~$ sudo gluster volume info
Volume Name: gvol0
Type: Replicate
Volume ID: ab3ed814-191e-4288-ae1e-341f9a1bca40
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 4 = 4
Transport-type: tcp
Bricks:
Brick1: kubernetes-master1:/data
Brick2: kubernetes-worker1:/data
Brick3: kubernetes-worker2:/data
Brick4: kubernetes-worker3:/data
Options Reconfigured:
auth.allow: 127.0.0.1
transport.address-family: inet
nfs.disable: on
Na każdym serwerze tworzymy katalog "/mnt/gluster".

Na każdej z maszyn montujemy wolumen (w zależności od tego na której jesteś to zmień nazwę) np.:
sudo mount -t glusterfs kubernetes-master1:/gvol0 /mnt/gluster
Teraz możemy manipulować zawartością tylko w "/mnt/gluster", ale pojawi sie ona również w katalogu "/data".

Każdej maszynie dodajemy wpis w "/etc/fstab" (w zależności od tego na której jesteś to zmień nazwę) np.:
kubernetes-master1:/gvol0 /mnt/gluster glusterfs defaults,_netdev 0 0