Zadania konserwacji Apache Cassandra

W tej sekcji znajdziesz opis okresowych zadań konserwacyjnych w Cassandrze.

Utrzymanie antyentropii

Węzły pierścieniowe Apache Cassandra wymagają okresowej konserwacji, aby zapewnić spójność wszystkich węzłów. Aby przeprowadzić tę konserwację, użyj tego polecenia:

apigee-service apigee-cassandra apigee_repair -pr

Apigee zaleca wykonanie tych poleceń podczas uruchamiania tego polecenia:

  • Uruchamiaj w każdym węźle Cassandra (we wszystkich regionach lub centrach danych).
  • Uruchamiaj je na 1 węźle naraz, aby zapewnić spójność wszystkich węzłów w pierścieniu. Uruchamianie zadań naprawy w wielu węzłach jednocześnie może negatywnie wpłynąć na stan instancji Cassandra.

    Aby sprawdzić, czy zadanie naprawy w węźle zostało ukończone, wyszukaj w pliku system.log węzła wpis z identyfikatorem UUID ostatniej sesji naprawy i wyrażeniem „session complete successfully”. Oto przykładowy wpis logu:

    INFO [AntiEntropySessions:1] 2015-03-01 10:02:56,245 RepairSession.java (line 282) [repair #2e7009b0-c03d-11e4-9012-99a64119c9d8] session completed successfully"
    Ref: https://support.datastax.com/hc/en-us/articles/204226329-How-to-check-if-a-scheduled-nodetool-repair-ran-successfully
  • Uruchamiaj w okresach stosunkowo małego obciążenia (narzędzie nakłada duże obciążenie na system).
  • Uruchamiaj usługę co najmniej co 7 dni, aby wyeliminować problemy związane z „zapomnianymi usunięciami” Cassandry.
  • Uruchom w różnych węzłach w różne dni lub zaplanuj działanie tak, aby w każdym węźle było uruchomione kilka godzin.
  • Użyj opcji -pr (zakres partycji), aby określić główny zakres partycjonowania tylko w węźle.

Jeśli masz włączone uwierzytelnianie JMX dla Cassandra, podczas wywoływania nodetool musisz podać nazwę użytkownika i hasło. Na przykład:

apigee-service apigee-cassandra apigee_repair -u username -pw password -pr

Możesz też uruchomić to polecenie, aby sprawdzić obsługiwane opcje apigee_repair:

apigee-service apigee-cassandra apigee_repair -h

Uwaga: apigee_repair otacza naprawę narzędzia węzła Cassandry, która przeprowadza dodatkowe kontrole przed naprawą Cassandry.

Więcej informacji znajdziesz w tych materiałach:

Konserwacja pliku logu

Logi Cassandra są przechowywane w katalogu /opt/apigee/var/log/cassandra w każdym węźle. Domyślnie można utworzyć maksymalnie 50 plików logów o maksymalnym rozmiarze 20 MB. Po osiągnięciu tego limitu starsze logi są usuwane przy tworzeniu nowszych logów.

Jeśli okaże się, że pliki dziennika Cassandra zajmują zbyt dużo miejsca, możesz zmienić ilość miejsca przydzielonego na pliki logu, edytując ustawienia log4j.

  1. Edytuj /opt/apigee/customer/application/cassandra.properties, aby ustawić poniższe właściwości. Jeśli ten plik nie istnieje, utwórz go:
    conf_logback_maxfilesize=20MB
    # max file size
    conf_logback_maxbackupindex=50 # max open files
  2. Ponownie uruchom urządzenie Cassandra za pomocą tego polecenia:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart

Konserwacja miejsca na dysku

Regularnie monitoruj wykorzystanie dysku Cassandra, aby mieć pewność, że co najmniej 50% każdego dysku jest wolne. Jeśli wykorzystanie dysku wzrośnie powyżej 50 procent, zalecamy dodanie większej ilości miejsca na dysku, aby zmniejszyć odsetek używanej wartości.

Cassandra automatycznie wykonuje te operacje, aby zmniejszyć wykorzystanie własnego dysku:

  • Usuwanie tokena uwierzytelniania po wygaśnięciu tokenów. Jednak w zależności od konfiguracji zwolnienie miejsca na dysku wykorzystywanego przez tokeny może potrwać kilka tygodni. Jeśli automatyczne usuwanie nie wystarcza do utrzymania wystarczającej ilości miejsca na dysku, skontaktuj się z zespołem pomocy, aby dowiedzieć się, jak ręcznie usuwać tokeny w celu odzyskania miejsca.
  • Kompresowanie danych. Zalecamy zmianę strategii kompresowania przestrzeni kluczy na LeveledCompactionStrategy, która oferuje lepsze strategie wykorzystania dysku niż domyślna SizeTieredCompactionStrategy. Zobacz Strategia kompaktowania z poziomem.

Uwaga: gdy Cassandra kompresuje dane, może wymagać znacznej ilości cykli procesora oraz ilości pamięci. Po zakończeniu kompresowania wykorzystanie zasobów powinno wrócić do normalnego poziomu. Aby sprawdzić, czy kompresowanie jest uruchomione, możesz uruchomić polecenie 'Nodetool compactionstats' w każdym węźle. Dane wyjściowe funkcji compactionstats informują o tym, czy istnieją oczekujące kompresowania, które zostaną wykonane, oraz o szacowanym czasie ich zakończenia.