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

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

4 min read Databases Обновлено 21 Oct 2025
Установка Apache Cassandra на CentOS 7
Установка Apache Cassandra на CentOS 7

Кратко (TL;DR)

Apache Cassandra — распределённая NoSQL СУБД для хранений больших объёмов данных в отказоустойчивых кластерах. В этом руководстве показаны шаги по установке Java и Cassandra на CentOS 7, базовая настройка и проверки работоспособности. Включены чек‑листы, советы по отладке и краткая шпаргалка по командам.

Что это и зачем

  • Apache Cassandra — распределённая NoSQL база данных. Коротко: хранит данные не в таблицах RDBMS, а в колонко-ориентированных структурах для масштабирования и высокой доступности.
  • CQL (Cassandra Query Language) — язык запросов Cassandra, похожий на SQL, но с особенностями для распределённых хранилищ.

В этом пошаговом руководстве мы установим Cassandra на сервер с CentOS 7, настроим переменные окружения Java и проверим запуск кластера.

Шаг 1 — Установка Java

Важно: Cassandra требует установленной JRE/JDK 8 (в ряде сборок). Обновите пакеты и репозитории перед установкой:

yum -y update

Скачайте RPM пакет Oracle Java (пример команды ниже использует конкретную версию JDK 8u131). Если вы используете другой зеркальный репозиторий или OpenJDK, замените URL соответствующим образом.

wget --no-cookies --no-check-certificate --header "Cookie:oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm"

Если на системе нет wget, установите его:

yum -y install wget

Установите скачанный RPM:

yum -y localinstall jdk-8u131-linux-x64.rpm

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

java -version

Ожидаемый вывод (пример):

[root@liptan-pc ~]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

Проверьте переменную окружения JAVA_HOME:

echo $JAVA_HOME

Если переменная пуста, добавьте её в профиль пользователя. Откройте файл профиля (например, ~/.bash_profile) в редакторе:

nano ~/.bash_profile

Добавьте в конец файла (см. путь, соответствующий установленному JDK):

export JAVA_HOME=/usr/java/jdk1.8.0_131/
export JRE_HOME=/usr/java/jdk1.8.0_131/jre

Примените изменения:

source ~/.bash_profile

Снова проверьте:

[root@liptan-pc ~]# echo $JAVA_HOME 
/usr/java/jdk1.8.0_131/

Примечание: Если вы устанавливаете Cassandra для работы в продакшн‑кластере, убедитесь, что используемая версия Java совместима с выбранной сборкой Cassandra.

Шаг 2 — Установка Cassandra

Создайте репозиторий Apache Cassandra в списке yum репозиториев:

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

Добавьте в файл следующий блок (сохраняйте точные строки):

[cassandra]
name=Apache Cassandra
baseurl=https://www.apache.org/dist/cassandra/redhat/311x/
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://www.apache.org/dist/cassandra/KEYS

Установите Cassandra:

yum -y install cassandra

Перезагрузите демоны systemd:

systemctl daemon-reload

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

systemctl start cassandra
systemctl enable cassandra

Проверьте состояние узла командой nodetool:

nodetool status

Пример корректного вывода:

[root@ip-172-31-7-136 ~]# 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  136.29 KiB  256          100.0%            b3d26649-9e10-4bee-9b3c-8e81c4394b2e  rack1

Если nodetool выдаёт ошибку подключения, например:

nodetool: Failed to connect to '127.0.0.1:7199' - ConnectException: 'Connection refused (Connection refused)'.

то необходимо отредактировать файл конфигурации окружения Cassandra и указать правильный адрес хоста для RMI.

Откройте файл:

nano /etc/cassandra/default.conf/cassandra-env.sh

Найдите строку и замените шаблон на локальный IP или нужное имя хоста:

# JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname="

Раскомментируйте и настройте так, чтобы строка выглядела, например, так:

JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=127.0.0.1"

Сохраните файл и перезапустите Cassandra:

systemctl restart cassandra

Повторно выполните nodetool status — теперь узел должен быть доступен.

Доступ к cqlsh и базовые команды

Cassandra включает интерактивную оболочку cqlsh для выполнения запросов CQL. Запуск:

cqlsh

Пример подключения:

[root@liptan-pc ~]# cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.0 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.

Небольшая шпаргалка по основным CQL‑командам:

