locp.cassandra

ansible-role-cassandra

Gitter CI

一个用于安装和配置 Apache Cassandra 的 Ansible 角色。

需求

操作系统家族识别

Ansible playbook 必须收集足够的信息,以便设置 ansible_os_family 变量。

Python 模块

在将 cassandra_configure_apache_repo 设置为 True 的 Debian 系统上,请注意使用了 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 进行测试,如果设置为 True,将把修复应用于 /etc/init.d/cassandra

  • cassandra_2356_workaround: (默认: False) CASSANDRA-2356 影响了 Cassandra 4.0 之前的 deb 软件包。

  • cassandra_cms_heap_new_size_mb: 一个自定义事实,返回的值(MB)可能适合在使用并发标记清扫(CMS)收集器时设置 HEAP_NEWSIZE。有关更多详细信息,请参见 调整 Java 资源。需要设置 cassandra_memtotal_mbcassandra_processor_vcpus 事实。

  • cassandra_cms_max_heapsize_mb: 一个自定义事实,返回的值(MB)可能适合在使用并发标记清扫(CMS)收集器时设置 MAX_HEAP_SIZE。有关更多详细信息,请参见 调整 Java 资源。需要设置 cassandra_memtotal_mb 事实。

  • cassandra_configuration (默认: ): Cassandra 的配置。请参见下面的示例 playbook。

  • 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 之前。有关更多详细信息,请参见示例 playbook。

    请注意,当与 cassandra_join_cluster 选项一起使用时,这里指定的路径将被删除(包括所有内容)并重新创建,以便节点能正确加入集群。

  • cassandra_heap_new_size_mb: 一个自定义事实,返回的值(MB)可能适合设置 HEAP_NEWSIZE。请参见 调整 Java 资源 获取更多详细信息。需要设置 cassandra_memtotal_mbcassandra_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_mbcassandra_max_heapsize_mbcassandra_cms_heap_new_size_mbcassandra_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_mbcassandra_heap_new_size_mb

  • cassandra_rack: 如果定义,将在 cassandra-rackdc.properties 中设置机架。

    此选项已被弃用,并将在将来的版本中移除。请改用 cassandra_regex_replacements

  • cassandra_regex_replacements (默认: []): 一个哈希列表,描述 path,它相对 cassandra_configuration_directoryregexp 是在文件中查找的正则表达式,line 是文件中的替换内容。有关更多详细信息,请参见示例 playbook。

  • cassandra_repo_apache_release (默认: ): 发行系列名称(可以是 40x、311x 或 30x 之一)。如果将 cassandra_configure_apache_repo 设置为 True,必须设置此项。

  • cassandra_service_enabled (默认: ): Cassandra 服务是否应启用(可以是是或否)。

  • cassandra_service_restart (默认: True): 如果设置为 true,对 Cassandra 配置文件或数据目录的更改将确保在更改后刷新 Cassandra 服务。将此标志设置为 false 会禁用此行为,因此允许进行更改,但允许用户控制服务何时重启。

  • cassandra_systemd_enabled (默认: False): 如果设置为 True,将通过 systemd 启用 Cassandra 服务,那么单位文件将放置在 cassandra_systemd_path 中,来自模板 cassandra_systemd_template

  • cassandra_systemd_path (默认: /usr/lib/systemd/system/cassandra.service): Cassandra 的单位文件路径。如果 cassandra_systemd_enabledFalse,则忽略此变量。

  • cassandra_systemd_template (默认: systemd/system/cassandra.service.j2): 创建 Cassandra 单位文件的模板路径。如果 cassandra_systemd_enabledFalse,则忽略此变量。

  • cassandra_task_delay (默认: 10): 依赖网络连接的 Ansible 任务(即 aptapt_keyapt_repositorypackageyum)可能会受到高延迟的影响,因此这些任务被配置为重试。此参数是尝试之间的等待时间。另见 cassandra_task_retries

  • cassandra_task_retries (默认: 5): 依赖网络连接的 Ansible 任务(即 aptapt_keyapt_repositorypackageyum)可能会受到高延迟的影响,因此这些任务被配置为重试。此参数是应尝试的次数。另见 cassandra_task_delay

示例 Playbook

此 playbook 应足够配置 Cassandra 的非常简单 配置

---
- name: locp.cassandra 角色示例 Playbook

  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: 4
      partitioner: org.apache.cassandra.dht.Murmur3Partitioner
      saved_caches_directory: /data/cassandra/saved_caches
      seed_provider:
        - class_name: "org.apache.cassandra.locator.SimpleSeedProvider"
          parameters:
            - seeds: "{{ hostvars[groups['cassandra'][0]]['ansible_default_ipv4'].address }}"
      start_native_transport: true
    cassandra_configure_apache_repo: true
    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

要查看用于 测试 的 playbooks,请参见 molecule/default/converge.ymlmolecule/combine_cluster/converge.yml

许可证

GPLv3

作者信息

League of Crafty Programmers Ltd. 开发。

如有问题或想要贡献,请访问 https://github.com/locp/ansible-role-cassandra/issues。

安装
ansible-galaxy install locp.cassandra
许可证
lgpl-3.0
下载
22.9k