Установка 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
Найдите строку и замените шаблон
# 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)
- Выполнить INSERT, проверить SELECT с cqlsh.
- Перезапустить службу и проверить, что данные сохраняются.
- Моделировать сетевое отключение узла и проверить, что остальные узлы продолжают отвечать (если есть кластер).
Отладка и типичные проблемы
- 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) и тестируйте восстановление данных.
Мини‑методология развёртывания (коротко)
- Подготовьте ОС и сеть (firewall, VPN, DNS).
- Установите и проверьте Java.
- Установите Cassandra на тестовый узел.
- Настройте cassandra.yaml (cluster_name, seeds, listen_address, rpc_address).
- Протестируйте локально cqlsh и nodetool.
- Добавляйте узлы постепенно, контролируя репликацию и нагрузку.
Шпаргалка команд (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).
Похожие материалы

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

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

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

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