Установка Apache Cassandra на Rocky Linux: полное руководство

Apache Cassandra — это распределённая NoSQL-база данных, предназначенная для высокой доступности и линейной масштабируемости. Она обрабатывает большие объёмы данных на обычных серверах без единой точки отказа, что делает её идеальной для приложений, требующих отказоустойчивости, низкой задержки записи и возможности горизонтального масштабирования. Типичные сценарии использования включают хранение временных рядов (time-series data), аналитику в реальном времени, платформы обмена сообщениями и любые приложения, где критичны время безотказной работы и производительность записи.

💡 Если ваше приложение работает с огромными объёмами данных, требует высокой доступности и горизонтального масштабирования — Cassandra предоставит распределённое хранилище с линейной масштабируемостью и отсутствием единой точки отказа.

В этом руководстве мы установим Apache Cassandra на Rocky Linux 8, 9 или 10, используя официальный RPM-репозиторий Apache. Вы узнаете:

  • Какую версию Cassandra выбрать (5.0, 4.1 или 4.0)
  • Как установить правильную версию Java для вашей Rocky Linux
  • Как добавить официальный репозиторий Apache Cassandra
  • Как создать systemd-сервис для управления Cassandra
  • Как установить и настроить клиент cqlsh
  • Как включить аутентификацию и создать суперпользователя

Для кого: администраторы баз данных (DBAs), разработчики высоконагруженных систем, сисадмины (для развёртывания распределённых хранилищ), DevOps-инженеры.


Оглавление

1. Выбор версии Cassandra

Apache Cassandra предлагает несколько веток с разными сроками поддержки. Таблица ниже поможет выбрать подходящую версию для вашего проекта.

ВерсияСтатусТребования к JavaДля кого
5.0Последняя стабильная (GA)Java 11 или 17Новые проекты, нужны последние функции
4.1Предыдущая стабильнаяJava 8, 11 или 17Продакшен-системы, нужна проверенная стабильность
4.0Старая стабильнаяJava 8, 11 или 17Совместимость с устаревшими системами или специфические требования к версии

💡 Вывод для новичка: Для большинства новых проектов рекомендуется Cassandra 5.0 — она включает улучшения производительности, новые функции и активно развивается. В этом руководстве по умолчанию используется Cassandra 5.0, но мы также покажем альтернативные конфигурации для версий 4.1 и 4.0.


2. Подготовка системы

2.1 Обновление системы

sudo dnf upgrade --refresh -y

Что делает:

  • sudo — права суперпользователя.
  • dnf upgrade — обновляет все пакеты до последних версий.
  • --refresh — принудительно перекачивает метаданные репозиториев (игнорирует кэш).
  • -y — автоматически отвечает «yes».

Зачем: Это стандартная практика безопасности перед установкой нового ПО. Снижает риск конфликтов зависимостей.

2.2 Установка dnf-plugins-core (если ещё не установлен)

sudo dnf install -y dnf-plugins-core

Что делает: Устанавливает набор плагинов для DNF, включая команду config-manager.

Зачем: Может понадобиться для управления репозиториями (хотя в этой инструкции мы создаём файлы .repo вручную через tee).


3. Установка Java (OpenJDK)

Apache Cassandra — это Java-приложение, поэтому для его работы требуется совместимая Java Development Kit (JDK). Cassandra 5.0 поддерживает Java 11 или Java 17 (более старые версии также поддерживают Java 8).

Важно: Версия Java зависит от вашей Rocky Linux и выбранной версии Cassandra.

3.1 Установка Java на Rocky Linux 9

На Rocky Linux 9 установите Java 17 (headless — без графического интерфейса, экономит место):

sudo dnf install -y java-17-openjdk-headless

3.2 Установка Java на Rocky Linux 8

На Rocky Linux 8 установите Java 11 (поддерживается Cassandra 5.0 и ниже):

sudo dnf install -y java-11-openjdk-headless

3.3 Установка Java на Rocky Linux 10

⚠️ Особенность Rocky Linux 10: В стандартных репозиториях доступна только Java 21, которая не поддерживается Cassandra 5.0. Поэтому нужно добавить репозиторий Eclipse Temurin от Adoptium и установить Java 17 оттуда.

Создание репозитория Adoptium:

sudo tee /etc/yum.repos.d/adoptium.repo <<EOF
[Adoptium]
name=Adoptium
baseurl=https://packages.adoptium.net/artifactory/rpm/centos/10/x86_64
enabled=1
gpgcheck=1
gpgkey=https://packages.adoptium.net/artifactory/api/gpg/key/public
EOF