CREATE KEYSPACE myks WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
CREATE TABLE myks.users (id uuid PRIMARY KEY, name text, email text);
INSERT INTO myks.users (id, name, email) VALUES (uuid(), 'Alice', 'alice@example.com');
SELECT * FROM myks.users;

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

  • Узел Cassandra запускается без ошибок: systemctl status cassandra показывает Active: active (running).
  • nodetool status возвращает статус UN для локального узла.
  • cqlsh подключается и выполняет простые запросы SELECT/INSERT.

Чек‑лист для оператора (role: DevOps)

  • Проверить версию Java и JAVA_HOME.
  • Добавить репозиторий Cassandra и установить пакет.
  • Настроить systemd, запустить и включить службу.
  • Проверить nodetool status и логи /var/log/cassandra/system.log.
  • Если кластер не локальный — убедиться в корректных параметрах seed‑узлов и rpc/seed адресов.

Быстрый план тестирования (acceptance)

  1. Выполнить INSERT, проверить SELECT с cqlsh.
  2. Перезапустить службу и проверить, что данные сохраняются.
  3. Моделировать сетевое отключение узла и проверить, что остальные узлы продолжают отвечать (если есть кластер).

Отладка и типичные проблемы

  • nodetool: Connection refused
    • Причина: Cassandra не слушает порт JMX (обычно 7199), или JVM_OPTS не настроен.
    • Действие: проверить cassandra-env.sh, указать -Djava.rmi.server.hostname.
  • Высокая загрузка CPU/памяти
    • Причина: некорректные JVM‑параметры или большой поток записи.
    • Действие: пересмотреть heap и GC‑параметры, следовать официальным рекомендациям по настройке JVM.
  • Ошибки репликации в кластере
    • Действие: проверить конфигурацию replication_factor и список seed‑узлов.

Важно: логи Cassandra находятся в /var/log/cassandra/ — проверяйте system.log для подробностей.

Безопасность и эксплуатация

  • Ограничьте доступ к JMX (порт 7199) с помощью брандмауэра или VPN. По умолчанию JMX не шифрует трафик.
  • Для продакшна настройте аутентификацию и авторизацию (включите ролевую модель в cassandra.yaml).
  • Регулярно делайте бэкапы (snapshot) и тестируйте восстановление данных.

Мини‑методология развёртывания (коротко)

  1. Подготовьте ОС и сеть (firewall, VPN, DNS).
  2. Установите и проверьте Java.
  3. Установите Cassandra на тестовый узел.
  4. Настройте cassandra.yaml (cluster_name, seeds, listen_address, rpc_address).
  5. Протестируйте локально cqlsh и nodetool.
  6. Добавляйте узлы постепенно, контролируя репликацию и нагрузку.

Шпаргалка команд (cheat sheet)

systemctl start cassandra
systemctl stop cassandra
systemctl restart cassandra
systemctl enable cassandra
nodetool status
nodetool info
cqlsh

Короткий глоссарий

  • Узел — отдельный сервер Cassandra.
  • Seed‑узел — начальный узел для обнаружения кластера при старте.
  • Keyspace — эквивалент базы данных в Cassandra.
  • Replication factor — число копий данных в кластере.

Заключение

Apache Cassandra установлена на вашем сервере CentOS 7. Вы настроили Java, добавили репозиторий, установили Cassandra и проверили базовую работоспособность cqlsh и nodetool. Для дальнейших шагов рекомендую изучить настройки cassandra.yaml, стратегию репликации и мониторинг кластера.

Важно: прежде чем вводить систему в продакшн, выполните нагрузочное тестирование и согласуйте параметры JVM и конфигурации дисковой подсистемы.

Дополнительные ресурсы: официальная документация Apache Cassandra для вашей версии (https://cassandra.apache.org).

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

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

Как удалить файлы cookie на Android
Android.

Как удалить файлы cookie на Android

Создать переносное приложение на USB
Утилиты

Создать переносное приложение на USB

Chrome/Edge скрывают панель задач при максимизации — что делать
Windows

Chrome/Edge скрывают панель задач при максимизации — что делать

Скачать фото из Instagram — полное руководство
Социальные сети

Скачать фото из Instagram — полное руководство

Skype как камера наблюдения — простой способ
Безопасность

Skype как камера наблюдения — простой способ

Skype + вебкамера как недорогая охрана
Безопасность дома

Skype + вебкамера как недорогая охрана