Гид по технологиям

Установка Apache Cassandra на AlmaLinux и Rocky Linux 8

• 6 min read • Базы данных • Обновлено 21 Nov 2025
Apache Cassandra на AlmaLinux / Rocky Linux 8 — установка
Apache Cassandra на AlmaLinux / Rocky Linux 8 — установка

Описание изображения: Логотип Apache Cassandra на фоне схемы распределённого кластера

Что такое Apache Cassandra

Apache Cassandra — это распределённая NoSQL СУБД с акцентом на масштабируемость и отказоустойчивость. Ключевая идея: горизонтальное масштабирование через добавление узлов и репликацию данных между ними. Коротко: низкая задержка при больших объёмах записи, линейное масштабирование, репликация по нескольким дата‑центрам.

Краткое определение: Cassandra — распределённая колонко‑ориентированная база данных для высоконагруженных приложений.

Требования

  • Сервер с AlmaLinux или Rocky Linux 8.
  • Не менее 2 ГБ оперативной памяти (рекомендуется 4 ГБ+ для продакшена).
  • Пользователь с sudo‑правами.
  • Система обновлена:
$ sudo dnf update

Важно: в продакшене планируйте больше памяти и дискового пространства, отдельные быстродействующие диски для данных и журналов.

Шаг 1 — Установка Java

Cassandra 4.x официально поддерживает Java 8; есть экспериментальная поддержка Java 11. Для совместимости используем OpenJDK 8.

$ sudo dnf install java-1.8.0-openjdk java-1.8.0-openjdk-devel

Проверьте версию Java:

$ java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)

Если Java не установлена или система использует другую версию, настройте альтернативы или установите требуемую JDK.

Шаг 2 — Добавление репозитория и установка Cassandra

Создайте файл репозитория /etc/yum.repos.d/cassandra.repo и вставьте содержимое ниже. Команда создаст файл с требуемыми правами.

$ sudo tee  /etc/yum.repos.d/cassandra.repo <

После создания репозитория установите Cassandra:

$ sudo dnf install cassandra -y

Проверьте, что пакет установлен без ошибок. Если dnf жалуется на зависимости, проверьте соединение и GPG‑ключи.

Шаг 3 — Установка cqlsh

cqlsh — интерактивная оболочка для CQL. Она совместима с Python 2.7 и Python 3.6+. В этой инструкции используем Python 3.8.

$ sudo dnf install python38

Сделайте Python 3.8 версией по умолчанию (при необходимости):

$ sudo update-alternatives --config python
There are 3 programs which provide 'python'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/libexec/no-python
   2           /usr/bin/python3
   3           /usr/bin/python3.8

Enter to keep the current selection[+], or type selection number: 3

Проверьте:

$ python --version
Python 3.8.8

Установите cqlsh через pip:

$ pip3 install --user cqlsh

Проверьте версию cqlsh:

$ cqlsh --version
cqlsh 6.0.0

Примечание: если cqlsh не запускается из PATH, добавьте ~/.local/bin в PATH или установите пакет системно.

Шаг 4 — Systemd‑юнит для Cassandra

Создайте файл сервиса /etc/systemd/system/cassandra.service и вставьте следующий блок:

[Unit]
Description=Apache Cassandra
After=network.target

[Service]
PIDFile=/var/run/cassandra/cassandra.pid
User=cassandra
Group=cassandra
ExecStart=/usr/sbin/cassandra -f -p /var/run/cassandra/cassandra.pid
Restart=always

[Install]
WantedBy=multi-user.target

Сохраните, затем перезагрузите демон systemd и включите сервис:

$ sudo systemctl daemon-reload
$ sudo systemctl enable cassandra --now

Проверка статуса сервиса:

$ sudo systemctl status cassandra
? cassandra.service - Apache Cassandra
   Loaded: loaded (/etc/systemd/system/cassandra.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-12-30 11:07:43 UTC; 12s ago
 Main PID: 4679 (java)
    Tasks: 48 (limit: 23696)
   Memory: 1.3G
   CGroup: /system.slice/cassandra.service
           ??4679 /usr/bin/java -ea -da:net.openhft... -XX:+UseThreadPriorities -XX:+HeapDumpOnOutOfMemoryError -Xss256>

И инструмент nodetool для проверки состояния узла:

$ nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address    Load       Tokens  Owns (effective)  Host ID                               Rack
UN  127.0.0.1  69.09 KiB  16      100.0%            2fe7ccae-2af9-4841-9bff-bffa29f10dc5  rack1

Шаг 5 — Основная конфигурация Cassandra

Конфигурационные файлы располагаются в /etc/cassandra (или /etc/cassandra/conf). Логи — /var/log/cassandra, данные — /var/lib/cassandra.

JVM‑настройки находятся в /etc/cassandra/conf/cassandra-env.sh. Для продакшена корректируйте параметры кучи (heap) и дополнительные опции JVM через переменную JVM_OPTS.

5.1 Включение аутентификации пользователей

Сделайте резервную копию файла конфигурации перед изменениями:

$ sudo cp /etc/cassandra/conf/cassandra.yaml /etc/cassandra/conf/cassandra.yaml.backup

Откройте файл для редактирования:

$ sudo nano /etc/cassandra/conf/cassandra.yaml

Найдите и измените блок, связанный с аутентификацией и авторизацией:

authenticator: AllowAllAuthenticator
authorizer: AllowAllAuthorizer
roles_validity_in_ms: 2000
permissions_validity_in_ms: 2000

Замените на:

. . .

authenticator: org.apache.cassandra.auth.PasswordAuthenticator
authorizer: org.apache.cassandra.auth.CassandraAuthorizer
roles_validity_in_ms: 0
permissions_validity_in_ms: 0

. . .

Сохраните файл и перезапустите Cassandra:

$ sudo systemctl restart cassandra

5.1.1 Добавление администратора (superuser)

По умолчанию в Cassandra есть пользователь cassandra/cassandra. Создайте нового суперпользователя и деактивируйте права по умолчанию:

$ cqlsh -u cassandra -p cassandra

В cqlsh создайте роль (замените [username] и [yourpassword]):

cassandra@cqlsh> CREATE ROLE [username] WITH PASSWORD = '[yourpassword]' AND SUPERUSER = true AND LOGIN = true;

Выйдите и войдите под новым пользователем:

cassandra@cqlsh> exit
$ cqlsh -u username -p yourpassword

Ограничьте права у дефолтного пользователя cassandra и отберите все разрешения:

username@cqlsh> ALTER ROLE cassandra WITH PASSWORD = 'cassandra' AND SUPERUSER = false AND LOGIN = false;
username@cqlsh> REVOKE ALL PERMISSIONS ON ALL KEYSPACES FROM cassandra;

Дайте полные права новому администратору:

username@cqlsh> GRANT ALL PERMISSIONS ON ALL KEYSPACES TO '[username]';
username@cqlsh> exit

Important: храните пароли и доступы в безопасном хранилище (vault/secret manager).

5.2 Настройка cqlsh (консоль)

Пример конфигурации можно взять из /etc/cassandra/conf/cqlshrc.sample. Скопируйте в домашнюю директорию и задайте права:

$ sudo cp /etc/cassandra/conf/cqlshrc.sample ~/.cassandra/cqlshrc
$ sudo chmod 600 ~/.cassandra/cqlshrc
$ sudo chown $USER:$USER ~/.cassandra/cqlshrc
$ nano ~/.cassandra/cqlshrc

Заполните раздел аутентификации:

[authentication]
;; If Cassandra has auth enabled, fill out these options
username = [superuser]
password = [password]

Теперь при запуске cqlsh вы сможете автоматически входить под указанным пользователем.

5.3 Переименование кластера

В cqlsh смените системное имя кластера:

$ cqlsh
username@cqlsh> UPDATE system.local SET cluster_name = '[new_name]' WHERE KEY = 'local';
username@cqlsh> exit

Также измените значение cluster_name в /etc/cassandra/conf/cassandra.yaml:

cluster_name: '[new_name]'

Очистите кэш и перезапустите службу:

$ nodetool flush system
$ sudo systemctl restart cassandra
$ cqlsh
Connected to [new_name] at 127.0.0.1:9042

Полезные команды и сниппеты

  • Запуск cqlsh: cqlsh [host] [port] -u username -p password
  • Проверка статуса узла: nodetool status
  • Очистка ключевого пространства: nodetool drain перед остановкой
  • Просмотр логов: sudo tail -f /var/log/cassandra/system.log

Сохраните часто используемые команды в скрипт‑шаблоне для автоматизации.

Рекомендации по JVM и производительности

  • Heap: для развитых кластеров обычно указывают Xms/Xmx в пределах 4–16 ГБ в зависимости от оперативной памяти. Не устанавливайте больше 50% RAM без тестов.
  • Garbage Collector: используйте настройки, рекомендованные для вашей версии Cassandra.
  • Разграничение дисков: отдельный диск/раздел для данных и для commitlog повышает надежность.

Короткий чек: мониторьте GC паузы, загрузку CPU, I/O latency и размеры SSTable.

Безопасность и хранение данных

  • Включите аутентификацию и авторизацию (PasswordAuthenticator, CassandraAuthorizer).
  • Настройте шифрование трафика между узлами (internode TLS) и для клиентов (native transport TLS) в cassandra.yaml.
  • Ограничьте доступ через брандмауэр: откройте только нужные порты (9042 для nativе protocol, 7000/7001 для internode, 7199 для JMX — по необходимости).
  • Регулярно делайте бэкапы (snapshot + offsite копии).

Примечание по GDPR/конфиденциальности: храните персональные данные с соблюдением требований вашей юрисдикции, используйте шифрование на дисках и контроль доступа.

Инструменты отладки и типичные проблемы

  • Сервис не стартует: проверьте логи /var/log/cassandra/system.log, права на директории, доступность Java.
  • Nodemanager/JMX недоступен: убедитесь, что порт 7199 не заблокирован и JMX настроен.
  • Высокое потребление памяти/OutOfMemoryError: уменьшите heap или проанализируйте запросы, проверьте compaction.
  • Проблемы репликации: проверьте network connectivity между узлами, конфигурацию snitch и replication_factor для keyspace.

Короткое правило диагностики: лог → nodetool → конфигурация → сеть → JVM.

Критерии приёмки

  • Cassandra установлена и сервис запущен без ошибок.
  • cqlsh подключается под созданным суперпользователем.
  • nodetool status показывает узел в состоянии Up Normal.
  • Простая таблица создаётся и читается с задержкой, отвечающей ожидаемым SLA для тестовой нагрузки.

Роль‑основанные чеклисты

Администратор (установка):

  • Установлена JDK 8
  • Добавлен репозиторий Cassandra
  • Установлен пакет cassandra
  • Создан systemd‑юнит и включён сервис
  • Настроен мониторинг и логирование

DevOps/Инфраструктура (продакшен):

  • Настроен отдельный диск для commitlog
  • Конфигурация JVM протестирована под нагрузкой
  • Настроен TLS и firewall
  • Развернуты резервные копии и тест восстановления

Разработчик (тестирование):

  • Проверено создание keyspace и таблиц
  • Выполнены тесты чтения/записи
  • Проверены consistency levels (QUORUM, LOCAL_QUORUM)

Мини‑методология развёртывания в продакшене

  1. Подготовьте шаблон образа ОС с установленной JDK и базовой конфигурацией.
  2. Автоматизируйте установку Cassandra через конфигурационный менеджер (Ansible/Puppet).
  3. Разверните три или более узла в первой зоне, настройте replication_factor ≥ 3 для высокой доступности.
  4. Проведите нагрузочное тестирование и настройку JVM.
  5. Включите мониторинг (metrics, alerting) и бэкапы.

Факты и быстрое справочное руководство

  • Основные порты: 7000 (internode), 7001 (internode TLS), 7199 (JMX), 9042 (native protocol).
  • Типичное значение replication_factor: 1–3 (для теста 1, для продакшена 3+).
  • Файлы конфигурации: /etc/cassandra/conf/cassandra.yaml, /etc/cassandra/conf/cassandra-env.sh.

Короткие рекомендации по миграции с других дистрибутивов

  • Проверьте пути конфигурации — в некоторых пакетах они могут отличаться (/etc/cassandra vs /etc/cassandra/conf).
  • Сравните версии Cassandra и cqlsh — несовместимость протоколов может требовать конкретных версий cqlsh.

Заключение

Вы установили Apache Cassandra на AlmaLinux / Rocky Linux 8, настроили cqlsh, создали systemd‑юнит, включили аутентификацию и переименовали кластер. Для продакшен‑развёртывания дополнительно настройте мониторинг, шифрование и политики бэкапов. Официальная документация Cassandra содержит детальные рекомендации по продакшн‑конфигурациям.

Summary:

  • Установка JDK и Cassandra
  • Настройка systemd и cqlsh
  • Включение аутентификации и создание суперпользователя
  • Рекомендации по JVM, безопасности и бэкапам

Notes: если возникнут вопросы — проверяйте логи и nodetool, а также официальную документацию Apache Cassandra.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро