locp.cassandra
rola-ansible-cassandra
Rola Ansible do instalacji i konfiguracji Apache Cassandra.
Wymagania
Identyfikacja rodziny systemu operacyjnego
Skrypt Ansible musi zebrać wystarczająco dużo informacji, aby zmienna ansible_os_family była ustawiona.
Moduły Python
Na systemach Debian, które mają ustawioną zmienną cassandra_configure_apache_repo na True, proszę pamiętać, że używany jest moduł
apt_repository. W związku z tym poniższe wymagania są potrzebne na hoście, który wykonuje ten moduł.
- python-apt (python 2)
- python3-apt (python 3)
Zmienne roli
cassandra_15770_workaround: (domyślnie: False) CASSANDRA-15770 dotknęło Debiana 10 i Ubuntu 20.04, a następnie naprawiono to w wersjach 3.0.21, 3.11.7, 4.0. Obecnie, testując wersję 3.11.6, ta poprawka jest stosowana do/etc/init.d/cassandra, jeśli jest ustawiona na True.cassandra_2356_workaround: (domyślnie: False) CASSANDRA-2356 dotyczyło pakietów deb dla wersji Cassandra przed 4.0.cassandra_cms_heap_new_size_mb: Własny fakt, który zwraca wartość (MB), która może być odpowiednia do ustawienia HEAP_NEWSIZE przy użyciu kolektora Concurrent Mark Sweep (CMS). Zobacz Dostosowywanie zasobów Java po więcej szczegółów. Wymaga, aby były ustawione faktycassandra_memtotal_mbicassandra_processor_vcpus.cassandra_cms_max_heapsize_mb: Własny fakt, który zwraca wartość (MB), która może być odpowiednia do ustawienia MAX_HEAP_SIZE przy użyciu kolektora Concurrent Mark Sweep (CMS). Zobacz Dostosowywanie zasobów Java po więcej szczegółów. Wymaga, aby był ustawiony faktcassandra_memtotal_mb.cassandra_configuration(domyślnie: żadne): Konfiguracja dla Cassandry. Zobacz przykład poniżej.cassandra_configuration_directory(domyślnie:/etc/cassandra/default.confna RedHat i/etc/cassandraw Debian): Katalog konfiguracji Cassandry.cassandra_configuration_file(domyślnie:/etc/cassandra/default.conf/cassandra.yamlna RedHat i/etc/cassandra/cassandra.yamlw Debian): Lokalizacja pliku konfiguracyjnego Cassandry.cassandra_configuration_templ(domyślnie:cassandra.yaml.j2): Nazwa pliku szablonu dla konfiguracji Cassandry.cassandra_configure_apache_repo(domyślnie: False): Czy skonfigurować repozytorium Apache Cassandra.PATRZ RÓWNIEŻ:
cassandra_repo_apache_release.cassandra_dc: Jeśli zdefiniowane, ustawi Datacenter wcassandra-rackdc.properties.Ta opcja jest przestarzała i zostanie usunięta w przyszłej wersji. Proszę używać zamiast tego
cassandra_regex_replacements.cassandra_directories: Jeśli zdefiniowane, utworzy katalogi po zainstalowaniu pakietu (w związku z tym, gdy użytkownik cassandra jest dostępny) przed skonfigurowaniem Cassandry. Zobacz przykład poniżej dla więcej szczegółów.Proszę pamiętać, że przy użyciu opcji
cassandra_join_cluster, ścieżki określone tutaj zostaną usunięte (ze wszystkimi swoimi zawartościami) i ponownie utworzone, aby węzeł mógł prawidłowo dołączyć do klastra.cassandra_heap_new_size_mb: Własny fakt, który zwraca wartość (MB), która może być odpowiednia do ustawienia HEAP_NEWSIZE. Zobacz Dostosowywanie zasobów Java po więcej szczegółów. Wymaga, aby były ustawione faktycassandra_memtotal_mbicassandra_processor_vcpus.cassandra_install_packages(domyślnie: True): Wartość logiczna wskazująca, czy ta rola Ansible powinna próbować zainstalować pakiety, czy nie. Jeśli ustawiona na False, pozwala użytkownikowi użyć tej roli do skonfigurowania Cassandry, ale nie próbuje jej zainstalować (np. jeśli została zainstalowana z kodu źródłowego).cassandra_join_cluster(domyślnie: False): To eksperymentalna funkcja, używaj z najwyższą ostrożnością! Jeśli ustawiona na true icassandra_node_countjest wykryty jako 1 na węźle, następujące akcje zostaną podjęte na tym węźle przed jego skonfigurowaniem:- Cassandra zostanie zatrzymana
- Katalogi danych Cassandry zostaną oczyszczone z wszystkich danych.
Po wykonaniu tych operacji węzeł zostanie ponownie skonfigurowany i dołączy do klastra (który powinien być większy niż jeden węzeł).
cassandra_max_heapsize_mb: Własny fakt, który zwraca wartość (MB), która może być odpowiednia do ustawienia MAX_HEAP_SIZE. Zobacz Dostosowywanie zasobów Java po więcej szczegółów. Wymaga, aby był ustawiony faktcassandra_memtotal_mb.cassandra_memtotal_mb(domyślnie:ansible_memtotal_mb, jeśli ustawione): Jest używane do obliczeniacassandra_cms_max_heapsize_mb,cassandra_max_heapsize_mb,cassandra_cms_heap_new_size_mbicassandra_heap_new_size_mb.cassandra_pathTa zmienna została wprowadzona w wersji 1.4.0, ale nie została udokumentowana. Jak zauważono tutaj, jeśli zmienna jest zdefiniowana, a katalog zostanie usunięty, nie jest ponownie tworzona. Zmienna ta została teraz uznana za przestarzałą na rzeczcassandra_directories.cassandra_node_count: Zmienna tylko do odczytu, która próbuje przechowywać liczbę węzłów w klastrze. Zostanie ustawiona tylko, jeślicassandra_join_clusterjest ustawione naTrue.cassandra_package(domyślnie:cassandra): Nazwa pakietu do zainstalowania, aby zapewnić Cassandrę.cassandra_processor_vcpus(domyślnie:ansible_processor_vcpus, jeśli ustawione): Jest używane do obliczeniacassandra_cms_heap_new_size_mbicassandra_heap_new_size_mb.cassandra_rack: Jeśli zdefiniowane, ustawi rack wcassandra-rackdc.properties.Ta opcja jest przestarzała i zostanie usunięta w przyszłej wersji. Proszę używać zamiast tego
cassandra_regex_replacements.cassandra_regex_replacements(domyślnie: []): Lista hashy opisującychpath, który jest względny docassandra_configuration_directory,regexp, który jest wyrażeniem regularnym do znalezienia w pliku iline, to zastąpienie w pliku. Zobacz przykład poniżej dla więcej szczegółów.cassandra_repo_apache_release(domyślnie: None): Nazwa serii wydań (może być jedną z 40x, 311x lub 30x). Musi być ustawiona, jeślicassandra_configure_apache_repojest ustawione na True.cassandra_service_enabled(domyślnie: tak): Czy usługa cassandra powinna być włączona (może być 'tak' lub 'nie').cassandra_service_restart(domyślnie: True): Jeśli ustawione na true, zmiany w pliku konfiguracyjnym Cassandry lub katalogach danych zapewnią odświeżenie usługi Cassandry po zmianach. Ustawienie tego flagi na false wyłączy to działanie, pozwalając użytkownikowi kontrolować, kiedy usługa jest restartowana.cassandra_systemd_enabled(domyślnie: False): Czy usługa Cassandra powinna być włączona przez systemd jeśli ustawione na True, wtedy plik jednostki zostanie umieszczony wcassandra_systemd_pathstworzony z szablonucassandra_systemd_template.cassandra_systemd_path(domyślnie:/usr/lib/systemd/system/cassandra.service): Ścieżka do pliku jednostki dla Cassandry. Ta zmienna jest ignorowana, jeślicassandra_systemd_enabledjest False.cassandra_systemd_template(domyślnie:"systemd/system/cassandra.service.j2"): Ścieżka do szablonu, z którego można stworzyć plik jednostki dla Cassandry. Ta zmienna jest ignorowana, jeślicassandra_systemd_enabledjest False.cassandra_task_delay(domyślnie: 10): Zadania Ansible, które zależą od łączności sieciowej (tj.apt,apt_key,apt_repository,packageiyum) mogą być dotknięte wysoką latencją, dlatego te zadania są skonfigurowane do ponownego próbowania. Ten parametr definiuje, ile czekać między próbami. Zobacz takżecassandra_task_retries.cassandra_task_retries(domyślnie: 5): Zadania Ansible, które zależą od łączności sieciowej (tj.apt,apt_key,apt_repository,packageiyum) mogą być dotknięte wysoką latencją, dlatego te zadania są skonfigurowane do ponownego próbowania. Ten parametr definiuje, ile prób powinno być podjętych. Zobacz takżecassandra_task_delay.
Przykładowy Playbook
Ten playbook powinien być wystarczający do skonfigurowania Cassandry z bardzo podstawową konfiguracją:
---
- name: Przykładowy Playbook dla roli locp.cassandra
hosts: cassandra
remote_user: root
vars:
cassandra_configuration:
authenticator: PasswordAuthenticator
cluster_name: MyCassandraCluster
commitlog_directory: /data/cassandra/commitlog
commitlog_sync: periodic
commitlog_sync_period_in_ms: 10000
data_file_directories:
- /data/cassandra/data
endpoint_snitch: GossipingPropertyFileSnitch
hints_directory: "/data/cassandra/hints"
listen_address: "{{ ansible_default_ipv4.address }}"
# Aby uzyskać sensowną wartość do ustawienia num_tokens, proszę zobaczyć
# https://cassandra.apache.org/doc/latest/getting_started/production.html#tokens
num_tokens: 4
partitioner: org.apache.cassandra.dht.Murmur3Partitioner
saved_caches_directory: /data/cassandra/saved_caches
seed_provider:
- class_name: "org.apache.cassandra.locator.SimpleSeedProvider"
parameters:
# To ustawia nasienie na pierwszy węzeł w grupie Ansible
# cassandra.
- seeds: "{{ hostvars[groups['cassandra'][0]]['ansible_default_ipv4'].address }}"
start_native_transport: true
cassandra_configure_apache_repo: true
# Tworzy alternatywną strukturę katalogów dla danych Cassandry.
# W tym przykładzie powstanie katalog o nazwie /data, który będzie należał do użytkownika root
# z uprawnieniami rwxr-xr-x. Będzie miał szereg podkatalogów,
# których właścicielem będzie użytkownik cassandra
# z uprawnieniami rwx------.
cassandra_directories:
root:
group: root
mode: "0755"
owner: root
paths:
- /data
data:
paths:
- /data/cassandra
- /data/cassandra/commitlog
- /data/cassandra/data
- /data/cassandra/hints
- /data/cassandra/saved_caches
cassandra_regex_replacements:
- path: cassandra-env.sh
line: 'MAX_HEAP_SIZE="{{ cassandra_max_heapsize_mb }}M"'
regexp: '^#MAX_HEAP_SIZE="4G"'
- path: cassandra-env.sh
line: 'HEAP_NEWSIZE="{{ cassandra_heap_new_size_mb }}M"'
regexp: '^#HEAP_NEWSIZE="800M"'
- path: cassandra-rackdc.properties
line: 'dc=DC1'
regexp: '^dc='
- path: cassandra-rackdc.properties
line: 'rack=RACK1'
regexp: '^rack='
cassandra_repo_apache_release: 40x
roles:
- role: locp.cassandra
Aby zobaczyć playbooki, które są używane do testowania, zobacz molecule/default/converge.yml i molecule/combine_cluster/converge.yml.
Licencja
Informacje o autorze
Opracowane przez League of Crafty Programmers Ltd.
Aby zgłaszać problemy lub wnieść wkład, proszę odwiedzić https://github.com/locp/ansible-role-cassandra/issues
Ansible role to install Apache Cassandra.
ansible-galaxy install locp.cassandra