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