Professional Documents
Culture Documents
Cassandra Instrukcja
Cassandra Instrukcja
2
5.2. Przeniesienie danych z zadania01 dot. Filmoteki............................................................ 37
5.2.1. Docker - baza ............................................................................................................................. 37
5.2.2. VirtualneMaszyny (UTM) - baza ................................................................................................ 38
5.2.3. Docker - dane............................................................................................................................. 39
5.2.4. Wirtualna maszyna (UTM) – dane ............................................................................................. 40
3
1. Zakres prac
W ramach zadania z laboratorium przedstawię dwa podejścia stworzenia klastra Cassanda z 3-ma
węzłami.
- podejście 2 – z użyciem wirtualnej maszyny (UTM nie VirtualBox) na systemie operacyjnym MacOS
z procesorem M1
Aby moc odwoływać się do poszczególnych serwerów (kontenerów w Docker) bez znajomości ich IP
tylko poprzez nazwę kontenera, oraz komunikacji kontenerów między sobą na tym samym hoście
należy stworzyć sieć.
4
(listing01)
5
2.2. Tworzenie kontenerów i komunikacja między węzłami za pomocą IP
Ponieważ z listingu01 wiedząc jakie adresy IP będą przydzielane do kolejnych kontenerów jesteśmy
w stanie określić przydzielane adresów IP, i będą to następujące:
Kontener 1: 172.18.0.2
Kontener 2: 172.18.0.3
Kontener 2: 172.18.0.4
W analogiczny sposób postępujemy, aby stworzyć kolejne serwisy. Jedyna różnica to taka, że
omijamy punkt nr: 4
6
2.2.3. Kontener casandra-server03
Za pomocą
7
2.3. Tworzenie kontenerów i komunikacja między węzłami za pomocą nazwy
kontenerów – zalecane
W analogiczny sposób postępujemy, jeśli zamiast numerów IP podamy nazwy kontenerów (właśnie
w tym celu tworzyliśmy sieć). Jest to sposób zalecany.
8
2.3.3. Kontener: cassandra-server03
9
2.4. Komunikacja pomiędzy kontenerami/serwerami
Ponieważ kontenery nie zawierają polecenia ping należy go najpierw zainstalować – poniższe kroki
wykonujemy na zadym z kontenerów osobno.
10
Adresy poszczególnych serwerów to:
- cassandra-server: 172.18.0.2
- cassandra-server02: 172.18.0.3
- cassandra-server03: 172.18.0.4
2.4.3. Pingowanie
11
12
Jak widzimy z listingów wszystkie serwery widzą się wzajemnie
3. Praca z klastrem
- 3 kontenery (serwery)
- 3 serwery cassandra składają się na klaster, której topologię przedstawia rysunek poniżej:
13
3.1. Pobieranie informacji o klastrze
Z poziomu każdego z kontenera wywołujemy polecenie nodetool aby sprawdzić informacje o klastrze
14
3.2. Zatrzymanie jednego węzła
15
3.3. Ponowne uruchomienie zatrzymanego węzła
Przygotowana instrukcja powstała ze wylęgu na ogrom prac i czasu jaki musiałem poświęcić by
osiągnąć zamierzone efekty. Mam nadziej ze w przyszłości przyda się inny studentom.
https://cdimage.ubuntu.com/jammy/daily-live/current/
16
4.3. Tworzenie Ubuntu wirtualnej maszyny
Jest istotne, aby postępować zgodnie z wytycznymi. Osobiście potrzebowałem wielu prób i szukania
rozwiązań w Internecie, aby ostatecznie doprowadzić proces do sukcesu.
17
Wybieramy obraz Ubuntu, który wcześniej pobraliśmy i klikamy Continue.
18
Przydzielamy odpowiednio ilość pamięci RAM oraz ilość rdzeni procesora – dla naszej potrzeby
podaje wartości minimalne.
19
Przydzielam folder dzielony – dzięki czemu będzie możliwy dostęp do całej zawartości z poziomu
Ubuntu
20
W ustawieniach dodajemy siec VLAN – aby nasza maszyna miała dostęp do Internetu.
W ustawieniach dodajmy nową sieć „Shared Network” – aby maszyny wirtualne widziały się
nawzajem
21
Uruchamiamy wirtualną maszynę i jako nazwę użytkownika podajemy „ubuntu”
22
Po zainstalowaniu Ubuntu pojawi się przycisk, aby zrestartować system. Po kliknięciu należy
odmontować CD/DVD z naszym obrazem instalacyjnym. Następnie uruchomić Ubuntu ponownie.
Przed kolejnymi etapami należy sprawdzić czy wszystkie 3 maszyny wirtualne widzą się nawzajem. Do
tego celu potrzebujemy IP każdej z nich. Za pomocą polecenie: ip addr pobieramy adresy IP maszyn
Maszyna 1: 192.168.64.9
Maszyna 2: 192.168.64.10
Maszyna 3: 192.168.64.12
Za pomocą polecenia ping sprawdzamy czy maszyny wirtualne widzą się nawzajem
23
4.2. Instalacja Java
Przed instalacja należy sprawdzić czy Java nie jest już zainstalowana: java -version
24
Po instalacja Java powinna być już dostępna:
25
Dodajemy na początku:
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
Oraz do PATH:
:$JAVA_HOME/bin
source /etc/environment
echo $JAVA_HOME
echo $PATH
curl --version
26
4.4. Instalacja Cassandra
27
Dodaj klucze repozytorium Apache Cassandra do listy zaufanych kluczy na serwerze:
28
Monitoruj postęp uruchamiania za pomocą:
tail -f /var/log/cassandra/system.log
nodetool status
29
Sprawdzanie serwisku Cassandra:
ustawiamy zmienne:
seeds: "192.168.64.9,192.168.64.10,192.168.64.12"
listen_address: 192.168.64.12
rpc_address: 192.168.64.12
endpoint_snitch: GossipingPropertyFileSnitch
30
Restartujemy Cassandra i obserwujemy logi Cassandr’y
Wystąpił błąd, aby go naprawić należy w pliku /etc/cassandra-env.sh dodać na koniec pliku poniższą
linijkę
JVM_OPTS="$JVM_OPTS -Dcassandra.ignore_dc=true"
I uruchamiamy ponownie
31
JVM_OPTS="$JVM_OPTS - Dcassandra.ignore_rack=true"
nodetool repair
nodetool cleanup
nodetool status
32
Wszystko dział zgodnie z założeniami.
Zgodnie z założeniami węzeł o IP: 192.168.64.10 nie jest widoczny przez pozostałe węzły.
33
service cassandra start
W takie sytuacji do zmiennych globalnych należy dodać zmienna: CQLSH_HOST i przypisujemy do niej
IP danego węzła
34
W tym przypadku resetowanie zmiennych globalnych i restart cassndra nie pomoże – trzeba
zrestartować cały serwer:
Cqlsh 192.168.64.12
5. Zadanie
Po tak długim wprowadzeniu i objaśnieniu sposobu tworzenia klastra za pomocą Docker przystępuję
do realizacji meritum zadnia
5.1.1. Docker
35
36
5.1.2. VirtualneMaszyny (UTM)
Na:
37
Zgodnie z przypuszczeniami widzimy nastąpiła replikacja filmoteka do pozostałych węzłów w
utworzonym klastrze
38
5.2.3. Docker - dane
Ponownie zgodnie z założeniami dane z węzła 172.18.0.3 zostały zreplikowane do pozostałych węzłów.
39
5.2.4. Wirtualna maszyna (UTM) – dane
40
5.3.2. Wirtualne maszyny (UTM) – nowa baza kina
41
5.3.3. Docker – dodanie tabeli i wypełnienie jej danymi
42
5.4. Dodanie nową przestrzeń kluczy kontrahenci
43
44
6. Podsumowanie
W zadaniu przedstawiłem dwa podejścia (Docer i wirtualna maszyna - UTM) na stworzenie środowiska
testowego dla bazy danych Cassandra z wykorzystaniem 3 węzłów. Przedstawiłem wszystkie problemy
oraz rozwiązania napotkane w trakcie instalacji środowiska/serwerów jak również problemy i
rozwiązane związane z samą bazą Cassandra.
W dalszej części zadania przystapiłem do dodawania nowych baz oraz sprawdzenie czy są one
poprawnie replikowane pomiędzy węzłami w klastrze.
Muszę przyznać, że część poświęcona stworzeniem klastra, konfiguracji i samych węzłów była
najbardziej kłopotliwa i bardzo czasochłonna.
45