💡 Примечание: Rocky Linux 10 бинарно-совместим с RHEL 10 и CentOS 10. Репозиторий Adoptium использует путь CentOS 10, потому что Rocky 10 ещё не указан напрямую, но пакеты работают идентично.

Установка Eclipse Temurin 17:

sudo dnf install -y temurin-17-jdk

3.4 Проверка установки Java

java -version

Ожидаемый вывод для Rocky 8/9 (пример):

openjdk version "11.0.x" 2025-xx-xx LTS
OpenJDK Runtime Environment (Red_Hat-...) (build 11.0.x+xx)
OpenJDK 64-Bit Server VM (Red_Hat-...) (build 11.0.x+xx, mixed mode, sharing)

Ожидаемый вывод для Rocky 10:

openjdk version "17.0.x" 2025-xx-xx
OpenJDK Runtime Environment Temurin-17.0.x+xx (build 17.0.x+xx)
OpenJDK 64-Bit Server VM Temurin-17.0.x+xx (build 17.0.x+xx, mixed mode, sharing)

Зачем: Убедиться, что Java установлена и имеет правильную версию.


4. Добавление официального репозитория Apache Cassandra

Apache предоставляет официальные RPM-пакеты через свой репозиторий. Выберите версию, соответствующую вашим требованиям.

4.1 Репозиторий Cassandra 5.0 (рекомендуемый)

sudo tee /etc/yum.repos.d/cassandra.repo <<'EOF'
[cassandra]
name=Apache Cassandra
baseurl=https://redhat.cassandra.apache.org/50x/
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://downloads.apache.org/cassandra/KEYS
EOF

Что делает: Создаёт файл репозитория для Cassandra 5.0.

Почему repo_gpgcheck=0: Отключает проверку подписи метаданных репозитория. Файл KEYS Apache содержит несколько ключей разработчиков, что может вызывать ошибки парсинга у DNF. Подписи пакетов по-прежнему проверяются через gpgcheck=1, что обеспечивает безопасность самих RPM-файлов.

4.2 Репозиторий Cassandra 4.1 (альтернатива)

Если вам нужна предыдущая стабильная версия для совместимости:

sudo tee /etc/yum.repos.d/cassandra.repo > /dev/null <<'EOF'
[cassandra]
name=Apache Cassandra
baseurl=https://redhat.cassandra.apache.org/41x/
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://downloads.apache.org/cassandra/KEYS
EOF

4.3 Репозиторий Cassandra 4.0 (альтернатива)

Для ещё более старой стабильной версии:

sudo tee /etc/yum.repos.d/cassandra.repo <<'EOF'
[cassandra]
name=Apache Cassandra
baseurl=https://redhat.cassandra.apache.org/40x/
gpgcheck=1
repo_gpgcheck=0
gpgkey=https://downloads.apache.org/cassandra/KEYS
EOF


5. Установка Apache Cassandra

5.1 Установка пакета

sudo dnf install -y cassandra

Что делает: Устанавливает пакет Cassandra из добавленного репозитория. DNF автоматически импортирует GPG-ключи Apache (подтвердите импорт, если будет запрос).

5.2 Проверка версии

cassandra -v

Ожидаемый вывод:

5.0.6

5.3 (Только для Rocky Linux 8) Устранение проблем с GPG-ключами

На Rocky Linux 8 из-за более строгих криптополитик может возникнуть ошибка импорта GPG-ключа: Key import failed (code 2) или GPG check FAILED.

Решение (временно отключить проверку GPG для установки):

sudo dnf install cassandra -y --nogpgcheck

⚠️ Важно: Используйте --nogpgcheck только если стандартная установка падает с ошибкой GPG. Не используйте update-crypto-policies --set LEGACY — это ослабляет системную криптографическую безопасность и требует перезагрузки.


6. Создание systemd-сервиса для Cassandra

RPM-пакет Apache Cassandra не включает systemd-сервис по умолчанию. Поэтому нужно создать его вручную.

6.1 Создание файла сервиса

sudo tee /etc/systemd/system/cassandra.service <<EOF
[Unit]
Description=Apache Cassandra
After=network.target

[Service]
Type=simple
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
EOF

Что делает:

  • User и Group — Cassandra будет работать от пользователя cassandra (создаётся при установке пакета).
  • ExecStart=/usr/sbin/cassandra -f — запускает Cassandra в foreground (флаг -f).
  • Restart=always — автоматически перезапускает сервис при падении.

6.2 Перезагрузка systemd и запуск сервиса

sudo systemctl daemon-reload
sudo systemctl start cassandra

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

sudo systemctl status cassandra

Признаки успеха:

  • Active: active (running)
  • Нет красных строк ERROR или FAIL

⚠️ Важно: Cassandra требует 30–60 секунд для полной инициализации. Статус active (running) может появиться не сразу.

6.3 Включение автозагрузки

sudo systemctl enable cassandra

Что делает: Cassandra будет автоматически запускаться при загрузке системы.


7. Установка Cassandra Query Language Shell (cqlsh)

Пакет Cassandra включает встроенный клиент cqlsh, но он может не работать из-за проблем с путями Python на Rocky Linux. Самый надёжный способ — установить cqlsh отдельно через pip.

7.1 Установка Python и pip

sudo dnf install -y python3 python3-pip

7.2 Установка cqlsh через pip

pip3 install --user cqlsh

Что делает: Устанавливает standalone-версию cqlsh, включая драйвер Cassandra Python.

Почему --user: Устанавливает пакет в домашнюю директорию, избегая проблем с правами и конфликтов с системными пакетами.

7.3 Добавление локальной директории в PATH (если ещё не добавлена)

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

7.4 Проверка установки cqlsh

cqlsh --version

Ожидаемый вывод:

cqlsh 6.2.1

7.5 Подключение к Cassandra

cqlsh

Ожидаемый вывод:

Connected to Test Cluster at 127.0.0.1:9042

[cqlsh 6.2.1 | Cassandra 5.0.6 | CQL spec 3.4.7 | Native protocol v5]

Use HELP for help. cqlsh>

Зачем: Проверить, что база данных работает и клиент подключается.

Выход из cqlsh: exit или Ctrl+D.


8. Настройка Apache Cassandra

Файлы конфигурации Cassandra хранятся в /etc/cassandra/conf/. Основной файл — cassandra.yaml, управляющий настройками кластера, сетью, путями хранения и параметрами производительности. Данные хранятся в /var/lib/cassandra/, логи — в /var/log/cassandra/.

8.1 Включение аутентификации (для продакшена)

По умолчанию Cassandra разрешает доступ без аутентификации. Для продакшен-сред это нужно изменить.

Создание резервной копии конфигурации:

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

Редактирование конфигурации:

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

Найдите и измените следующие параметры:

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

Что делают эти параметры:

  • authenticator — включает аутентификацию по паролю.
  • authorizer — включает авторизацию (контроль доступа).
  • *_validity_in_ms: 0 — отключает кэширование ролей и разрешений (удобно при начальной настройке; в продакшене значения можно увеличить).

Перезапуск Cassandra:

sudo systemctl restart cassandra

8.2 Создание административного суперпользователя

После включения аутентификации учётные данные по умолчанию: cassandra / cassandra.

Подключение с учётными данными по умолчанию:

cqlsh -u cassandra -p cassandra

Создание нового суперпользователя (замените admin и your_secure_password):

CREATE ROLE admin WITH PASSWORD = 'your_secure_password' AND SUPERUSER = true AND LOGIN = true;

Выход из cqlsh:

exit

Подключение с новым пользователем:

cqlsh -u admin -p your_secure_password

Отключение учётной записи cassandra по умолчанию:

ALTER ROLE cassandra WITH PASSWORD = 'disabled_account' AND SUPERUSER = false AND LOGIN = false;
REVOKE ALL PERMISSIONS ON ALL KEYSPACES FROM cassandra;

Выдача всех разрешений новому администратору:

GRANT ALL PERMISSIONS ON ALL KEYSPACES TO admin;

8.3 Настройка автоматического входа в cqlsh (cqlshrc)

Чтобы не вводить пароль при каждом подключении, можно настроить файл cqlshrc.

Создание директории и копирование образца:

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

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

nano ~/.cassandra/cqlshrc

Найдите секцию [authentication] и добавьте учётные данные:

[authentication]
username = admin
password = your_secure_password

⚠️ Важно: Хранение паролей в открытом виде в текстовом файле несёт риски. Убедитесь, что файл имеет права chmod 600 (только для владельца). Для продакшена рассмотрите использование переменных окружения или менеджера секретов.

