Установка Apache Cassandra на CentOS 8

TL;DR
Коротко: пошаговое руководство по установке Apache Cassandra на CentOS 8 — обновите систему, установите OpenJDK 8 и Python2, добавьте репозиторий DataStax, установите пакет, создайте systemd‑unit, проверьте работу через nodetool и cqlsh, измените имя кластера и примените конфигурацию. В конце — чек-листы, советы по безопасности и распространённые ошибки.
Apache Cassandra — это отказоустойчивая высокопроизводительная NoSQL СУБД с распределённой архитектурой и репликацией данных. Она подходит для приложений, где недопустима потеря данных. В этом руководстве показано, как установить и настроить Cassandra на CentOS 8.
Важно: минимальные требования — сервер с минимум 2 ГБ оперативной памяти и доступ к root-пользователю.
План установки
- Обновить систему.
- Установить Java (OpenJDK 8) и Python2.
- Добавить репозиторий DataStax и установить Cassandra.
- Создать systemd‑unit для сервиса Cassandra.
- Запустить сервис и проверить статус (nodetool, cqlsh).
- Переименовать кластер и применить конфигурацию.
Требования
- Сервер с CentOS 8 и минимум 2 ГБ ОЗУ.
- Доступ root или sudo.
- Рабочий интернет для загрузки пакетов и репозитория.
Подготовка системы
Обновите систему до актуальных пакетов перед установкой:
dnf update
После обновления рекомендуется перезагрузить систему для применения обновлений.
Установка Java и Python2
Cassandra требует OpenJDK 8 и Python2. Установите их так:
dnf install java-1.8.0-openjdk-devel python2
Проверьте версию Java:
java -version
Ожидаемый пример вывода:
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
Добавление репозитория и установка Apache Cassandra
Cassandra не входит в стандартные репозитории CentOS 8. Создайте файл репозитория:
nano /etc/yum.repos.d/cassandra.repo
Вставьте внутри:
[cassandra]
name = DataStax Repo for Apache Cassandra
baseurl = http://rpm.datastax.com/community
enabled = 1
gpgcheck = 0
Сохраните файл и установите пакет:
dnf install dsc20
Примечание: пакет dsc20 поставляет сборки DataStax для Apache Cassandra. Если доступен официальный RPM от Apache для вашей версии, можно использовать его.
Создание systemd‑unit для Cassandra
Пакет не всегда создаёт корректный сервис-файл, поэтому создадим его вручную:
nano /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:
systemctl daemon-reload
Запустите и включите сервис при загрузке:
systemctl start cassandra
systemctl enable cassandra
Проверьте статус службы:
systemctl status cassandra
Пример ожидаемого фрагмента вывода (информационный):
? cassandra.service - Apache Cassandra
Loaded: loaded (/etc/systemd/system/cassandra.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2019-12-07 01:25:26 EST; 1min 51s ago
Main PID: 1888 (java)
Tasks: 53 (limit: 25044)
Memory: 272.7M
CGroup: /system.slice/cassandra.service
??1888 java -ea -javaagent:/usr/share/cassandra/lib/jamm-0.2.5.jar -XX:+CMSClassUnloadingEnabled -XX:+UseThreadPriorities -XX:Threa>
Dec 07 01:25:29 centos8 cassandra[1888]: INFO 01:25:29,322 Starting listening for CQL clients on localhost/127.0.0.1:9042...
Проверка установки
Проверьте состояние узла через 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 46.11 KB 256 100.0% 2a680007-8c30-4bde-9a3f-9fa212b96d11 rack1
Подключение через CQL shell и изменение имени кластера
Запустите cqlsh:
cqlsh
Пример приветствия:
Connected to Test Cluster at localhost:9160.
[cqlsh 4.1.1 | Cassandra 2.0.17 | CQL spec 3.1.1 | Thrift protocol 19.39.0]
Use HELP for help.
cqlsh>
Чтобы изменить имя кластера из консоли CQL:
cqlsh> UPDATE system.local SET cluster_name = 'HowtoForge Cluster' WHERE KEY = 'local';
Выйдите из cqlsh:
cqlsh> exit;
Отредактируйте конфигурационный файл Cassandra и укажите новое имя кластера:
nano /etc/cassandra/default.conf/cassandra.yaml
Найдите и измените строку:
cluster_name: 'HowtoForge Cluster'
Сохраните файл. Очистите кэш system и перезапустите сервис:
nodetool flush system
systemctl restart cassandra
Повторно подключитесь в cqlsh и убедитесь, что имя кластера изменилось.
Критерии приёмки
- Сервис cassandra работает и находится в состоянии Active (running).
- nodetool status показывает узел в состоянии UN и 100% own для одиночного узла.
- cqlsh подключается и показывает новое имя кластера.
- Логи в /var/log/cassandra не содержат критичных ошибок за последние 5 минут.
Частые ошибки и способы их решения
- Java не та версии: убедитесь, что установлена OpenJDK 8. Cassandra старых сборок не совместима с Java 11.
- Порт 9042/9160 занят: проверьте netstat/ss и остановите процесс, мешающий привязке.
- Прав доступа к /var/lib/cassandra или /var/run/cassandra: убедитесь, что пользователь cassandra владеет этими каталогами.
- SELinux/Firewall блокируют порты: временно отключите или настройте правила firewall-cmd и SELinux.
Шпаргалка команд (быстрый доступ)
- Обновление системы: dnf update
- Установка Java/Python2: dnf install java-1.8.0-openjdk-devel python2
- Установка Cassandra: dnf install dsc20
- Управление сервисом: systemctl start|stop|restart|status cassandra
- Проверка узла: nodetool status
- CQL shell: cqlsh
- Сброс кэша system: nodetool flush system
Роли и чек-лист для вводного развёртывания
Администратор (в развертывании одного узла):
- Обновил систему и перезагрузил.
- Установил OpenJDK 8 и Python2.
- Добавил репозиторий и установил dsc20.
- Создал systemd‑unit и включил сервис.
- Проверил nodetool и cqlsh.
Разработчик/оператор (перед эксплуатацией):
- Изменил cluster_name и проверил применение.
- Настроил мониторинг и логирование.
- Настроил бэкап и стратегию репликации при масштабировании.
Рекомендации по безопасности и бэкапу
- Запускайте Cassandra под непользовательским аккаунтом cassandra (пакет обычно создаёт его автоматически).
- Настройте firewall-cmd: откройте только нужные порты (9042 для CQL, 7199 для JMX по необходимости, 7000/7001 для межузловых коммуникаций).
- Настройте резервное копирование снимками (snapshots) и регулярную архивацию данных.
- Ограничьте доступ к JMX и используйте TLS/SSL для межкластерных соединений при передаче данных через публичные сети.
Совместимость и миграция
- Проверьте совместимость версии Cassandra с вашей приложением и драйверами CQL.
- При миграции с более старых версий убедитесь, что формат SSTable поддерживается или подготовьте процесс конвертации.
- Cassandra 2.x/3.x и 4.x имеют различия в конфигурации и требованиях к Java; используйте OpenJDK 8 для старых стабильных веток.
Мини‑методология развертывания кластера (коротко)
- Разверните минимум 3 узла для продакшн-кластера (рекомендуется для отказоустойчивости).
- Настройте репликацию ключевого пространства (replication factor).
- Настройте seed-узлы в cassandra.yaml.
- Поочерёдно запускайте узлы и проверяйте состояние через nodetool.
- Настройте мониторинг (metrics) и бэкапы.
Глоссарий в одну строку
- CQL — Cassandra Query Language, SQL-подобный язык запросов для Cassandra.
- nodetool — утилита управления и диагностики узла Cassandra.
- SSTable — файл хранилища на диске в Cassandra.
- Seed — начальные адреса узлов, используемые для обнаружения кластера.
Заключение
Вы успешно установили и запустили Apache Cassandra на CentOS 8. Далее рекомендуем подготовить план масштабирования и резервного копирования перед переводом в продакшн. Если нужны подсказки по настройке репликации, seed-узлов или мониторингу — задайте вопрос.
Похожие материалы

Исправить ошибки Windows 10: 0x80070057 и 0xa0000400

Как удалить проблемные обновления Windows

Управление вкладками в Firefox и Chrome

Папка FOUND.000 в Windows 10 — что это и как удалить

Исправить: Windows 8.1 недоступен в регионе
