Установка и настройка 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 под нагрузку.
Подключение дополнительных узлов — мини-методология
- Подготовьте новый сервер с CentOS 7 и установите Java.
- Установите тот же пакет Cassandra (совместимую версию).
- Отредактируйте cassandra.yaml: укажите одинаковый cluster_name, listen_address = IP нового узла, seed_provider -> seeds = список seed-узлов (IP стабильных seed’ов).
- Убедитесь в сетевой доступности портов между узлами (см. Fact box — порты).
- Запустите Cassandra и проверьте nodetool status на seed-узлах.
- Дождитесь состояния 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, мониторинга, бэкапов и безопасности.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента