locp.cassandra

ansible-role-cassandra

Gitter CI

Ansibleロールは、Apache Cassandraをインストールして設定するためのものです。

必要条件

OSファミリーの識別

Ansibleプレイブックは、ansible_os_family変数を設定するために十分な情報を収集する必要があります。

Pythonモジュール

Debianシステムでcassandra_configure_apache_repoTrueに設定する場合、 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: Concurrent Mark Sweep (CMS) Collectorを使用する際にHEAP_NEWSIZEを設定するのに適した値(MB)を返すカスタムファクトです。詳しくはTuning Java resources を参照してください。cassandra_memtotal_mbcassandra_processor_vcpusファクトが設定されている必要があります。

  • cassandra_cms_max_heapsize_mb: Concurrent Mark Sweep (CMS) Collectorを使用する際にMAX_HEAP_SIZEを設定するのに適した値(MB)を返すカスタムファクトです。詳しくはTuning Java resources を参照してください。 cassandra_memtotal_mbファクトが設定されている必要があります。

  • cassandra_configuration (デフォルト: なし): Cassandraの設定です。以下の例のプレイブックを参照してください。

  • cassandra_configuration_directory (デフォルト: RedHatでは/etc/cassandra/default.conf、 Debianでは/etc/cassandra): Cassandra設定のディレクトリです。

  • cassandra_configuration_file (デフォルト: RedHatでは/etc/cassandra/default.conf/cassandra.yaml、 Debianでは/etc/cassandra/cassandra.yaml): Cassandra設定ファイルの場所です。

  • cassandra_configuration_templ (デフォルト: cassandra.yaml.j2): Cassandra設定のためのテンプレートファイルの名前です。

  • cassandra_configure_apache_repo (デフォルト: False): Apache Cassandraリポジトリを設定するかどうか。

    詳細: cassandra_repo_apache_release を参照してください。

  • cassandra_dc: 定義されている場合、cassandra-rackdc.propertiesにDatacenterを設定します。

    このオプションは非推奨で、将来のリリースで削除されます。cassandra_regex_replacementsを使用してください。

  • cassandra_directories: 定義されている場合、パッケージがインストールされた後(したがって、cassandraユーザーが利用可能になった後)にディレクトリを作成しますが、Cassandraが設定される前に行われます。詳細は例のプレイブックを参照してください。

    cassandra_join_clusterオプションと一緒に使用された場合、ここで指定されたパスは削除(すべての内容と共に)され、ノードがクラスタに正しく参加できるように再作成されます。

  • cassandra_heap_new_size_mb: HEAP_NEWSIZEを設定するための適した値(MB)を返すカスタムファクトです。詳しくはTuning Java resources を参照してください。 cassandra_memtotal_mbcassandra_processor_vcpusファクトが設定されている必要があります。

  • cassandra_install_packages (デフォルト: True): このAnsibleロールがパッケージをインストールしようとするかどうかを示すブール値です。Falseに設定すると、Cassandraの設定だけを行うことができ、インストールは試みられません(例: ソースコードからインストールしている場合)。

  • cassandra_join_cluster (デフォルト: False): これは実験的な機能であり、注意が必要です!Trueに設定され、ノードのcassandra_node_countが1である場合、そのノードの設定前に以下のアクションが行われます:

    • Cassandraが停止します
    • Cassandraのデータディレクトリがすべてのデータでクリアされます。

    処理が完了したら、ノードが再構成され、クラスタに参加します(クラスタは1つのノードよりも大きい必要があります)。

  • cassandra_max_heapsize_mb: MAX_HEAP_SIZEを設定するための適した値(MB)を返すカスタムファクトです。詳しくはTuning Java resources を参照してください。 cassandra_memtotal_mbファクトが設定されている必要があります。

  • cassandra_memtotal_mb (デフォルト: 設定されている場合はansible_memtotal_mb): cassandra_cms_max_heapsize_mbcassandra_max_heapsize_mbcassandra_cms_heap_new_size_mb、およびcassandra_heap_new_size_mbを計算するために使用されます。

  • cassandra_path この変数はバージョン1.4.0で導入されましたが、文書化されていませんでした。指摘された通り、定義されている場合、変数が設定され、ディレクトリが削除されると再作成されません。この変数は現在、cassandra_directoriesに取って代わられました。

  • cassandra_node_count: クラスタ内のノード数を含むことを試みる読み取り専用変数です。cassandra_join_clusterTrueに設定された場合のみ設定されます。

  • 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 (デフォルト: []): cassandra_configuration_directoryに対して相対的なpath、ファイル内を検索するための正規表現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_templateから作成されたユニットファイルがcassandra_systemd_pathに配置されます。

  • 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も参照してください。

例のプレイブック

このプレイブックは、非常に基本的な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グループの最初のノードをシードとして設定します。
            - seeds: "{{ hostvars[groups['cassandra'][0]]['ansible_default_ipv4'].address }}"
      start_native_transport: true
    cassandra_configure_apache_repo: true
    # Cassandraデータ用の代替ディレクトリ構造を作成します。
    # この例では、root所有の/dataというディレクトリと
    # 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

テストで使用されるプレイブックについては、testingを参照してください。または、molecule/default/converge.ymlmolecule/combine_cluster/converge.yml を見てください。

ライセンス

GPLv3

著者情報

League of Crafty Programmers Ltd.によって開発されました。

問題を提起するか、貢献を行うには、https://github.com/locp/ansible-role-cassandra/issues に行ってください。

プロジェクトについて

Ansible role to install Apache Cassandra.

インストール
ansible-galaxy install locp.cassandra
ライセンス
lgpl-3.0
ダウンロード
22.9k