Гид по технологиям

Установка и настройка Apache Cassandra на CentOS 7

• 5 min read • Базы данных • Обновлено 18 Nov 2025
Установка Apache Cassandra на CentOS 7
Установка Apache Cassandra на CentOS 7

Кратко: эта инструкция показывает, как установить Apache Cassandra на CentOS 7, проверить кластер и выполнить базовые настройки безопасности и производительности. Подойдёт для одиночного узла и базовой подготовки к кластеру.

Оглавление

  • Предварительные требования
  • Установка Java
  • Добавление репозитория и установка Cassandra
  • Запуск и проверка сервиса
  • Подключение через cqlsh
  • Основные настройки cassandra.yaml
  • Подключение дополнительных узлов (минимальная методология)
  • Проверка и отладка (частые проблемы)
  • Рекомендации по безопасности и производительности
  • Контрольный список перед вводом в эксплуатацию
  • Критерии приёмки
  • Краткое резюме

Предварительные требования

  • Сервер с CentOS 7.
  • Непривилегированный пользователь с sudo.
  • Достаточно RAM и дискового пространства. Для теста хватит 2–4 ГБ RAM, в продакшене — больше.

Важно: Cassandra требует Java. Рекомендуется использовать совместимую версию OpenJDK (обычно 8 или 11 для старых релизов Cassandra). Выберите версию, совместимую с версией Cassandra, которую хотите ставить.

Установка Java

Обновите систему перед установкой:

sudo yum update -y

Установите Java (OpenJDK):

sudo yum install java -y

Проверьте версию Java:

sudo java -version

Ожидаемый пример вывода (пример из исходной инструкции):

openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

Если версия не соответствует требованиям вашей версии Cassandra, установите подходящую версию OpenJDK или Oracle JRE.

Добавление репозитория и установка Cassandra

По умолчанию Cassandra отсутствует в стандартных репозиториях CentOS 7. Добавим репозиторий DataStax (community):

Создайте файл репозитория:

sudo nano /etc/yum.repos.d/cassandra.repo

Добавьте в файл следующие строки:

[cassandra]
name = DataStax Repo for Apache Cassandra
baseurl = http://rpm.datastax.com/community
enabled = 1
gpgcheck = 0

Сохраните файл и обновите репозиторий:

sudo yum update -y

Установите пакет (в исходной инструкции — dsc20):

sudo yum install dsc20 -y

Примечание: пакет и имя репозитория зависят от выбранного дистрибутива Cassandra/DataStax и версии. Проверьте документацию выбранного релиза.

Запуск и включение сервиса

Запустите Cassandra и включите автозапуск:

sudo systemctl start cassandra
sudo systemctl enable cassandra

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

sudo systemctl status cassandra

Пример ожидаемого вывода:

? cassandra.service - SYSV: Starts and stops Cassandra
   Loaded: loaded (/etc/rc.d/init.d/cassandra; bad; vendor preset: disabled)
   Active: active (exited) since Sun 2017-12-17 17:53:58 IST; 12s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 15323 ExecStart=/etc/rc.d/init.d/cassandra start (code=exited, status=0/SUCCESS)

Dec 17 17:53:55 centOS-7 systemd[1]: Starting SYSV: Starts and stops Cassandra...
Dec 17 17:53:56 centOS-7 su[15332]: (to cassandra) root on none
Dec 17 17:53:58 centOS-7 cassandra[15323]: Starting Cassandra: OK
Dec 17 17:53:58 centOS-7 systemd[1]: Started SYSV: Starts and stops Cassandra.

Если сервис не запускается, смотрите раздел “Проверка и отладка”.

Проверка кластера и подключение

Проверить статус узлов можно с помощью nodetool:

sudo 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  65.15 KB   256     100.0%            516af85e-2e6a-454a-b27f-6eacafa6b978  rack1

Подключение к CQL-интерфейсу:

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>

Выйти из cqlsh:

cqlsh> exit

Основные настройки cassandra.yaml

Файл конфигурации находится в /etc/cassandra/conf/cassandra.yaml или /etc/cassandra/conf/ в зависимости от пакета. Важные параметры:

  • cluster_name: имя кластера. Установите читаемое имя.
  • listen_address: IP-адрес для межузловой связи (обычно внутренний IP сервера).
  • rpc_address: IP для CQL thrift/cqlsh (по умолчанию 0.0.0.0 или localhost; для удалённого доступа укажите конкретный адрес).
  • seed_provider -> seeds: список seed-узлов (через запятую). Seed-узлы важны при запуске кластера.
  • endpoint_snitch: стратегия распространения данных (SimpleSnitch, GossipingPropertyFileSnitch и т.д.). Выберите в зависимости от топологии.

Пример минимального изменения для одиночного узла:

cluster_name: 'Test Cluster'
listen_address: 127.0.0.1
rpc_address: 0.0.0.0
seed_provider:
    - class_name: org.apache.cassandra.locator.SimpleSeedProvider
      parameters:
          - seeds: "127.0.0.1"
endpoint_snitch: SimpleSnitch

Важно: при подготовке к многозвённому кластеру задайте listen_address и seeds в каждом узле аккуратно — seeds не должны включать все узлы, обычно 2–3 стабильных seed’а в кластере.

Изменять настройки JVM (heap) нужно в cassandra-env.sh (обычно /etc/cassandra/conf/cassandra-env.sh). Правило: не давать Cassandra более 50–75% общей памяти и отладьте GC под нагрузку.

Подключение дополнительных узлов — мини-методология

  1. Подготовьте новый сервер с CentOS 7 и установите Java.
  2. Установите тот же пакет Cassandra (совместимую версию).
  3. Отредактируйте cassandra.yaml: укажите одинаковый cluster_name, listen_address = IP нового узла, seed_provider -> seeds = список seed-узлов (IP стабильных seed’ов).
  4. Убедитесь в сетевой доступности портов между узлами (см. Fact box — порты).
  5. Запустите Cassandra и проверьте nodetool status на seed-узлах.
  6. Дождитесь состояния UN (Up/Normal) у нового узла.

Проверка и отладка — частые проблемы и решения

  • Сервис не стартует: проверьте логи /var/log/cassandra/system.log и journalctl -u cassandra.
  • Нода не присоединяется: проверьте сетевые правила, правильность seed-адресов и listen_address.
  • cqlsh не подключается удалённо: убедитесь, что rpc_address и rpc_port открыты, и firewall/SELinux пропускают трафик.
  • Недостаток памяти/OutOfMemory: уменьшите heap в cassandra-env.sh или увеличьте RAM.

Полезные команды для отладки:

sudo tail -n 200 /var/log/cassandra/system.log
sudo journalctl -u cassandra --no-pager
sudo netstat -tulpen | grep java
sudo iptables -L -n
sudo firewall-cmd --list-all

Рекомендации по безопасности и производительности

  • Отключите/настройте SELinux и firewall по политике безопасности, откройте только нужные порты.
  • Включите аутентификацию и авторизацию в Cassandra (internode_authenticator и authenticator/authorizer), если требуется защита данных.
  • Включите шифрование связи между узлами и для клиентов (TLS) для продакшена.
  • Регулярно создавайте снапшоты и тестируйте восстановление.
  • Настройте мониторинг (nodetool, JMX, внешние решения) и алерты на ключевые метрики (число потоков, GC, задержки записи).

Fact box — ключевые порты и файлы

  • Порты: 7000 TCP (intra-node), 7001 TCP (TLS intra-node), 7199 TCP (JMX, мониторинг), 9042 TCP (CQL native), 9160 TCP (Thrift, старые версии).
  • Важные файлы: /etc/cassandra/conf/cassandra.yaml, /etc/cassandra/conf/cassandra-env.sh, /var/log/cassandra/system.log

Контрольный список перед вводом в эксплуатацию

  • Проверен кластерный name и seed-узлы.
  • Настроен мониторинг и логирование.
  • Открыты и проверены сетевые порты между узлами.
  • Настроена политика бэкапов и проверено восстановление.
  • Настроена аутентификация/шифрование при необходимости.
  • JVM heap и GC настроены под целевую нагрузку.

Критерии приёмки

  • Все узлы в nodetool status отображаются как UN (Up/Normal).
  • cqlsh подключается и выполняет простые запросы (создание keyspace, вставка/чтение).
  • Мониторинг показывает устойчивое состояние без частых GC-паузы или OOM.

Частые альтернативы и почему их выбирать

  • ScyllaDB: совместимая альтернатива с акцентом на производительность (C++ реализация). Рассмотрите, если нужна высокая пропускная способность на тех же хардварных ресурсах.
  • Redis/Elasticsearch/Timescale: для специфичных задач (кэширование, поисковые запросы, временные ряды) — выбирайте по профилю нагрузки.

Безопасность и соответствие (заметки)

Если в кластере хранятся персональные данные под GDPR, настройте шифрование, аудит и контроль доступа. Архивирование и политики удаления данных должны соответствовать регламентам.

Краткое резюме

Эта инструкция покрывает установку Cassandra на CentOS 7, базовую проверку и рекомендации по настройке кластера. Для продакшена необходима дополнительная проработка JVM, мониторинга, бэкапов и безопасности.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро