cassandra
ansible-role-cassandra
Роль Ansible для установки и настройки Apache Cassandra.
Требования
Определение семейства ОС
В плейбуке Ansible должно быть собрано достаточно данных, чтобы переменная ansible_os_family
была установлена.
Модули Python
На системах Debian, где параметр cassandra_configure_apache_repo
установлен в True, необходимо использовать модуль apt_repository
. Поэтому следующие требования должны быть выполнены на хосте, который выполняет этот модуль.
- python-apt (python 2)
- python3-apt (python 3)
Переменные роли
cassandra_15770_workaround
: (по умолчанию: False)
CASSANDRA-15770
затрагивает Debian 10 и Ubuntu 20.04, было исправлено в версиях 3.0.21, 3.11.7, 4.0. Так как мы тестируем на 3.11.6 в данный момент, это применяет исправление к/etc/init.d/cassandra
, если установлено в True.cassandra_2356_workaround
: (по умолчанию: False)
CASSANDRA-2356
затрагивает пакеты deb для Cassandra версий до 4.0.cassandra_cms_heap_new_size_mb
:
Пользовательский факт, который возвращает значение (MB), которое может быть подходящим для установки HEAP_NEWSIZE при использовании сборщика Concurrent Mark Sweep (CMS). Подробности см. в Настройка ресурсов Java. Требует установки фактовcassandra_memtotal_mb
иcassandra_processor_vcpus
.cassandra_cms_max_heapsize_mb
:
Пользовательский факт, который возвращает значение (MB), которое может быть подходящим для установки MAX_HEAP_SIZE при использовании сборщика Concurrent Mark Sweep (CMS). Подробности см. в Настройка ресурсов Java. Требует установки фактаcassandra_memtotal_mb
.cassandra_configuration
(по умолчанию: нет):
Конфигурация для Cassandra. См. пример плейбука ниже.cassandra_configuration_directory
(по умолчанию:/etc/cassandra/default.conf
на RedHat и/etc/cassandra
в Debian):
Директория конфигурации Cassandra.cassandra_configuration_file
(по умолчанию:/etc/cassandra/default.conf/cassandra.yaml
на RedHat и/etc/cassandra/cassandra.yaml
на Debian):
Местоположение файла конфигурации Cassandra.cassandra_configuration_templ
(по умолчанию:cassandra.yaml.j2
):
Имя файла шаблона для конфигурации Cassandra.cassandra_configure_apache_repo
(по умолчанию: False):
Установить, нужно ли настраивать репозиторий Apache Cassandra.СМОТРИ ТАКЖЕ:
cassandra_repo_apache_release
.cassandra_dc
:
Если определено, установит дата-центр вcassandra-rackdc.properties
.
Этот параметр устарел и будет удален в будущих версиях. Пожалуйста, используйтеcassandra_regex_replacements
вместо этого.cassandra_directories
:
Если определено, создаст директории после установки пакета (когда пользователь cassandra будет доступен) но перед настройкой Cassandra. См. пример плейбука для получения дополнительных деталей.Обратите внимание, что при использовании с параметром
cassandra_join_cluster
пути, указанные здесь, будут удалены (с содержимым) и воссозданы, чтобы узел мог правильно присоединиться к кластеру.cassandra_heap_new_size_mb
:
Пользовательский факт, который возвращает значение (MB), которое может быть подходящим для установки HEAP_NEWSIZE. См. Настройка ресурсов Java для более подробной информации. Требует установки фактовcassandra_memtotal_mb
иcassandra_processor_vcpus
.cassandra_install_packages
(по умолчанию: True):
Логическое значение, указывающее, должна ли эта роль Ansible пытаться установить пакеты или нет. Если установлено в False, это позволяет пользователю использовать эту роль для настройки Cassandra, но не пытается ее установить (например, если они установили из исходного кода).cassandra_join_cluster
(по умолчанию: False):
Это экспериментальная функция, используйте с крайней осторожностью! Если установлено в true иcassandra_node_count
равно 1 на узле, на этом узле будут выполнены следующие действия перед его настройкой:- Cassandra будет остановлена
- Директория/директории данных Cassandra будут очищены от всех данных.
После этого узел будет перенастроен и присоединится к кластеру (который должен быть больше, чем один узел).
cassandra_max_heapsize_mb
:
Пользовательский факт, который возвращает значение (MB), которое может быть подходящим для установки MAX_HEAP_SIZE. См. Настройка ресурсов Java для получения дополнительной информации. Требует установки фактаcassandra_memtotal_mb
.cassandra_memtotal_mb
(по умолчанию:ansible_memtotal_mb
, если задан):
Используется для расчетаcassandra_cms_max_heapsize_mb
,cassandra_max_heapsize_mb
,cassandra_cms_heap_new_size_mb
иcassandra_heap_new_size_mb
.cassandra_path
:
Эта переменная была введена в версии 1.4.0, но не была задокументирована. Как указано, если переменная определена, когда переменная установлена и директория удалена, она не будет воссоздана. Эта переменная теперь устарела в пользуcassandra_directories
.cassandra_node_count
:
Переменная только для чтения, которая пытается содержать количество узлов в кластере. Установится только в случае, еслиcassandra_join_cluster
установлено вTrue
.cassandra_package
(по умолчанию:cassandra
):
Имя пакета, который будет установлен для предоставления Cassandra.cassandra_processor_vcpus
(по умолчанию:ansible_processor_vcpus
, если установлен):
Используется для расчетаcassandra_cms_heap_new_size_mb
иcassandra_heap_new_size_mb
.cassandra_rack
:
Если определено, установит стойку вcassandra-rackdc.properties
.
Этот параметр устарел и будет удален в будущих версиях. Пожалуйста, используйтеcassandra_regex_replacements
вместо этого.cassandra_regex_replacements
(по умолчанию: []):
Список хешей, описывающихpath
, который относителен кcassandra_configuration_directory
,regexp
, который является регулярным выражением для поиска в файле, иline
является заменой внутри файла. См. пример плейбука для получения более подробной информации.cassandra_repo_apache_release
(по умолчанию: Нет):
Имя серии релиза (может быть одним из 40x, 311x или 30x). Это должно быть установлено, еслиcassandra_configure_apache_repo
установлено в True.cassandra_service_enabled
(по умолчанию: yes):
Должен ли быть включен сервис Cassandra (может быть yes или no).cassandra_service_restart
(по умолчанию: True):
Если установлено в true, изменения в файле конфигурации Cassandra или в директориях данных обеспечат обновление сервиса Cassandra после изменений. Установка этого флага в false отключит это поведение, позволив изменениям быть внесенными, но дав пользователю контроль над тем, когда сервис будет перезапущен.cassandra_systemd_enabled
(по умолчанию: False):
Должен ли сервис Cassandra быть включен через systemd; если установлено в True, то вcassandra_systemd_path
будет размещен файл юнита, созданный из шаблонаcassandra_systemd_template
.cassandra_systemd_path
(по умолчанию:/usr/lib/systemd/system/cassandra.service
):
Путь к файлу юнита для Cassandra. Эта переменная игнорируется, еслиcassandra_systemd_enabled
установлено в False.cassandra_systemd_template
(по умолчанию:"systemd/system/cassandra.service.j2"
):
Путь к шаблону, из которого будет создан файл юнита для Cassandra. Эта переменная игнорируется, еслиcassandra_systemd_enabled
установлено в False.cassandra_task_delay
(по умолчанию: 10):
Задания Ansible, зависящие от сетевого соединения (т.е.apt
,apt_key
,apt_repository
,package
иyum
), могут страдать от высокой задержки, поэтому эти задания настроены на повторение. Этот параметр определяет, как долго ждать между попытками. См. такжеcassandra_task_retries
.cassandra_task_retries
(по умолчанию: 5):
Задания Ansible, зависящие от сетевого соединения (т.е.apt
,apt_key
,apt_repository
,package
иyum
), могут страдать от высокой задержки, поэтому эти задания настроены на повторение. Этот параметр определяет, сколько попыток будет сделано. См. такжеcassandra_task_delay
.
Пример плейбука
Этот плейбук должен быть достаточен для настройки Cassandra с очень базовой конфигурацией:
---
- name: Пример плейбука для роли 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 }}"
# Для разумного значения num_tokens смотрите
# 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:
# Это устанавливает начальные узлы на первый узел в группе Ansible под названием
# cassandra.
- seeds: "{{ hostvars[groups['cassandra'][0]]['ansible_default_ipv4'].address }}"
start_native_transport: true
cassandra_configure_apache_repo: true
# Создать альтернативную структуру директорий для данных Cassandra.
# В этом примере будет директория, называемая /data, принадлежащая root
# с правами rwxr-xr-x. У нее будет ряд подпапок,
# все из которых будут по умолчанию принадлежать пользователю cassandra
# с правами 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
Чтобы увидеть плейбуки, которые используются для тестирования, см.
molecule/default/converge.yml и
molecule/combine_cluster/converge.yml.
Лицензия
Информация об авторе
Разработано
Лигой Креативных Программистов Ltd.
Чтобы сообщить о проблемах или внести вклад, пожалуйста, перейдите по ссылке
https://github.com/locp/ansible-role-cassandra/issues
Ansible role to install Apache Cassandra.
ansible-galaxy install locp/ansible-role-cassandra