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_mb
icassandra_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.conf
na RedHat i/etc/cassandra
w Debian): Katalog konfiguracji Cassandry.cassandra_configuration_file
(domyślnie:/etc/cassandra/default.conf/cassandra.yaml
na RedHat i/etc/cassandra/cassandra.yaml
w 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_mb
icassandra_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_count
jest 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_mb
icassandra_heap_new_size_mb
.cassandra_path
Ta 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_cluster
jest 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_mb
icassandra_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_repo
jest 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_path
stworzony 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_enabled
jest 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_enabled
jest False.cassandra_task_delay
(domyślnie: 10): Zadania Ansible, które zależą od łączności sieciowej (tj.apt
,apt_key
,apt_repository
,package
iyum
) 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
,package
iyum
) 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