Установка Apache Cassandra на Ubuntu 22.04

Введение
Apache Cassandra — свободная NoSQL СУБД, спроектированная для работы с большими объёмами данных. Cassandra использует модель репликации в стиле Dynamo: данные хранятся в копиях на нескольких узлах, что обеспечивает высокую доступность и отсутствие единой точки отказа. Cassandra подходит для IoT, аналитики социальных сетей, систем обмена сообщениями и розничных приложений, где собираются большие объёмы данных.
Это руководство объясняет, как установить Apache Cassandra на сервер с Ubuntu 22.04 и выполнить базовую проверку работоспособности.
Требования
- Сервер под управлением Ubuntu 22.04.
- Доступ с правами root (или sudo).
- Подключение к интернету для загрузки пакетов.
Важно: Cassandra официально поддерживает Java 8 — установка других версий Java может привести к ошибкам.
Установка Java 8
Установите OpenJDK 8, так как Cassandra ожидает JVM этой версии:
apt-get install openjdk-8-jdk -yПроверьте установку:
java -versionОжидаемый пример вывода:
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-8u312-b07-0ubuntu1-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)После успешной установки Java можно переходить к добавлению репозитория Cassandra.
Добавление официального репозитория Apache Cassandra
Пакет Cassandra отсутствует в стандартных репозиториях Ubuntu 22.04, поэтому добавим официальный репозиторий Apache.
Установите зависимости:
apt-get install apt-transport-https gnupg2 -yИмпортируйте GPG-ключ проекта:
wget -q -O - https://www.apache.org/dist/cassandra/KEYS | apt-key add -Добавьте репозиторий:
sh -c 'echo "deb http://www.apache.org/dist/cassandra/debian 311x main" > /etc/apt/sources.list.d/cassandra.list'Обновите кэш APT:
apt-get update -yУстановка Apache Cassandra
Установите пакет Cassandra:
apt-get install cassandra -yПроверьте статус службы:
systemctl status cassandraПример ожидаемого вывода:
? cassandra.service - LSB: distributed storage system for structured data
Loaded: loaded (/etc/init.d/cassandra; generated)
Active: active (running) since Thu 2022-05-05 11:57:22 UTC; 40s ago
Docs: man:systemd-sysv-generator(8)
Process: 24707 ExecStart=/etc/init.d/cassandra start (code=exited, status=0/SUCCESS)
Tasks: 57 (limit: 4630)
Memory: 1.2G
CPU: 15.952s
CGroup: /system.slice/cassandra.service
??24800 /usr/bin/java -Xloggc:/var/log/cassandra/gc.log -ea -XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 -XX:+HeapDumpOn>
May 05 11:57:22 ubuntu2204 systemd[1]: Starting LSB: distributed storage system for structured data...
May 05 11:57:22 ubuntu2204 systemd[1]: Started LSB: distributed storage system for structured data.Проверка портов (Cassandra слушает стандартные порты CQL и внутренней связи):
ss -antpl | grep javaПример вывода:
LISTEN 0 500 127.0.0.1:7000 0.0.0.0:* users:(("java",pid=24800,fd=86))
LISTEN 0 50 127.0.0.1:45049 0.0.0.0:* users:(("java",pid=24800,fd=83))
LISTEN 0 50 127.0.0.1:7199 0.0.0.0:* users:(("java",pid=24800,fd=82))
LISTEN 0 4096 127.0.0.1:9042 0.0.0.0:* users:(("java",pid=24800,fd=100)) Как подключиться к Apache 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 70.93 KiB 256 100.0% eaa94d10-69c6-405d-b7bd-4b3dcbd380be rack1Подключитесь к интерактивной оболочке CQL:
cqlshОжидаемый приветственный текст:
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.12 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
cqlsh>Выход из cqlsh:
cqlsh> exitИзменение имени кластера
По умолчанию имя кластера — Test Cluster. Рекомендуется задать осмысленное имя.
Выполните в cqlsh:
cqlshИзмените имя кластера в системных метаданных:
cqlsh> UPDATE system.local SET cluster_name = 'Cassandra Cluster' WHERE KEY = 'local';Выйдите:
cqlsh> exitТакже измените параметр в конфигурационном файле:
nano /etc/cassandra/cassandra.yamlНайдите и измените строку:
cluster_name: 'Cassandra Cluster'Сохраните файл, сбросьте кэш и перезапустите службу:
nodetool flush system
systemctl restart cassandraПроверьте через cqlsh, что имя кластера изменилось:
cqlshОжидаемый вывод:
Connected to Cassandra Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.12 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
cqlsh>Отладка и типичные ошибки
- Служба не запускается: проверьте логи в /var/log/cassandra/*.log и системный журнал systemd.
- Ошибки JVM: убедитесь, что установлена именно Java 8 и что $JAVA_HOME корректно настроен.
- Порт 9042 недоступен: проверьте локальный Firewall (ufw/iptables) и настройки bind-address в cassandra.yaml.
- nodetool показывает DOWN: проверьте сетевую доступность и время (несинхронизированное системное время может мешать кластеру).
Важно: всегда проверяйте журналы Cassandra перед удалением данных или повторной установкой.
Безопасность и базовое hardening
- Измените учетные данные администратора и настройте авторизацию (по умолчанию авторизация может быть выключена).
- Ограничьте доступ к портам Cassandra (7000, 7199, 9042) через firewall — разрешайте доступ только из доверенных сетей.
- Включите TLS для внутренней связи узлов и клиентских соединений при работе в продуктивном окружении.
- Регулярно делайте бэкапы и тестируйте восстановление.
Альтернативные подходы к установке
- Установка из бинарного архива (tarball) с официального сайта Apache — даёт больше контроля над версиями и путями, полезно для продакшн-кластеров.
- Установка через контейнеры Docker — быстрее для тестирования и CI, но требует настройки персистентного хранилища.
- Менеджеры конфигураций (Ansible/Chef/Puppet) для автоматического развёртывания многозвенного кластера.
Когда не подходит: для простых ключ-значение задач с небольшими данными и требованием ACID лучше подойдут реляционные СУБД или другие хранилища.
Мини-методология развёртывания многозвенного кластера
- Планирование сети: выделите IP-диапазоны и настройки firewall.
- Синхронизация времени на всех узлах (NTP).
- Установка Java 8 и Cassandra на каждый узел по одинаковой версии.
- Настройка cassandra.yaml: cluster_name, seeds, listen_address, rpc_address, endpoint_snitch.
- Поэтапный запуск узлов: сначала seed-узлы, затем остальные.
- Мониторинг состояния (nodetool status), SLI/SLO и резервное копирование.
Рольные чек-листы
Администратор:
- Установить Java 8 и Cassandra.
- Настроить firewall и TLS.
- Настроить мониторинг и бэкапы.
Разработчик:
- Подключиться через cqlsh и проверить CQL-запросы.
- Проверить модели данных на соответствие распределённой архитектуре (моделировать под чтение).
Оператор DevOps:
- Автоматизировать развёртывание (Ansible/Helm).
- Настроить логирование и алерты.
Критерии приёмки
- Служба cassandra активна и работает (systemctl active).
- Узел в статусе UN в nodetool status.
- Порт 9042 слушается и на него можно подключиться через cqlsh.
- Изменённое имя кластера отражается в cqlsh.
1-строчный глоссарий
- CQL: Cassandra Query Language — язык запросов Cassandra.
- nodetool: утилита администрирования Cassandra.
- seed: начальные узлы, используемые при старте кластера для обнаружения других узлов.
Итог
Вы установили и проверили работу Apache Cassandra на Ubuntu 22.04, изменили имя кластера и получили базовый набор практик для безопасности и развёртывания. Для продакшн-развёртывания дополните конфигурацию TLS, мониторингом и автоматизацией.
Важно: при переходе к кластерной эксплуатации тестируйте резервное копирование и восстановление на тестовой среде.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента