Установка Apache Cassandra на Ubuntu 22.04: пошаговая однозвенная инструкция

О чём эта инструкция
Apache Cassandra — распределённая NoSQL СУБД с горизонтальным масштабированием. В этой инструкции вы установите Cassandra на один сервер Ubuntu 22.04, настроите Java, добавите официальный репозиторий, включите аутентификацию и создадите суперпользователя. Также вы получите рекомендации по безопасности, проверке работоспособности и переходу на многозвенную архитектуру.
Предпосылки
- Сервер с Ubuntu 22.04 и минимум 2 ГБ оперативной памяти.
- Пользователь с правами sudo.
- Система обновлена:
$ sudo apt update && sudo apt upgradeШаг 1 — установить Java
Apache Cassandra требует Java 8 или 11. В этой инструкции используется OpenJDK 11.
$ sudo apt install openjdk-11-jdkПроверьте установку:
$ java -version
openjdk 11.0.15 2022-04-19
OpenJDK Runtime Environment (build 11.0.15+10-Ubuntu-0ubuntu0.22.04.1)
OpenJDK 64-Bit Server VM (build 11.0.15+10-Ubuntu-0ubuntu0.22.04.1, mixed mode, sharing)Если версия Java отличается, убедитесь, что Java 11 присутствует в PATH и используется системой по умолчанию.
Шаг 2 — добавить репозиторий и установить Cassandra
Добавьте официальный репозиторий Cassandra в список источников:
$ echo "deb http://www.apache.org/dist/cassandra/debian 40x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.listДобавьте ключ репозитория:
$ wget -q -O - https://www.apache.org/dist/cassandra/KEYS | sudo tee /etc/apt/trusted.gpg.d/cassandra.ascОбновите списки пакетов и установите Cassandra:
$ sudo apt update
$ sudo apt install cassandraПримечание: в репозитории используется метка 40x, что соответствует ветке Cassandra 4.0.x.
Шаг 3 — проверить сервис Cassandra
Cassandra создаёт и запускает системный сервис автоматически. Проверьте статус:
$ sudo systemctl status cassandraВы также можете получить текущее состояние узла с помощью 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.08 KiB 16 100.0% 6690243a-950d-4d64-9463-aa722f8064d4 rack1Если сервис не запущен, просмотрите журналы:
$ sudo journalctl -u cassandra --since "1 hour ago"Шаг 4 — базовая конфигурация
Файлы конфигурации находятся в /etc/cassandra. Логи — в /var/log/cassandra, данные — в /var/lib/cassandra.
JVM-настройки находятся в /etc/cassandra/cassandra-env.sh. Для изменения кучи отредактируйте JVM_OPTS.
Включить аутентификацию
Сделайте резервную копию конфигурации:
$ sudo cp /etc/cassandra/cassandra.yaml /etc/cassandra/cassandra.yaml.backupОткройте файл:
$ sudo nano /etc/cassandra/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Создать администратора-суперпользователя
Подключитесь к cqlsh под дефолтным пользователем 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Настроить cqlsh
По умолчанию cqlshrc отсутствует. Создайте его в ~/.cassandra и сохраните учётные данные для автоматического входа (обратите внимание на примечание о депрекации):
$ mkdir -p ~/.cassandra
$ touch ~/.cassandra/cqlshrc
$ nano ~/.cassandra/cqlshrcПример секции аутентификации (замените [username] и [password]):
[authentication]
;; If Cassandra has auth enabled, fill out these options
username = [username]
password = [password]Ограничьте права на файл:
$ chmod 600 ~/.cassandra/cqlshrcПримечание: хранение пароля в cqlshrc планируют устаревшим в версии 4.1. Рассмотрите менеджеры секретов для продакшена.
Переименовать кластер
Войдите в cqlsh:
$ cqlshВыполните команду (замените [new_name]):
username@cqlsh> UPDATE system.local SET cluster_name = '[new_name]' WHERE KEY = 'local';
username@cqlsh> exitОтредактируйте /etc/cassandra/cassandra.yaml и укажите cluster_name:
$ sudo nano /etc/cassandra/cassandra.yamlcluster_name: '[new_name]'Сбросьте кеш системы и перезапустите:
$ nodetool flush system
$ sudo systemctl restart cassandraПроверьте имя при входе в cqlsh.
Шпаргалка команд
- Установка Java:
sudo apt install openjdk-11-jdk - Добавление репо Cassandra:
echo "deb ... 40x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list - Установка Cassandra:
sudo apt install cassandra - Статус сервиса:
sudo systemctl status cassandra - Проверка узла:
nodetool status - Перезапуск:
sudo systemctl restart cassandra - Сохранение данных:
nodetool flush - Подключение:
cqlsh -u username -p password
Блок фактов
- Минимальные требования: 2 ГБ оперативной памяти для тестирования; для продакшена рекомендуются 8 ГБ и выше.
- Версии Java: поддерживается OpenJDK 8 и 11. В этом руководстве использован Java 11.
- Серия Cassandra: инструкции ориентированы на 4.0.x.
Чек-листы по ролям
Администратор (DevOps):
- Обновить систему.
- Установить Java и Cassandra.
- Настроить резервные копии
cassandra.yaml. - Настроить мониторинг (nodetool, метрики).
Разработчик:
- Создать keyspace и таблицы для тестовых данных.
- Проверить соединение через cqlsh.
- Написать тестовые запросы и нагрузочные сценарии.
Безопасность и соответствие:
- Включить аутентификацию и авторизацию.
- Настроить брандмауэр, ограничив доступ по IP.
- Хранить пароли в менеджерах секретов.
Критерии приёмки
- Сервис cassandra активен и запущен:
systemctl status cassandraпоказывает active (running). nodetool statusпоказывает узел в состоянии UN с 100% владением токенов в однозвенной конфигурации.- Удалось войти в cqlsh под новым суперпользователем.
- Значение
cluster_nameсоответствует ожидаемому после перезапуска.
Отладка и распространённые проблемы
- Cassandra не запускается — проверьте логи:
sudo journalctl -u cassandraи/var/log/cassandra/system.log. - Проблемы с Java — убедитесь, что JAVA_HOME указывает на Java 11 и что
java -versionвозвращает корректную версию. - Долгий старт — на машинах с малой памятью Cassandra может долго стартовать; увеличьте heap в
cassandra-env.sh. - Ошибки аутентификации — проверьте, что
authenticatorиauthorizerправильно заданы и сервис перезапущен.
Безопасность и рекомендации для продакшена
- Не храните пароли в
~/.cassandra/cqlshrcв продакшене; используйте HashiCorp Vault или другой менеджер секретов. - Отключите аккаунт
cassandraи не используйте его в окружении с открытым доступом. - Ограничьте доступ через брандмауэр (только нужные IP и порты).
- Настройте TLS для клиентских соединений и межузлового трафика при масштабировании.
Альтернативы и когда Cassandra не подходит
- Если вам нужна транзакционная согласованность ACID на уровне реляционной БД, рассмотрите PostgreSQL.
- Для небольших проектов с простой схемой и низкой нагрузкой Cassandra будет избыточной.
- Если основной фокус на сложных JOIN и отношениях, реляционная СУБД подойдёт лучше.
Переход на многозвенную архитектуру и миграция
- Для масштабирования добавляйте узлы в кластер; Cassandra автоматически реплицирует данные.
- Планируйте репликацию и стратегию репликации (SimpleStrategy для теста, NetworkTopologyStrategy для продакшена).
- Перед добавлением узлов проверьте координатор и схему токенов.
Тестовые сценарии и приёмочные тесты
- Убедиться, что
nodetool statusпоказывает все узлы как Up. - Выполнить базовые CRUD-операции через cqlsh и проверить целостность данных.
- Протестировать восстановление после перезапуска и после удаления/добавления узла (в многозвеной среде).
Советы по мониторингу и SLI/SLO (качественные)
- Наблюдайте за задержкой записи и чтения; если задержки растут — масштабируйте.
- Отслеживайте использование памяти JVM и частоту GC.
- Используйте nodetool для регулярных проверок состояния, а также Prometheus/Grafana для метрик.
Короткое объявление для рассылки (100–200 слов)
Установлена и настроена Apache Cassandra 4.x на Ubuntu 22.04. В руководстве показаны шаги по установке Java 11, добавлению репозитория Apache, включению аутентификации и созданию суперпользователя. Описаны базовые команды проверки состояния, советы по безопасности, чек-листы для ролей и сценарии приёмочных тестов. Эта инструкция предназначена для быстрого развертывания однозвенной среды для разработки и тестирования и содержит рекомендации по переходу на многозвенную продакшен-среду.
Заключение
Вы успешно установили Cassandra на однозвенный узел Ubuntu 22.04, включили аутентификацию, создали администратора и настроили основные параметры. Для продакшена следуйте рекомендациям по безопасности, мониторингу и масштабированию. Официальная документация Cassandra содержит подробности по продвинутым настройкам и архитектуре.
Вопросы и уточнения оставляйте в комментариях или используйте официальную документацию Apache Cassandra для глубокого изучения.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента