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

Установка 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', '[email protected]');
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
Автор
Редакция

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

Создать загрузочную USB для Snow Leopard
macOS

Создать загрузочную USB для Snow Leopard

Создать видеоканал из 30 сайтов с Yubby
Видео

Создать видеоканал из 30 сайтов с Yubby

Показать полосу свободного места в Windows 10
Windows

Показать полосу свободного места в Windows 10

Цветные папки в Windows — инструкция
Windows

Цветные папки в Windows — инструкция

Настройка экрана iPhone: виджеты и иконки
iPhone

Настройка экрана iPhone: виджеты и иконки

mod_deflate на Lighttpd 1.4 (Debian Etch) — экономия трафика
Веб-сервер

mod_deflate на Lighttpd 1.4 (Debian Etch) — экономия трафика