8.4 Переименование кластера (опционально)

Имя кластера по умолчанию — «Test Cluster». Для продакшена его нужно изменить.

Обновление системной таблицы:

cqlsh
UPDATE system.local SET cluster_name = 'Production Cluster' WHERE KEY = 'local';
exit

Обновление cassandra.yaml:

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

Измените параметр cluster_name:

cluster_name: 'Production Cluster'

Сброс системного keyspace и перезапуск:

nodetool flush system
sudo systemctl restart cassandra

9. Обновление Cassandra

9.1 Обновление в рамках одной минорной версии (например, 5.0.5 → 5.0.6)

sudo dnf upgrade cassandra -y
sudo systemctl restart cassandra
cassandra -v

9.2 Обновление мажорной версии (например, 4.1 → 5.0)

Для мажорных обновлений требуется миграция данных и изменения в конфигурации. Перед обновлением ознакомьтесь с официальной документацией Apache Cassandra.


10. Удаление Cassandra

10.1 Остановка и отключение сервиса

sudo systemctl stop cassandra
sudo systemctl disable cassandra

10.2 Удаление пакета

sudo dnf remove -y cassandra

10.3 Удаление репозитория и systemd-сервиса

sudo rm -f /etc/yum.repos.d/cassandra.repo
sudo rm -f /etc/systemd/system/cassandra.service
sudo systemctl daemon-reload

10.4 (Для Rocky Linux 10) Удаление Adoptium репозитория и Temurin

sudo dnf remove -y temurin-17-jdk
sudo rm -f /etc/yum.repos.d/adoptium.repo

10.5 Удаление каталогов данных (опционально)

⚠️ Внимание: Следующие команды безвозвратно удаляют все базы данных, логи и конфигурацию Cassandra. При необходимости сделайте резервную копию.

sudo rm -rf /var/lib/cassandra
sudo rm -rf /var/log/cassandra
sudo rm -rf /etc/cassandra

10.6 Удаление cqlsh и конфигурации

pip3 uninstall cqlsh cassandra-driver -y
rm -rf ~/.cassandra

10.7 Проверка удаления

cassandra -v

Ожидаемый вывод:

bash: cassandra: command not found

11. Диагностика проблем

11.1 Сервис Cassandra не запускается

Просмотр логов:

journalctl -xeu cassandra.service

Частые причины:

  • Недостаточно памяти (Cassandra требует минимум 2 ГБ RAM по умолчанию)
  • Неправильные права на каталоги данных
  • Несовместимая версия Java

11.2 Ошибка подключения cqlsh («Connection refused»)

Причина: Cassandra не успела полностью запуститься (требуется 30–60 секунд).

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

sudo systemctl status cassandra

Мониторинг лога в реальном времени:

tail -f /var/log/cassandra/system.log

Ищите сообщение «Startup complete» — оно означает, что сервер готов принимать подключения.

11.3 Ошибка импорта GPG-ключа при установке

Текст ошибки: Key import failed (code 2) или GPG check FAILED

Причина: Строгие криптополитики на Rocky Linux 8.

Решение: Установите с флагом --nogpgcheck (только если стандартная установка не работает):

sudo dnf install cassandra -y --nogpgcheck

Чек-лист: всё готово к работе

# 1. Проверка версии Java
java -version

# 2. Проверка версии Cassandra
cassandra -v

# 3. Проверка статуса сервиса
sudo systemctl status cassandra

# 4. Проверка подключения через cqlsh
cqlsh

# 5. Проверка, что сервис включен в автозагрузку
sudo systemctl is-enabled cassandra

Заключение

Вы установили Apache Cassandra на Rocky Linux с пользовательским systemd-сервисом, клиентом cqlsh и включённой аутентификацией.

Что теперь есть в системе:

  • ✅ Работающая база данных Cassandra
  • ✅ systemd-сервис с автозапуском и автоматическим восстановлением
  • ✅ Клиент cqlsh для взаимодействия с базой
  • ✅ Аутентификация и суперпользователь
  • ✅ Готовность к настройке кластера

Что дальше:

  • Создайте keyspace и таблицы для ваших данных
  • Добавьте узлы для формирования кластера
  • Настройте правила файрвола для портов 9042 (CQL) и 7000 (межузловое взаимодействие)
  • Настройте регулярное резервное копирование каталогов данных
  • Изучите настройки производительности в cassandra.yaml

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *